Evolutionary Algorithm

Agent Based Systems
Agent-based systems and modeling first emerged in the late 1940s. In this type of modeling, independent individuals or agents have a simple function. When these are combined into a decentralized system, the observer sees how the system is affected as a whole. Each agent follows simple rules that allow for changing interactions. With the simultaneous operations of each agent, this kind of simulation would, in turn, re-create or predict the actions of a complex phenomenon of the natural world.

An example of agent-based systems is an ant and its colony. Individually, an ant carries out its own function. However, when an ant is merged into its colony, then it combines to form a more complex system. Each ant still carries out its own function, but when combined together, there is an overlying grand picture that is at work.

In summary, agent-based systems are decentralized systems, where the overall behavior emerges from each agent's individual behaviour. As a result, we can use this type of model to simulate molecules and their interactions since molecular systems are decentralized in principle. 

Evolutionary Algorithm
EvoGEM follows an evolutionary approach to iteratively improve a population of circuits through subtle changes to the individuals. EvoGEM makes modifications to individual circuits in order to create an optimal solution. It does this by applying Darwinian selection on the individuals, whereby each individual must meet a fitness criteria to survive to the next generation. If the individual survives, then there are random changes or adaptations made to the circuit, potentially improving the fitness of the circuit. Overall, this kind of approach is based on the two principles of adaptation and selection. This is how the algorithm works:
 * EvOGEM generates circuits randomly based on the inputs of the user
 * The circuits go through a tournament or fitness test where selection takes place
 * Allocation of fitness is based on:
 * Production of anything
 * Production of the the desired product
 * Termination
 * Points deducted for number of BioBricks to increase efficiency
 * Based on fitness, circuits are removed if they do not pass
 * The existing circuits go through mutation (adaptation)
 * A generation is passed, random circuits repopulate
 * Cycle restarts