I think the currently implemented rules for sexrepro are almost ok.
This is the way I think sexrepro should be implemented now:
1) Sexual reproduction can be performed by two normal bots through the use of the .sexrepro location, and results in the creation of children bots with a "good mix" (more on this later) of the dnas of the parents.
2) The partner for the mating has to be clearly identified: this is achieved by having bots looking each other.
3) The mating should be generally consensual: both bots should have their sexrepro location activated.
3.1) The .sexrepro location value should express the percentage of his own energy each bot would give to the child. This is particularly interesting because gives birth to a prisoner's dilemma game.
3.2) The .sexrepro location is not reset until a mating occurs (this makes easier to mate if no selection of the partner is made).
4) The mating bots should be in proximity of each other (no "action at a distance").
5) A bot may be involved in only one mating per cycle.
6) After the mating, parents and child are temporarily connected through a reproduction tie (for similarity with asexual repro).
and finally
7) The program should keep track of two parents, recording their IDs
The generation value should be discarded when sexrepro is used or substituted by an approx value like (gen par1+gen par2)/2+1 or whatever else
Ok. During the discussion we agreed on the fact that the current way of creating a "good mix" of the dnas of the two parents isn't good at all -it is flawed and, besides, it is gene centric. But Numsgil said he can implement a much more sophisticated dna mixing system, so this should be no problem.
Another point we should consider is how many children should be generated in a mating operation. As the operation of finding a partner is expensive in terms of time and energy, we may decide to allow the creation by the couple of many children at once. The only problem is to decide _how_ the bots may decide to create more children. One possible solution is to allow robots to mate repeatedly with the same partner while the first mating operation isn't yet complete (that is, while the two parents and the children are still connected by reproduction ties); but we don't even have to explicitly allow it if we don't state that two bots can't mate until one of them is still in a mating operation with a third one. So, either we add two rules (robots can't mate until a previous mating is ended BUT they can do it with the same partner) or we simply let bots mate at every time (which is my preferred, I'm for deregulation).
So do we want to acchieve partner selection through:
- Ties?
- Line of sight?
- Shots?
- Proximity/Physical contact?
Couples of bots must be identified by a link of some form connecting them. Shots and proximity won't work since the first are difficult to use and synchronize, and the second is not a 1 to 1 relation. Line of sight and ties would be both ok, but surely the easiest way to identify with precision a couple is to have them looking at each other: it links the two bots, but at the same time leaves them completely free. A tie links two bots, but also has the annoying physical effect of keeping them together. If you consider that the linking operation should take place
before bots express their consent to sexual reproduction, you can imagine what a mess would be having horny bots going around linking everybody.
So, who's gonna implement this?