A Genetic Algorithm library designed for typescript
Live example and informations about genetically can be founds in the demonstration
Using npm :
$ npm install -S genetically
Take a look at the examples on simple functions made for optimization problems:
f(x) = -x²
f(x) = x³
f(x, y) = (x + 2y - 7) ** 2 + (2x + y - 5) ** 2
f(x, y) = (1.5 - x - x*y) ** 2 + (2.25 - x + (x*y) ** 2) ** 2 + (2.625 - x + (x*y) ** 3) ** 2
Simple use case
import {GeneticAlgorithm} from 'genetically';
const genetic = new GeneticAlgorithm<number, string>(
encodeFunction,
decodeFunction,
randomValueFunction,
fitnessFunction,
configurationObject
);
genetic.run();
More complex usage with the LinearGeneticAlgorithm example.
import {
createEncodeFunctionOfBase,
FitnessFunctionObjective,
GeneticAlgorithm,
LinearGeneticAlgorithm,
} from './genetically';
// Create a GeneticAlgorithm Object from a test function
const gaLinear = LinearGeneticAlgorithm();
gaLinear.run();
gaLinear.display();
// Or create you own genetic algorithm
/**
* Random starting value
*/
const randomValue = () => Math.floor(Math.random() * 64) - 32;
/**
* Transform x
* start is [-32, 32]
* end is [000000, 111111]
*/
const encoder6 = createEncodeFunctionOfBase(2, 6);
const encode = (x: number) => encoder6(x + 32);
/**
* Transform x
* start is [000000, 111111]
* end is [-32, 32]
*/
const decode = (x: string) => parseInt(x, 2) - 32;
/**
* Function to optimize
* f(x) = x²
*/
const fitness = (i: number) => -1 * i ** 2;
// Make the genetic algorithm object
const ga = new GeneticAlgorithm<number, string>(
encode,
decode,
randomValue,
fitness,
{
objective: FitnessFunctionObjective.MINIMIZE,
}
);
// Compute the fitness of the population and display it
ga.runPopulation();
ga.display();
// Evolve the population
ga.run();
// After the evolution is complete, display it
console.log('End evolution');
ga.display();
Please take a look at the documentation for references on how to use the library.
Generated using TypeDoc