This package has been deprecated

Author message:

Renamed. Use npm install neataptic instead!

gynaptic

1.0.6 • Public • Published

Gynaptic Build Status

Gynaptic is an architecture-free neural network library with implementations to create genetic neural networks. It gives the user the ability to create train neurol networks with evolutionary algorithms with just a few lines of code. The library is constantly updated with new mutation, crossover and selection methods. Gynaptics' main neural network code comes from the library Synaptic by Juan Cazala. Gynaptic will stay up to date with Synaptic's improvements as much as possible.

What Gynaptic adds to Synaptic:

  • an easy-to-use genetic algorithm function
  • 7 mutation methods
  • 4 crossover methods
  • 1 selection method
  • 2 generation methods
  • 3 squashing functions
  • brain, which can contain networks, layers & neurons

Improvements:

  • to/fromJSON() for layers & neurons
  • merge() networks
  • disconnect() networks, layers & neurons
  • project neurons to networks, layers & vice versa
  • overall bugfixes & time improvement

Examples

Usage

Head over to the wiki for documentation.

For the browser, embedding this code makes life easier:

Neuron = gynaptic.Neuron;
Evolution = gynaptic.Evolution;
Trainer = gynaptic.Trainer;
Methods = gynaptic.Methods;
Layer = gynaptic.Layer;
Network = gynaptic.Network;
Brain = gynaptic.Brain;
Architect = gynaptic.Architect;

Example

This is an example of the creation and loop of a genetic neural network. The goal of this genetic algorithm is too create a population that will output a value that is as high as possible (=1) when inputted 0. Please note that this is just an example, and this problem is much easier to 'solve' by backpropagating.

// Create the evolutionary algorithm
var GNN = new Evolution({
  size: 50,
  elitism: 5,
  mutationRate: 0.05,
  networkSize = [1,4,1],
  mutationMethod: [Methods.Mutation.MODIFY_RANDOM_BIAS, Methods.Mutation.MODIFY_RANDOM_WEIGHT],
  crossOverMethod: [Methods.Crossover.UNIFORM, Crossover.AVERAGE],
  selectionMethod: [Methods.Selection.FITNESS_PROPORTIONATE],
  fitnessFunction: function(network){
     return Math.round(network.activate([0]) * 200);
  }
});

// Loop the evolution process until a certain average score is reached
var notFinished = true;;
while(notFinished){
  GNN.evaluate();
  if(GNN.getAverage() > 190){
    notFinished = false;
  }

  GNN.select();
  GNN.crossOver();
  GNN.mutate();
  GNN.replace();
};

If you want to know how to set up one of these algorithms yourself, feel free to take a look at the wiki pages! If you want to implement a genetic neural network algorithm, but don't know how, feel free to contact me at wagenaartje@protonmail.com!

Installation

Gynaptic files are hosted by rawgit, just copy this link into the <head> tag:

<script src="https://cdn.rawgit.com/wagenaartje/gynaptic/fbb5eaf9/dist/gynaptic.js"></script>

Installing with node is also possible:

npm install gynaptic

Suggestions

If you have any suggestions, please post them at the 'Issues' button at the top of the page.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Published

Version History

  • Version
    Downloads (Last 7 Days)
    • Published

Package Sidebar

Install

npm i gynaptic

Weekly Downloads

7

Version

1.0.6

License

MIT

Last publish

Collaborators

  • wagenaartje