A Genetic Algorithm library designed for typescript
npm install genetically

!npm bundle size
!GitHub issues
!GitHub last commit
!GitHub package.json version
bash
$ npm install -S genetically
`
Examples
Take a look at the examples on simple functions made for optimization problems:
- Linear function f(x) = -x²
- Cube function f(x) = x³
- Booth function f(x, y) = (x + 2y - 7) 2 + (2x + y - 5) 2
- Baele function f(x, y) = (1.5 - x - xy) 2 + (2.25 - x + (xy) 2) 2 + (2.625 - x + (xy) 3) * 2
Usage
Simple use case
`ts
import {GeneticAlgorithm} from 'genetically';
const genetic = new GeneticAlgorithm(
encodeFunction,
decodeFunction,
randomValueFunction,
fitnessFunction,
configurationObject
);
genetic.run();
`
More complex usage with the LinearGeneticAlgorithm example.
`ts
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(
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();
``