Code center > Suggestions

Sexual Reproduction Focus Group

<< < (9/11) > >>

Numsgil:

--- Quote ---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.
--- End quote ---

I can see your point in this, but I have two points that should be considered:

A.  To bots that are mating under microscopic rules, sexual reproduction is really a fusing.  Two bots become one.  In such a system, the number in sexrepro doesn't really have a meaning.  Therefore I think that another variable should hold this information.  Leave .sexrepro to information such as relative amount of mixing, or something similar.  Something universal to the sexrepro process.

B.  Imagine bots that, like worms, cross fertilize each other.  So both end up having babies.  There should be a way of saying wether you're using repro nrg for your own kid or a kid the other bot makes.


--- Quote ---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).
--- End quote ---

The only danger I see is in two bots losing sight of each other and another bot swooping in and mating accidentally.  Losing sight of each other is very easy to do.  One of the bots could get hit by a flying veggy, or bounce against a wall.  It happens alot, even with bots that are designed to follow another bot.

I think it would make more sense to think of sexrepro as a request ("Will you have sex with me?") that must be repeated each cycle.  Like a mating call.  Sort of.


--- Quote ---6) After the mating, parents and child are temporarily connected through a reproduction tie (for similarity with asexual repro).
--- End quote ---

I would connect only those bots who have contributed resources to the child.  The child should be placed such that the distance from child's perimieter to both parents' perimiter is equal.  If there is only one contributing parent, the child should be placed as .repro kids are.


--- Quote ---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
--- End quote ---

I think I can devise some sort of tree structure for keeping track of phylogenic trees.


--- Quote ---...simply let bots mate at every time (which is my preferred, I'm for deregulation).
--- End quote ---

That would be my preference as well.


--- 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.
--- End quote ---

I agree.


--- Quote ---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.
--- End quote ---

And I can see your point here. My only point to point out is that maybe we should allow both line of sight and tieing, if for no other reason than that, should a bot couple wish to mate multiple times, the kid's going to get in the way! If the parents are still tied together, this problem is somewhat circumvented.


--- Quote ---So, who's gonna implement this?
--- End quote ---

I think this is reallt two questions.  Where and who.

As to where, the C++ base would make the most sense. It's certainly complete enough for all the features listed here, and it has the two benefits of STL vectors to handle DNA swapping (and keeping that swapping code clean) and a relatively well organized code base. On the other hand, since the code hasn't really been released to general use, let alone properly debugged, the implementation would be little more than proof of concept.

As to who, I am personally of limited free time. I have school and work, and between the two I only really have 2 free days a week. So I can do it, it will just take a while, and take second precedence over finishing the tie code in the C++ version and finally releasing an install of it.

Carlo:

--- Quote ---A.  To bots that are mating under microscopic rules, sexual reproduction is really a fusing.  Two bots become one.  In such a system, the number in sexrepro doesn't really have a meaning.  Therefore I think that another variable should hold this information.  Leave .sexrepro to information such as relative amount of mixing, or something similar.  Something universal to the sexrepro process.
--- End quote ---

Sexrepro was originally desgned to give the effect of a macroscopic sexual reproduction, and the rules we defined in this discussion are referred to a macroscopic type of sexual reproduction. Fusing (making two cells become one, with the complete dna of both parents) could be an useful and interesting mechanism, but has very little to do with sexrepro as it has just been defined. So I can't see the point in using the same sysvar both for sexrepro and fusing (other than a nominalistic question). Let's just create another sysvar (.fuse, for example) which does the job.


--- Quote ---B.  Imagine bots that, like worms, cross fertilize each other.  So both end up having babies.There should be a way of saying wether you're using repro nrg for your own kid or a kid the other bot makes.
--- End quote ---
Why? I can't see the point. The sexrepro takes place between two cells, not two worms. The offspring doesn't belong to one or the other worm, but in equal measure to both parents. By the way, it is interesting to figure out some different reproduction schemas for multicellulars. For example, org A and org B could touch each other with a reproductive cell, and the sexrepro would give birth to the embryonic cell of a new individual, while leaving the reproductive cells intact. Or the reproductive cells may invest all their energy in the offspring, disappearing after the mating. The cells may also be released in the environment like sperms or spores, or the mechanism may be asymmetric, with one organism sending its reproductive cell towards the other waiting for it.


--- Quote ---The only danger I see is in two bots losing sight of each other and another bot swooping in and mating accidentally.  Losing sight of each other is very easy to do.  One of the bots could get hit by a flying veggy, or bounce against a wall.  It happens alot, even with bots that are designed to follow another bot.
--- End quote ---
I'd call it a technique for rape. Obviously sexrepro requires some additional care compared with the "typical darwinbots life" that is just going around almost carelessly and bouncing everywhere. It is possible that sexrepro will require an environment a little bit less competitive and in some way more sluggish, to allow bots to have more control of their movements and their relative positions.


--- Quote ---I think it would make more sense to think of sexrepro as a request ("Will you have sex with me?") that must be repeated each cycle.  Like a mating call.  Sort of.
--- End quote ---
Well, that's just a matter of taste. Basically, the only difference will be in how much energy the bot will spend to maintain its sexrepro on.


--- Quote ---I would connect only those bots who have contributed resources to the child. The child should be placed such that the distance from child's perimieter to both parents' perimiter is equal.  If there is only one contributing parent, the child should be placed as .repro kids are.
--- End quote ---
Both parents will contribute to the child. The least contribution possible is 1% of their own energy, but it will be very rare: if both bots contribute for the 1%, they will simply lose the energy (that given to the child and that necessary for the sexrepro command) and the child.


--- Quote ---I think I can devise some sort of tree structure for keeping track of phylogenic trees.
--- End quote ---
That would be interesting, but not really necessary. It is sufficient for each bot to be recorded in the database with both parent's IDs to rebuild that tree completely when analyzing data.


--- Quote ---My only point to point out is that maybe we should allow both line of sight and tieing, if for no other reason than that, should a bot couple wish to mate multiple times, the kid's going to get in the way! If the parents are still tied together, this problem is somewhat circumvented.
--- End quote ---
To have them both seems useless, and ties are a problem because of what has been said. Anyway, when sexrepro occurrs, a tie is created between parents, but keeping in sight is an ability bots should show to make more children. Id' just take care of children appearing in some point at the left or right of both parents, not in between.

I think this is reallt two questions.  Where and who.


--- Quote ---As to where, the C++ base would make the most sense. It's certainly complete enough for all the features listed here, and it has the two benefits of STL vectors to handle DNA swapping (and keeping that swapping code clean) and a relatively well organized code base. On the other hand, since the code hasn't really been released to general use, let alone properly debugged, the implementation would be little more than proof of concept.
--- End quote ---
I haven't seen a working version of the c++ version yet, and if you can work on it just 2 days a week, probably it will take a long time before a usable version is released. The algorithm for swapping dna portions seems trivial in any language (except for the procedure to compare the dnas and find similar portions), and most of the other rules are in the already implemented sexrepro. So maybe you could write out the most difficult part, while others could make up the rest. Any volunteers?

Zinc Avenger:
Hi, I've been using Darwinbots for a few months now but I haven't actually posted on this forum until now.

Sexual reproduction is something I've been wanting for a while now, simply because all the long-term evolution sims I've run have ended with extinction. As far as I can tell sexual reproduction is a way of diversifying the population - the offspring is not limited to a single parent's genome plus reproductive mutations. And as I've learned over the last few months of running sim after sim after sim, a diverse population is a healthy population; monocultures are fragile and in a closed environment, ultimately a dead end.

I apologise for coming in the middle of this discussion with some ideas, if they're not welcome (or just no good!) just say.

Instead of sexual reproduction allocating a portion of the bot's current nrg to the offspring, perhaps nrg could be allocated to a "sexual reproduction bank" in a similar way to body, slime, shell etc. In this way preparing for reproduction is an investment, requiring "healthy" reproduction-concerned genes as well as general fitness, and selection pressures will favour organisms which allocate an appropriate amount and punish those who do not allocate enough (fewer breeding opportunities), or too much (less nrg available for living). Other bots may be written with or evolve a way use the amount of nrg stored in the bot's sexual reproduction location to gauge its suitability for mating. When the bot is involved in sexual reproduction it converts the value stored in the sexual reproduction location to nrg and passes it to the offspring.

The way I envision the actual reproduction mechanism operating is if a bot passes this sexual reproduction energy to another then the other produces a new bot with blended dna. If the system is set up so that this sexual reproduction energy can be sent via shot and tie then we can allow bot writers and evolution to work out what is best for their particular bot. So a sexual reproduction shot would include an amount of this sexual reproduction energy and the bot's identifier, sexual reproduction via ties would pass sexual reproduction energy and the bot's identifier (or maybe the tie number? Perhaps that might work better from the system's viewpoint). Perhaps the active part (the actual firing of the shot or the tie function) might be best expressed as firing a percentage of the sexual reproduction fund rather than absolute figures. The system generates a new genome from the two bots (perhaps the earlier two-halves method from earlier in this thread) and the bot that recieves the sexual reproduction energy adds the sexual reproduction energy from the shot to its reserve of sexual reproduction energy, converts the total to nrg and gives it to the offspring.

Just my $0.02, and as I said, feel free to tell me to shut up  

Numsgil:
Not at all, feel free to put in up to and including $0.86

My only counterpoint is this question: does it add a new ability?  If it's just a segmenting of nrg, it doesn't do anything nrg by itself couldn't do.  Body, for instance, is used as a way to increase power.  Venom adds a new ability to the bot (venom shots).  etc. etc.  What does sex nrg do other than exist?

If you can think of a good reason for it to exist, then I wouldn't see any reason for it not to.

Endy:
Been playing with this on and off myself. I'll agree that's its way too easy to abuse the current system.

Some issues:

I've made species of bots that keep track of the other's sexrepro location then mate only if the other's nrg contributation is higher than their own. One bot will be giving 50% and the other a miserly 1%.

Maybe a system like:

BotA: I'm willing to give X nrg
BotB: Well then, I'm willing to give Y nrg
Result: Both parents agree and a baby is formed

It's also possible to ensure all your genes are carried by another bot by simply doubling your geneome.

Ie. AAbbCCddEE (with each letter representing two identical genes)

This bot will always have 1/2 of it's genome carried into the child.

One last problem is the geneome size mismatch problem. A SG bot can take the majority of another's dna during sexrepro. Which explains these infernal plants we wind up with...

For those who like playing here are some genes I've come up with to use sexrepro (last vers)

--- Code: ---cond
*.robage 0 =
start
.sexrepro .memloc store
stop

cond
*.memloc 49 >
*.nrg 3000 >
*.sexrepro 0 =
start
50 .sexrepro store
stop

cond
*.nrg 5000 >
*.sexrepro 0 =
start
50 .sexrepro store
stop
--- End code ---

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version