genetic-algorithm-fw

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.


Keywords
genetic, algorithm, genetic algorithm, geneticalgorithm, metaheuristic, evolutionary algorithm
License
MIT
Install
npm install genetic-algorithm-fw@1.7.0

Documentation

Genetic algorithm framework built with JavaScript ES6

Build Status

NPM

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.

Installation

npm install genetic-algorithm-fw

Functions to define

mutation

function mutation(oldPhenotype){
  // return a new phenotype
}

crossover

function crossover (phenoTypeA, phenoTypeB) {
    // using phenoTypeA and phenotypeB create a new list of two phenoTypes
    // return [phenotype1, phenotype2]
}

fitness

function fitness(phenotype) {
  // return the fitness number
  // the higher the value the fitter it is
}

competition

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

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

// we can run as many iterations as we like
geneticalgorithm.evolve();

Get the best result

// we can check the best phenotype in our current population
var theBestPhenotype = geneticalgorithm.best();