Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 4.71 KB

Universe.md

File metadata and controls

64 lines (52 loc) · 4.71 KB

Universe

In each experiment, there is a single Universe, which the simulator engine instantiate and run. The main functionality of the Universe is to give the opportunity for each creature in the grid to perform an action. The Universe responses to the action, and changes accordingly. It also changes the acting creature internal state and maybe other affected creatures, depending on the action.

Food:

Food is distributed in the world in several ways. First, at the beginning of time, on the universe creation, the universe may distribute a specific amount of food determined in the config file. Then, at each time step, the universe distribute food amount proportional to the currently living creatures. This can be controlled by a config parameter (which can be controlled from the GUI). In addition, food can be generated by the creatures if they can perform the action "work" (see below). In this case, the food is placed in the creature current cell. Note that the food can be eaten by any creature, not only the one that worked for it.

Actions:

While the creature decides upon the action, the environment executes the actions, changes its state and the state of the creature accordingly. These are the actions supported by the environment: MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT, EAT, MATE, DIVIDE and WORK. Every action requires a different amount of energy defined in the biological configuration file. If a creature performs an for which it has no enough energy, the creature will die. Not every action is possible in every situation, for instance, mating in not allowed before the creature get to maturity age. Another example is that moving out of the grid is not possible in a non-slippery world. If the creature tries to perform an implausible action, it loses energy and but his action will not be executed. Note that this loss of energy may lead to the creature dies.

Moving

Since the world is a finite 2D space, creatures can move up, down, left and right. Each movement requires an energy, which amount depends on the biological features defined in the configuration. In the future, the amount of needed energy for the creature to move may depend on the creature size.

Eating

As its name, suggests, this action allow the creature to consume food from the space. The consumed food amount is limited by it's the amount in the current cell and by the meal size defined in the biological configuration. This action reduces accordingly the amount of food in the creature's cell and adds proportional units of energy to the creature allowing him to continue living.

Dividing

Dividing and mating are the two breeding mechanisms that a project-origin supports. Creatures may have the ability to divide like bacteria or to mate like humans. In asexual creatures, this action creates two daughter creatures from that divide the mother creature energy. Except the evolutionary DNA mutation, the DNA of the daughter creatures is the same as of the mother creature.

Mating

In sexual creatures, the mating creates a new offspring creature, have a recombined and mutated version DNA from its parents. Choosing to mate, the creature gets a list of all the creatures in it's surrounding, and probabilistically chooses the one that it is most attracted to. Currently, the sexual attraction is implemented by the function s(1-s), where s is the cosine similarity between the two creatures' DNA. Finally, the spouse is selected by the distribution determined by the attraction (softmax overall attractions). This action may be limited by age, called maturity age defined by the configuration.

Fighting

In battle mode, in which two or more races exist in space, creatures are usually aggressive - having the "fight" action. The creature can fight a random creature in his environment from same or different race. The fight result is determined by the distribution drawn by the involved creatures' energy, thus, the creature should learn not to fight a much stronger enemy. The creature that wins the fight takes half of the enemy energy, therefore, it is worthy to fight an enemy having enough energy. The fight action requires a substantial amount of energy, controlled in the config file.

Working

When the creature choose to work, it spends working energy (defined in the configuration file) to add food to the cell it is located in. Note that the action work only spends energy, and the creature should perform the action each to consume food from the space. Therefore, the creature should learn that it should work only if there is no food in the surrounding environment. In addition, it should learn that working is not enough to provide it with energy, but it must eat to consume it's labor product.