EvolutionBox is unity based simulation. I tried to take evolution as main mechanism for creating AI. Here is first steps for creating agent interacting with environment, evolve accordingly. On next steps, I will work more on pattern recognition, and self learning.
Download Sim :
Sim download is possible with the link below, extract zip and run exe.
How Sim works
Current Algorithms consist of three sub mechanism as evolution has ,
*Variation : each agent has internal attributes(defined by their genes)
*Mutation: In each offspring they have their parents genes with mutation factor
*Natural Selection : only best fitting genes are able to survive and give new offspring. So their gene is selected by their environment.
All agents start sim with same internal attributes, they have two main objectives, survival of their selves (search for food) & survival of their genes (mating & giving new offsprings). In each new offspring there is mutation factor in their internal attributes(genes) and best adapting to environment, is able to survive and give new offspring.
Genetically transferred attributes are,
*food Priority :importance of food for an agent
*mating Priority :importance of mating for an agent
*chillOut Priority :laziness
*Survival Level :how brave agent is to not concern on its survival. For now it is food resource.
*Energy Transfer:New born agents totally dependent on the energy that receive from their parent. energy transfer is how willing agent to give its part of energy to newborn infant. we can put it like “good parenting”
Choosing action for an agent is by comparing weights of states, and choosing heaviest one. Weight is calculated by priority of specific action for an agent and how badly the agent needs this resource at specific moment. These actions can be;
*search for food :”find food”
*search for mate : agents look for opposite gender agent with maturity and in search for mate state.
*chillOut :min movement, max energy saving
*death: agents die as lack of food, or aging.
Transferring genetic attributes to new offspring
While weights dynamically change according to agent’s current situation, Priorities are taken when they born. In each offspring agent give, agents priorities are given to newBorn with genetic mutation factor. while food , mating and chillOut priorities have tendency to mutate dependently (one increase others decrease) survival and energy transfer has independent mutation rate.
Here is results of 200K cycles of evolution, as overall average of genetically transferred attributes(on default parameters with sim starts). Agents has tendency to choose mating vs food and give more energy to their infant through time. All result in shorter life as agent will more likely to die because of starvation, However they can give more offsprings which will carry these attributes. Survival of genes seems to overcome survival of itself. Also laziness (chillOut) seems to not very Welcome.
Same result can be seen in energy transfer vs natural death graph. Natural death is ratio of if agent dies as its life comes to age limit or starved to death. While energy transfer gets higher more agents dies of starvation, but their infants have more likely to survive and give new offsprings for genetical continuum.
Adding pattern recognition
In current version, sim has main categories like “self”, “other agent”, “food” and each agent has prior knowledge that these categories belongs to different groups and they behave accordingly. For example, if an object is signed as “food” agent knows it is food. It is a priori. In future sim, however, I am planning for every agent to have his/her own neural network system which can learn and categorize surrounding objects and environment without having any prior knowledge. So roughly, if object is green, if you are close to it, and your food level increase, it should be food. Through their life they will have conclusion, which will help their survival. If room is green there is high possibility you will find food, and if it is red there is highly possibility to confront with hunter. So some of these patterns can transferred genetically, Overall agent will become more intelligent.
Current version has just basic instinctive motives of search for food and mate. As a next level cooperation vs competition for resources could be introduced, (testosterone vs oxytocin kind of affect) Currently mating weight calculated by testosterone which also result in territorial aggressiveness. Also energy transfer should be driven with oxytocin kind of hormones which will result in more cooperative motive. It might give small rise of small groups between agents.Also better gene pool can be generated if males compete for mate & females search for good genes for choosing mating partners.As a result, best genes are selected.
Some cool references: