Code center > Suggestions
Sexual Reproduction Focus Group
Endy:
Horray I'm back
Played around with sexrepro myself. The version I'm using has some benneficial changes though. I've increased the distance allowing the bots to mate with bots at a farther radius. I also added a protective feature to make the code check veggie population size before allowing reproduction(fixing a major bug allowing truly super massive plan populations).
I tend to think of it as more like a very primitive crossing over event rather than true sexual reproduction. Realisticly enough a bot that uses both sexrepro and normal repro does better in terms of genetic diversity than typical species. (.repro 1 rnd 2 mult add) ( ie. switches between repro and sexrepro).
Still has problems with weird plant-animal hybrids, these odd super animals kill off their own primitive plant ancestors and well eventually crash the ecosystem.
Been playing around with adding code to delete even or odd halves of a bot's dna, with the intention that then the bots could mix their half with anothers. Can't quite the code right though
On sperm:
I'm guessing here but I think our and other higher animals' sperm is evolved/designed to live short times. The temperatures they survive at are lower than typical core body temeperatures. Still guessing but I think it may be to limit mobility within the body, just me but I wouldn't want one of them winding up interfering with my normal cells .
Carlo:
--- Quote ---When a bot no longer sees any bot, the .lastopp (the bot it saw last) variable isn't reset. Let's say that the bot it wanted to mate with managed to die before it could mate. The other bot will still be pining away for bot #21, whose slot happends to be empty. Since sexrepro isn't reset, it will keep trying to mate with bot #21. Eventually, slot #21 will be filled again, and should that new bot be attempting to mate too, and happen to be relatively close, the bot will end up mating with that bot.
--- End quote ---
Just a little bug. Very unlikely to happen, but, to fix it, you can just add to the internal value of lastopp the unique id of the seen bot. And before doing anything with the lastopp value, you should check that the bot in the array slot has the correct unique id. The lastopp stores the array slot instead of the unique id just for speed purposes.
--- Quote ---Likewise, it's possible that if bot A and B are mating, bot C could look at bot A and mate with it. Or it could be that they form a threesome, with bot A taking DNA from bot B, who takes DNA from bot C who takes DNA from bot A. Theres no code to deactivate a parent's sexrepro once another bot decides to mate with it until a child is formed, which means its possible a bot could find itself the parent of 5 or 6 children when it only mated once.
--- End quote ---
Isn't necessary for bots to be both looking at each other in order to mate? And the .sexrepro value should be set to zero once a mating took place. If bot 1 mates with bot 3, bot 2 can't mate with 1 in the same cycle, since when the procedure examines bot 2, bot's 1 sexrepro has been set to zero (it may be that the code actually sets to zero the sexrepro after examining ALL the matings, but then we can just modify a little the code. By the way, yes, having a low slot in the bots array actually has some advantages, but since the slot is chosen randomly, those advantages are equally distributed among all species).
--- Quote ---(parents and generation tracking are) Minor problems yes, but problems that should be addressed, especially if you want to study the ancestry of a bot (which would be important for studying group genetic drift, or something similar).
--- End quote ---
Problems that would become even worse if we introduce diploidy, genes sharing, etc. So, they can't make you look for such kinds of alternatives. Anyway, a serious study of the simulation can be made ONLY through the database recordings, which should just record two parents instead of one to let you keep track of the complete genealogic tree. So, the only thing to do here is duplicating the parent field in the robot's data and record it in the database file. As for the generation data, we can give an indicative value like the mean of the parent's generations + 1 or something like that.
Bye,
Carlo
Endy:
So currently with sexrepro not being reset it could see another bot that has it's sexrepro activated then effectivly it would "hold" that bot's dna until it can afford to reproduce.
This could actually be something of a bennefit in the bot's world. Trying to co-ordinate an exact timing would be pretty difficult otherwise. Still kind of problematic possible having it wind up being some other bot's dna, instead of the desired dna; but then again perhaps useful in it's own way.
Read what Nums wrote again and I had an idea
Maybe add a random gene shuffling ability. This would randomize the gene structure enough that if the bot is missing a particular gene, it might get it back the next sexrepro attempt. (strangely we ourselves have something very similar to this, hmm...)
Perhaps have it be possible both within the bot itself, and make it automatic with the dna sexrepro'd. Maybe have an array of all the bot's genes then randomly pick from this array until there are no more genes.
Family Trees:
Is it really even possible/practical to do a complete dna trace anymore? I'll have sims going with sexrepro, repro and viruses; causing all kinds of gene swapping. Just try imagining creating a complete human dna tree going back through every single ancestor, including all dna picked up from every possible source including the retro-viruses and the animals they got their dna from... I think it's becomming impossible to keep tabs on every single thing going on.
I think Tierra has some sort of mode that turns off certain dna swappings, perhaps it'd be a good idea to add something similar.
Elite:
So what have we agreed on so far?
Can we start to begin formulating a system?
So long as bots have to consent before reproduction, and it is possible to pick a partner with precision, then I see no problem in how the actual reproduction is acchieved. DB is an artificial life sim, and so there's potentially unlimited flexibility in how it maps to real life.
So do we want to acchieve partner selection through:
- Ties?
- Line of sight?
- Shots?
- Proximity/Physical contact?
Carlo:
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
8) 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).
--- Quote ---So do we want to acchieve partner selection through:
- Ties?
- Line of sight?
- Shots?
- Proximity/Physical contact?
--- End quote ---
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?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version