JSPM

genetic-algorithm-fw

1.7.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q36334F
  • License MIT

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.

Package Exports

  • genetic-algorithm-fw

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (genetic-algorithm-fw) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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();