Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Java
tree: 9a429a5bea

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
nbproject
src
.gitignore
README
build.xml
manifest.mf
repast.ico

README

= Neural Net Heatbugs

This is an old project which some folks might find of interest, so I'm
putting it up on GitHub.  MIT licensed.  It's an old and heavily incremented
project which I never expected anyone to see.  I've added docs to the code, but
I'm not proud of the code quality.  

Brief description:

    * This is RePast's heatbugs agent simulation that's been sexed up with genetic algorithms, neural networks, etc.
    * Each bug has a "genotype" that's just a bitstring.
    * Neural networks are constructed from the genotype.
    * The genotype or bitstring is parsed in order to generate a list of rules.
    * The rules are repeatedly applied to a "predicate", or starting, neural network
      in order to build the neural network the bug uses.
    * The resulting neural network is used to process inputs to the bug and to produce
      outputs to move the bug.

== Heatbugs

Simple: each agent should move around to find the spot that gets them the perfect temperature.
    * There are a number of heatsources on the grid.
    * Each heatbug also gives off heat (configurabl).
    * After a period of time, the Reaper runs and removes bugs from the space.
      Bugs can get reaped for various reasons:
     * Not having a nice temperature after their "childhood".
     * Never having moved during "childhood".

== Build + Run

You probably don't *need* NetBeans to build it, but I've only ever used NetBeans, so:
    * Open the project in NetBeans and run it...

== You should try...

hmm...  I should add interesting parameters here...

== Architecture

Code:
    * src/uchicago/src/sim/nnheatBugs/HeatBugsModel.java - this is the simulation and is where everything is controlled.
    * src/uchicago/src/sim/nnheatBugs/HeatBug.java - this is a bug.
    * src/uchicago/src/sim/network/ActivationFunction.java - this is an activation function for a neuron.
    * src/uchicago/src/sim/network/NeuralNetworkNode.java - this is a neuron.
    * src/uchicago/src/sim/network/CHHNeuralNetworkNode.java - this is a particular type of neuron.
    * src/uchicago/src/sim/network/SigmoidNeuralNetworkNode.java - this is a particular type of neuron.
    * src/uchicago/src/sim/graphgrammar/* - a giant flail...  But the gist is that this
      is the code that converts genomes -> neural networks...  There are a number of ways
      it can do the conversion...

Terminology:
    * Heatbug/Agent - the thing that's moving around.
    * Genotype - a BitString representing the genes of a bug.
    * Rule - matches a spot on a Matrix and might expand or overlap a set of values on
      matrix.
    * Matrix - a (probably sparce) matrix of node-node connections.  All inputs are on one
      side and all outputs are on the other; a value V at (M,N) says that node M is
      connected to node N with value V.
    * Structure - this is just a string describing some basic characteristics of
      a neural net.  This was introduced in order to prevent a single neural net
      from dominating and is used to prevent inbreeding.

== Warnings
    * It had been long enough since I'd coded that I'd kinda forgotten about recursion,
      so the code to apply the grammar to the connection matrix is fabulously 
      complicated.
    * I recycle frequently used objects to prevent GCs, so you'll see Factory objects for Matrices, etc.
Something went wrong with that request. Please try again.