Code center > Suggestions
Bringing back .sexrepro
Welwordion:
Due to my current main project, a gene based template robot (stores numbers and commands in different genes) I have experimented quite a bit with a scheme that mixes two bots genome(A mutated offspring for the numbers and a non mutated for the commands) and I must say the main problem in current gene transfer is that genes have to be in a certain order to work, thus you need to delete the complete/ a large part of the genome and build it from scratch which is time consuming and costly.
However as the fact that virus can only be inserted at the end of the genome is to allow antivirus genes to work,
I came up with an alternative that keeps that property of viruses.
Basically allow either a variant of .delgene or .sexrepro to replace genes with interfaces, placeholders that in turn are replaced by viruses.(filled up from bottom to top)
That way certain genes can be exchanged without disturbing the order of genes and without allowing viruses to do freely as they want.
EricL:
--- Quote from: Welwordion ---Basically allow either a variant of .delgene or .sexrepro to replace genes with interfaces, placeholders that in turn are replaced by viruses.(filled up from bottom to top)
--- End quote ---
I'd be interested in understanding more details on what you propose and how it relates to the discussion on this topic here and the sequence based poposal I make there for virus insertion.
Botsareus:
(see correction to the above post.)
--- Quote ---enhancements to viruses
--- End quote ---
Here is what I will program, and propose:
As soon as the robot evolves a virus shot. In the dna the following happens:
--- Quote ---virus_start virus_end
--- End quote ---
after words Independently of the rest of the dna the virus part of the dna filles with commands every time the robot mutates ex:
--- Quote ---virus_start
A 'condition
B 'action
C 'etc.
virus_end
--- End quote ---
Numsgil:
--- Quote from: Welwordion ---However as the fact that virus can only be inserted at the end of the genome...
--- End quote ---
It's been a long time since I looked in to it, but I believe that viruses get inserted anywhere in the genome between two other genes. I think there was (is?) a bug that prevented viruses from being inserted in either the very first or very last position, that made anti-virus especially useful.
Either way, viruses just aren't a good way to totally mix two different genomes. It takes time to copy DNA in to a virus (I think it's 2 cycles per bp or 2 bps per cycle), viruses take a lot of energy to produce, relatively speaking, and there's too huge a chance of something going wrong to make it a viable reproductive strategy.
Also, while I appreciate Eric's position on not implementing recombinant strategies explicitly, the process of properly lining up two DNA strands and performing cross-over events is just way outside the domain of DNA, and doesn't match the relatively high level tools involved in other places (want to reproduce? Store a positive number to .repro). At the very least, I think that process needs to be implemented and made available to bots in some way. The number of cross over events can be controlled through DNA, and when and how to find two DNA strands and what to do with the new one can be controlled by the bots in some way, but the core process of mixing to DNAs is just way too complex and basic a task.
EricL:
--- Quote from: Numsgil ---It's been a long time since I looked in to it, but I believe that viruses get inserted anywhere in the genome between two other genes. I think there was (is?) a bug that prevented viruses from being inserted in either the very first or very last position, that made anti-virus especially useful.
--- End quote ---
This is correct. A quick inspection of the code shows that the intent at least is to insert the virus after a random selected stop statement. I have not walked through it lookign for bugs or to test the boundary conditions, but this is clearly the intent.
--- Quote from: Numsgil ---Either way, viruses just aren't a good way to totally mix two different genomes. It takes time to copy DNA in to a virus (I think it's 2 cycles per bp or 2 bps per cycle), viruses take a lot of energy to produce, relatively speaking, and there's too huge a chance of something going wrong to make it a viable reproductive strategy.
--- End quote ---
I agree. Viruses are a cumbersome way to sexually reproduce today. While I think it can be done today, it is fragile and time consuming as you say and I agree we need something better. This is why I am soliciting suggestions as to better methods for willign bots to share DNA, one's which perhaps do not have the same cost w.r.t cycles. And it's 2 cycles per bp.
--- Quote from: Numsgil ---Also, while I appreciate Eric's position on not implementing recombinant strategies explicitly, the process of properly lining up two DNA strands and performing cross-over events is just way outside the domain of DNA, and doesn't match the relatively high level tools involved in other places (want to reproduce? Store a positive number to .repro).
--- End quote ---
So here I disagree. Asexual reproduction through .repro is essentailly cell division. It can be simple because it is simple. You divide, the new cell gets the same DNA as the old. Simple. There's no real reason not have the simulator handle all the underlying mechanics for this because there isn't a lot of variation possible in how to do it other than what poercentage of your resources to give the offspring, which we allow the DNA to specify. There's no possiblity of time shifting cell division for example, no possibility of not being in physical proximity when it happens, no need for specieis recognition or mate selection, etc.
But there is a vast multitude of possibles ways to sexually reproduce, for two bots to coordinate in how, when and where to to produce an offspring that has DNA from both. One bot lays eggs, another comes along hundreds of cycles latter and fertilizes them. Another scatters pollen shots to the wind and reproduction only happens when a female gets polinated. A male and a female have sex through ties and the female carries the sperm DNA from the male around for awhile before giving birth. A female "kills" the male by injecting it with her DNA which casues it to recusively reproduce offsprign with DNA from both, etc.
We want evolution to be able to produce all of these ways of combining DNA, all these behaviours and all that goes with them, from species recognition to courtship and sexual selection to male-male competition for mates. In particular, we do not want to hard code only one way into the simulator.
I think there are some simple ways for bots to do crossover themselves if we gave them some low level basic primitives to enable it. It needs some fleshing out, but I might propose a model like the following:
We create a crossover point base pair that does nothing other than decorate the DNA and define places to cut it for the purposes of crossover and recombination. There can be as many crossover points in the DNA as a bot likes, they can be anywhere in the genome, inside of genes or out. Then, we provide a .mkgamate sysvar which causes reproduction but with only half the bot's DNA. The "offspring" would contain every other alternating section of DNA between crossover points. Think of it as an egg. We could even just reuse .repro and use negative numbers. We could make an even value take the even sections and an odd value take the odd....
Then we could define a shot type that did the same thing I.e shot a "sperm" shot with the gamate DNA. The act of a gamate shot hitting an egg or vice versa would combine the two gamate DNA strands. Note how simple this is. If an odd sperm shot hits an even egg or vice versa, you get perfect alignment if the species are the same or close to it and you can expect the offspring to be largly functional. What we do in odd-odd cases is up to us. I assume we do nothing and you end up with a disfunctional mutant bot.
We could implement a .shareDNA that does the same thing using ties for syncronous sexual reproduction and so on.
We put no restrictions on sex between disimilar species - we do not want to get into the game of the simulator definign what is and is nto a species - but crossing over radically different DNA will likely naturally result in a disfunctional mutant, creating selection pressure towards better species recognition.
The point is that now everything is in the DNA, not the simulator. The number of cross over points, qwhere they are in the genome, species recognition mechnisims, the method of sex itself, whether it is time displaced involving eggs and sperm shots or syncronous with ties or some other means, etce. and it is all subject to mutation and evolution. All we did was provide a simple mechanism to facilitate it.
--- Quote from: Numsgil ---At the very least, I think that process needs to be implemented and made available to bots in some way. The number of cross over events can be controlled through DNA, and when and how to find two DNA strands and what to do with the new one can be controlled by the bots in some way, but the core process of mixing to DNAs is just way too complex and basic a task.
--- End quote ---
So maybe we are closer than we think. I agree with the above execpt for the last 17 words.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version