Code center > Suggestions

Sexual Reproduction

<< < (4/9) > >>

Numsgil:
As to DNA complexity: we have a hard time deciphering DNA now because we have to do it by hand.  I'm working (off and on) on an in program step by stem DNA debugger that should make such issues moot.  If we limit the DNA to be easily understood by people we're really just limiting the complexity of the primary source of, well, complexity.

As to randomness: Initially I was like you and found the idea of non-deterministic DNA flow repugnant.  However, as I play more and more with the program and the bots I realize that a little bit of randomness isn't going to hurt anything.  If it's really terrible, bots will evolve to avoid cases of co-dominance.

If 90% of genes are clearly seperated into "recessive" and "dominant", while something like 5% or 10% are co-dominant, (that is, we make the s curve really steep) I think that's a fair balance.

shvarz:
I don't like the idea of random dominance.  A gene should be dominant because of what it does not beceuse of some random chance.  Let's consider the example of eye color:  you get blue eyes if you make a small amount of pigment, you get dark eyes if you make a lot of pigment.  So if you are a heterozygote carrying both variants of this gene, then "blue" copy makes a bit of pigment and "dark" copy makes a lot and final amount is "a lot".  The "dark eyes" variant wins not because it just happened to win, but because it is functionally dominant.

To truly reproduce dominance we need a very simple thing: when a DNA program stores values into memlocs it does not replace the value that's already there but sums the two up.

Elite:
Oh yeah, I get what you're saying

So that's having two (or more if you want to be triploid and awkward, or less if you want to be haploid - simple and loose out on sexual reproduction) seperate sections of DNA, executing both at once and summing up the stores into sysvars of each section.

I like that idea  

Just seperate each 'chromosome' (split the 'root codule' into 'chromasomes') into two (or other number) sections

You could also use some like X and Y to decide the sex of the bot and control mating

Numsgil:
As I understand it, there is no correlation between phenotype fitness and dominant/recessive.

Assuming that evolution works primarily on phenotypes, I don't think it matters if a phenotype is dominant or recessive so long as there is a possibility of either.

Taking eye colour as an example, it could, from our human perspective, be the other way around.  Blue could be alot of pigment.  The phenotypes aren't well tied into the genotype's dominance.

Hence I don't think it matters if the ability to determine dominance/recession is arbitrary, because to phenotypes in nature it already is.

Elite:
Just some entirely related thoughts, but ones I am really pleased with

 

How about swapping codules around as a form of horizontal gene transfer, keeping the root DNA but using viruses/gene-pumping ties (or the method below) to swap around codules like bacteria swap plasmids. You could use this either to:
* Gain an entirely new piece of code from another bot (ie. a new antivirus code or a new trick that some other bots have evolved)
* Use a different piece of code for a task one of your codules was already doing, temporarily 'deactivating' or discarding your codule that the new one replacesMaybe we need a new way of swapping DNA. Like in/out except putting whole codules in there 'on display'.
.ingene1
.outgene1
That allows bots to read codules of DNA of other bots in line of sight. This also gives them more choice about who they accept genes off, whereas viruses don't (if you don't want it then tough - it's in your genome anyway). Maybe you could have a bot that accepts genes off conspecs with more kills/energy/age than them - survival of the fittest.

Ah, a moment of genius  

What do you think?

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version