Code center > Suggestions
Recombination mechanism
shvarz:
The true fault of the current sexrepro system in DBs is not really the choosing mates or staying together for long enough time or the lack of diploidy - all of these are circumstantial for sexual reproduction. The real advantage of sex is recombination - that is re-assortment of different regions of DNA. Recombination allows getting rid of bad mutation, escaping mild forms of the muller's ratchet and joining two good mutations that arose independantly.
Recombination is the true blessing of sex and our poor bots are missing out on it!
Right now during sexrepro genes are simply mixed up randomly, gene 1 from bot 1, gene 2 fro bot 2, gene 3 from bot 1 and so on. The problem with this approach is that the program actually does not compare the genes, so that if one of the bots has an extra gene inserted, then the product of this "recombination" will be a truly messed up bastard. In real life there are mechanisms that align DNA and make sure that exchanged pieces of DNA are actually at least remotely similar.
Another problem is that duplicted genes can't recombine with each other. Here is what often happens in real life: you start with 1 gene, then duplicate it. Now you have copies A and B. Since the two copies are similar, then during sexual reproduction you can align copy A with copy B:
DNA 1: A-----B
DNA 2: ------A-----B
After recombination:
DNA 1: A----A----B
DNA 2: ------B
This is a very important mechanism for duplicating genes, re-assorting mutations and activating non-functional copies of genes. And our bots are missing on this too!
So, what can we do? We can't just align DNA in DBs looking for similar regions. The algorithms for that are so complex that it is impossible to do real-time (not until quantum computers appear).
I think I have a solution:
When DNA is loaded into the program, we introduce specific unique markers into its structure after every command. Something like random 16-digit numbers (this can be done behind the scene, so that it we can still look at the DNA). These numbers cannot be mutated, but they can be duplicated/deleted along with DNA that surrounds them. During sexual reproduction, the newly formed DNA starts from one of the parents and with some probability it switches to DNA of the other parent. During the switch, program looks for the unique identifier at the place of recombination in the DNA of the other parent. If there is none, then it returns back to the first parent, if there is one, then it continues from the spot where that identifier is, and if there is more than one, then it picks one of them randomly and continues from there.
This would essentially allow recomabination to happen, along with all the advantages it brings. What do you think?
Numsgil:
I was thinking of using centromeres to allign two chromosome threads.
The centromeres are defined for a specific spot on the DNA of two strands, with crossing over occuring based on that centromere as a reference point.
I talked about this in the junk DNA thread just now and I had a post in suggestions not too long ago.
I think crossing over (the current version doesn't count for this stipulation, since it's more like bacteria gene transferance anyway) should only be allowed between chromosomes that are bound together with a centromere.
shvarz:
It does not solve the problem of crossing over non-similar sequences. And it does not allow non-reciprocal recombination (between different copies of the same gene).
Numsgil:
Well, centromeres are unlikely to develop between disimilar chromosomes. If they do, the chromosomes will eventually become similar through crossing over. Like shuffling a deck of cards. If I have one deck of all red, and another of all black, after enough shuffles they'll become randomly distrubted into red and black.
That is, if you cross over from chromosome A 50 units from its centromere, and do the same for B, it doesn't matter if they're similar or not. If they're not similar, the result is probably a mess. If they are identical, you get no effect.
As for non-reciprocal recombination, no, it doesn't address it. Give me some time to think about it (I'm tired right now).
Numsgil:
From what I can tell, non-equal crossing over is the exception instead of the norm. That is, it's a mutation.
I was thinking of adding a portion to the mutations tab for crossing over errors. This would go in there. You could set how far off the length is wrong, and the chance of such an error occuring each time crossing over occurs.
As far as I can tell, this unequal crossing over is primarily between neighbor areas. That is, you won't get a massive slip in the chromosome pairing very often.
Although occassionally the chromosomes will split on different ends of the centromere. But that's a massive mutation that rarely produces meaningful results.
Navigation
[0] Message Index
[#] Next page
Go to full version