Skip to content

Highly optimized neuroevolution simulation in C#

Notifications You must be signed in to change notification settings

evanhu1/NeuroGenesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 

Repository files navigation

NeuroGenesis

Guiding philosophy: Biologically faithful computational model of the brain that leverages digital paradigms (parallelism, floating point, etc.)

Neuron:

  • List of neurotransmitter types released
  • List of types of receptors at dendrites
  • List of synapses
  • Resting membrane potential
  • Action potential threshold
  • Membrane potential
  • ID

Receptor:

  • List of matching neurotransmitters
  • Behavior type (excitatory, inhibitory, modulatory)
  • State (On/Off, time remaining)

Sensory Receptor:

  • Behavior type
  • Value

Synapse:

  • Synaptic strength
    • Probability of release
    • Number of neurotransmitters released

Simulation Logic:

  • Tick based
  • Every tick (in order):
    • sensory receptors are reevaluated
    • all potential summations are recomputed
    • Action potentials are initiated
    • Axon neurotransmitters are released
    • Actions are taken if action neurons experience action potential
    • decay/propogation is incremented

Gene: - InterNeuron - Neurotransmitters - Receptors - MatchingNeurotransmitters - potentialPolarization - Type - actionPotentialThreshold - restingPotential - PotentialDecayRate - Synapses - fireProbability - PreSynapticNeuron - PostSynapticNeuron

Genome Encoding Structure:

  • A genome is a sequence of Gene objects and a list of synaptic connections between all neurons, as well as parameters numNeurons and numSynapses
    • A gene corresponds to a Neuron or Synapse (is encoded as an array of floats)
  • Creation Algorithm
    • Enumerate all InterNeurons, Sensory and Action neurons are enumerated according to the corresponding Enum
    • For each Neuron
      • Encode as a gene and append to Genome list
      • For each Synapse:
        • Encode as gene and append to Genome list Assumptions:
  • Synapse transmission is instantaneous
  • No local membrane potentiation in dendrites/neurons, membrane potential is global
  • Action potential travel time is instantaneous
  • Receptor only is activated for one tick by each neurotransmitter

To Do:

  • Decouple Neuronal/Brain Model from environment. Introduce interface for Brain
  • When action potential fires, reduce potential harshly right afterwards
  • Try negative neurons instead of synapses, less complexity
  • Experiment with removing/reworking actionPotentialLength
  • Come up with better solution for all the magic hardcoded constants (i.e. decay rate)
    • sensory normalization bound, max synaptic strength, survivor reproduction rate
  • Implement culling useless neurons and synapses, neuronal pruning (also simulating exuberant synaptogenesis)
  • Use Hebbian/SDTP to guide synaptogenesis (neurons that fire together wire together, neurons that fire out of sync lose their link). Synaptogenesis should not be random
  • Implement mathematical models (differential equations, dynamic systems, analysis) for interactions like neural oscillations, electrotonic potential, cable theory, membrane potential decay, etc.
  • Verify if Neurons is sorted normally by ID
  • Reexamine actionPotentialTime tracking
  • Reexamine encoding frequency based intensity of stimulus
  • Reexamine order of computation for potentials in simulateStep
  • Implement Fitness tracking
  • Implement Neuron and Synapse monitoring per Organism
  • Implement Neuron mutation
  • Implement Adaptive Integrate-and-Fire model (https://en.wikipedia.org/wiki/Biological_neuron_model#Adaptive%20integrate-and-fire)
  • Explore reinforcement learning instead of purely random search
  • Add electrical gap-junctions
  • Explore and implement oscillatory cyclic generation within neural networks
  • Explore and implement neural plasticity
  • Explore and implement information encoding schemes within neural signaling patterns
  • Implement neural backpropogation of action potentials
  • Explore NMDA(R)
  • Why do axon terminals release nothing most of the time? Explore probability of release
  • Implement modulatory synaptic behavior
  • Implement keeping NeuronIDs consistent even with deleted neurons

About

Highly optimized neuroevolution simulation in C#

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages