46
Suggestions / Genome structure
« on: January 02, 2007, 04:29:05 PM »
Yes, again. I know it most likely won't go anywhere, but I'll put it out for everyone to hear anyway. Maybe at least some ideas would find their way into the program
Right now we have fully deterministic genome structure: conditions are used to turn genes on and off. There also was a suggestion to go for probabilistic approach, where genes are executed at random. Both have advantages that have been discussed previously (do a search yourself).
I have a compromise suggestion, that would keep the possibility of designer-bots being tightly regulated, but at the same time allow for a genome structure that is more "evolvable". Everyone knows that on practice it is impossible to evolve a bot with a gene that is using a condition. Genes are either always on or always off with no middle ground. Gene control is such a tricky thing that it gets broken down very quickly and never evolves from scratch.
So, in my opinion the structure of "condition" needs some simplification and flexibility. Here is the idea:
We have a single value that defines the probability of the next encountered gene to be executed. That value is never reset to zero but is modified by the DNA.
1. Allow commands that increase or decrease the probability. (say "bump" and "drop"). As DNA is scanned each encountered command changes the probability by 10% up or down.
2. Current strong conditions, such as <, >, =, =! etc "bump" the probability if true or "drop" it if false.
3. Mild conditions such as ~= can do the same but to a lesser extent, say by 5%.
Such conditions are much more likely to appear during evolution and are easier to handle for bots. One of the big advantages of such genome structure is a wider diversity of mutations that it can tolerate. The fitness of the bot is not going to change drastically, but through a gradient and gradients are very good for evolution, because evolution is good at optimizing, but is bad at coming up with new structures.
Right now we have fully deterministic genome structure: conditions are used to turn genes on and off. There also was a suggestion to go for probabilistic approach, where genes are executed at random. Both have advantages that have been discussed previously (do a search yourself).
I have a compromise suggestion, that would keep the possibility of designer-bots being tightly regulated, but at the same time allow for a genome structure that is more "evolvable". Everyone knows that on practice it is impossible to evolve a bot with a gene that is using a condition. Genes are either always on or always off with no middle ground. Gene control is such a tricky thing that it gets broken down very quickly and never evolves from scratch.
So, in my opinion the structure of "condition" needs some simplification and flexibility. Here is the idea:
We have a single value that defines the probability of the next encountered gene to be executed. That value is never reset to zero but is modified by the DNA.
1. Allow commands that increase or decrease the probability. (say "bump" and "drop"). As DNA is scanned each encountered command changes the probability by 10% up or down.
2. Current strong conditions, such as <, >, =, =! etc "bump" the probability if true or "drop" it if false.
3. Mild conditions such as ~= can do the same but to a lesser extent, say by 5%.
Such conditions are much more likely to appear during evolution and are easier to handle for bots. One of the big advantages of such genome structure is a wider diversity of mutations that it can tolerate. The fitness of the bot is not going to change drastically, but through a gradient and gradients are very good for evolution, because evolution is good at optimizing, but is bad at coming up with new structures.