genetic-algorithm
Version:
Gentic Algorithm TypeScript implementation, customisable
123 lines (97 loc) • 2.94 kB
text/typescript
/// <reference path="typings/genetic-algorithm/interfaces.d.ts" />
class Settings implements ISettings {
public mutationOperator:IMutationOperator;
public crossoverOperator:ICrossoverOperator;
public creatureBuilder:ICreatureBuilder;
public fitnessFunction:IFitnessFunction;
public onIteration:(i?:number)=>void;
constructor(options?:ISettings) {
if (options) {
this.mutationOperator = options.mutationOperator;
this.crossoverOperator = options.crossoverOperator;
this.creatureBuilder = options.creatureBuilder;
this.fitnessFunction = options.fitnessFunction;
this.iterations = options.iterations;
this.mutationProbability = options.mutationProbability;
this.crossoverProbability = options.crossoverProbability;
this.populationSize = options.populationSize;
var noop:()=>void = () => {};
this.onIteration = options.onIteration || noop;
}
}
// -----------------------------------------------------
//
// Getters / Setters
//
// -----------------------------------------------------
// ---------------------------
// ntour
// ---------------------------
private _ntour:number;
public get ntour() : number {
return this._ntour;
}
public set ntour(val:number) {
if (val < 2) {
val = 2;
}
this._ntour = val;
}
// ---------------------------
// iterations
// ---------------------------
private _iterations:number;
public get iterations() : number {
return this._iterations;
}
public set iterations(iterations:number) {
if (iterations < 1) {
iterations = 1;
}
this._iterations = iterations;
}
// ---------------------------
// mutationProbability
// ---------------------------
private _mutationProbability:number;
public get mutationProbability() : number {
return this._mutationProbability;
}
public set mutationProbability(probability:number) {
if (probability > 1) {
probability = 1;
} else if (probability < 0) {
probability = 0;
}
this._mutationProbability = probability;
}
// ---------------------------
// corssoverProbability
// ---------------------------
private _crossoverProbability:number;
public get crossoverProbability() : number {
return this._crossoverProbability;
}
public set crossoverProbability(probability:number) {
if (probability > 1) {
probability = 1;
} else if (probability < 0) {
probability = 0;
}
this._crossoverProbability = probability;
}
// ---------------------------
// populationSize
// ---------------------------
private _populationSize:number;
public get populationSize() : number {
return this._populationSize;
}
public set populationSize(populationSize:number) {
if (populationSize < 1) {
populationSize = 1;
}
this._populationSize = populationSize;
}
}
export = Settings;