https://github.com/acupy/genetic-algorithm-es6
🔬 This package provides a framework for building applications where genetic algorithm (GA) is used for solving optimization problems based on a natural selection process that mimics biological evolution. The algorithm repeatedly modifies a population of individual solutions.
https://github.com/acupy/genetic-algorithm-es6
ai es6 framework genetic-algorithm population
Last synced: 2 months ago
JSON representation
🔬 This package provides a framework for building applications where genetic algorithm (GA) is used for solving optimization problems based on a natural selection process that mimics biological evolution. The algorithm repeatedly modifies a population of individual solutions.
- Host: GitHub
- URL: https://github.com/acupy/genetic-algorithm-es6
- Owner: acupy
- License: mit
- Created: 2016-11-09T23:34:37.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-08-17T18:15:35.000Z (over 7 years ago)
- Last Synced: 2025-08-09T06:54:16.930Z (8 months ago)
- Topics: ai, es6, framework, genetic-algorithm, population
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/genetic-algorithm-fw
- Size: 9.77 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Genetic algorithm framework built with JavaScript ES6
[](https://travis-ci.org/acupy/genetic-algorithm-es6)
[](https://npmjs.org/package/genetic-algorithm-fw)
This package provides a framework for building applications where genetic algorithms (GA) are used for solving optimization problems based on a natural selection process that mimics biological evolution.
The algorithm repeatedly modifies a population of individual solutions.
## Installation
```bash
npm install genetic-algorithm-fw
```
## Functions to define
#### mutation
```js
function mutation(oldPhenotype){
// return a new phenotype
}
```
#### crossover
```js
function crossover (phenoTypeA, phenoTypeB) {
// using phenoTypeA and phenotypeB create a new list of two phenoTypes
// return [phenotype1, phenotype2]
}
```
#### fitness
```js
function fitness(phenotype) {
// return the fitness number
// the higher the value the fitter it is
}
```
#### competition
```js
function competition(phenoTypeA, phenoTypeB) {
// return true when the fitness value is higher for phenoTypeA
// otherwise return false
}
```
## Initialize GA object with the previously defined functions
```js
var GeneticAlgorithm = require('genetic-algorithm-fw');
var geneticalgorithm = new GeneticAlgorithm(
mutation, // if not specified, no mutation happens
crossover, // if not specified, the initial phenoTypes are returned
fitness, // if not specified, 0 is returned
competition, // if not specified, no competition happens
[], // initial list of phenoTypes
populationSize, // by defualt it is 100
chanceOfMutation); // by defautlt it is 50
```
## Evolve our population
```js
// we can run as many iterations as we like
geneticalgorithm.evolve();
```
## Get the best result
```js
// we can check the best phenotype in our current population
var theBestPhenotype = geneticalgorithm.best();
```