tycho-solver
Version:
Evolutionary computation and optimization library
24 lines • 783 B
JavaScript
// Generic mutation operator for array-based individuals
export class MutationOperatorImpl {
geneMutator;
mutationRate;
rng;
constructor(geneMutator, mutationRate, rng) {
// default gene mutator: identity (no change)
this.geneMutator = geneMutator || ((g) => g);
this.mutationRate = mutationRate ?? 0.01;
this.rng = rng;
}
mutate(individual) {
const rate = this.mutationRate;
const mutated = individual.map((gene, idx) => {
const r = this.rng ? this.rng.random() : Math.random();
if (r < rate) {
return this.geneMutator(gene, idx, individual);
}
return gene;
});
return mutated;
}
}
//# sourceMappingURL=MutationOperator.js.map