Application of EEXIST to a
EEXIST has been applied to implementing logic gates; frequency generators and recognizers; tic tac toe; and control of a landing system. As a next challenge, the system was used to govern the behavior of a population of creatures inside a virtual ecosystem.
The setup is a grid-based world of creatures, each able to turn and move. Cretures expend energy when they move, and consume energy (small green squares) that appear throughout the system. If a creature moves into another creature from the side, it takes some of that creature's energy. If a creature's energy drops to 0 , the cresture dies.
Creatures that meet head-to-head may mate, creating a new creature. Random mating also occurs, among creatures that have existed for long enough.
Each creature is controlled by its own EEXIST. Information about the immediate vicinity is presented to the system as a set of chemical levels; the chemical level in a pre-defined "output region" is used to indicate movement requests from the creature (so imagine sensors producing chemicals, and chemical levels driving actuators). As usual, the genome of each creature is a set of 10 bias gradients. When creatures breed, their offspring' genome is a simple average of the parents' genomes. Mutation is also incorporated.
When a creature dies, it is removed from the system, and its EEXIST is garbage-collected. Thus, fitness is assesed by the most basic metric: survival.
The simulation proceeds indefinitely; various analysis has been done on the state of the system under different conditions. Some of these runs and results are presented here, including an analysis of survivor characteristics. See the Gitlab Repository for the full source code, including the Main.jar and Veco.jar files.