Skip to content
Using Neuroevolution with gradient descent to construct and train logic circuits
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Using Neuroevolution with gradient descent to construct and train logic circuits


This was an extension of a previous project I did where I used neuroevolution to build neural network (NN) agents to play OpenAI games. However, here, I made it so the weights aren't searched for randomly, they're trained via gradient descent, which speeds things up a ton.

In addition, I made it so a successful NN can be packaged into an "atom", to be inserted in other, higher level NNs. This part was less successful, but still has promise.

A long summary of the results can be found on my blog here.

Main run scripts

These are the main .py scripts that I use, in the main directory for simplicity. They are:

  • - For running scripts.


These are the classes that the run scripts use, which live in the classes directory. Here, they're listed in order from low to high level.


  • - Represents a single discrete entity, either a simple classic NN node, or a more complex, functional module atom.
  • - Assembles Atom objects, handles propagation through the NN, and other stuff.
  • - Handles the NN, and interfaces with whatever environment you want to use it with (OpenAI gym, or your own).
  • - For building a populatinon of EvoAgent objects. Also has multi_run_hist() for running the same evolution scenario multiple times, to generate statistics.

You can’t perform that action at this time.