1.1.0 • Published 4 years ago

genetic-algorithm-library v1.1.0

Weekly downloads
2
License
ISC
Repository
github
Last release
4 years ago

#Genetic Algorithm library

###Usage

Here is a simple example that compute the square root of 2 using a genetic algorithm

import {GeneticOptimizer, GeneticOptimizerOptions, EvaluatedSample, MINIMIZE} from "genetic-algorithm-library";
 
/**
 * A simple optimizer that will 'compute' sqrt of 2
 */
class Optimizer extends GeneticOptimizer<number> {
 
    constructor() {
        super();
    }
 
    // OVERRIDE
    protected crossover(parents: Array<number>): Array<number> {
        // each pair of parent produces 3 children
        return [
            parents[0] * 0.3 + parents[1] * 0.7,
            (parents[0] + parents[1]) * 0.5,
            parents[0] * 0.7 + parents[1] * 0.3
        ];
    }
 
    // OVERRIDE
    protected evaluateGenotype(genotype: number): number {
        return Math.abs(Math.sqrt(2) - genotype);
    }
 
    // OVERRIDE
    protected generateOneGenotype(): number {
        // wow look at this 10
        return Math.random() * 10;
    }
 
    // OVERRIDE
    protected getNumberOfCrossoverParent(): number {
        return 2;
    }
 
    // OVERRIDE
    protected mutate(genotype: number): number {
        // because why not
        return (genotype + Math.random() * 5) * 0.5;
    }
 
    getBestSample(): EvaluatedSample<number> {
        return this.samples[0];
    }
}
 
// initialize the model
const optimizer = new Optimizer();
 
// train the model
optimizer.evolve();
optimizer.evolve();
optimizer.evolve();
optimizer.evolve();
optimizer.evolve();
 
console.log(optimizer.getBestSample());
// &> { genotype: 1.4142135623730951, score: 0 }
1.1.0

4 years ago

1.0.1

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.5

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago

0.0.0

4 years ago