Code center > Suggestions
Evolving Reproduction
Zinc Avenger:
Hang on a sec!
Evolving bots to do something conditionally (as opposed to constantly) nearly always ends up on storing invalid values into locations until they hit a valid one (as the example I gave in Mutation Sims, the evolved bot that stores *.robage - 1365 into .repro so it doesn't reproduce for the first 1365 cycles of its life). I agree 100% on the "wrapping" of positive numbers, I think the abs idea would make not constantly reproducing vastly harder.
EricL:
Hmmm. I think this comes down to a general philosophical question of genome design having to do with sysvar space sparsity and how conditionals are expressed/evolved in the DNA.
In general, if the space of valid sysvar values is sparse, then as you say, bots can evolve code where values are stored each cycle and the result of some calculation governing the stored value is essentiallly the conditional. Nothing happens until they hit upon the right magic value, or a value that is in the small range relative to the space of all possible values.
If on the other hand, storing just about any value into a sysvar reuslts in some morphological action, then bots would need to evolve conditional logic which dictates whether the store occurs or not if they did not want it to happen every cycle.
Using your example, it's the difference between
cond
start
*.robage 1365 sub .repro store
stop
AND
cond
*.robage 1365 >
start
(any number) .repro store
stop
Personally, I prefer the latter design approach for several reasons:
1) I think it results in faster evolution. When the space of possible sysvar values that result in morphological action is not sparse, a given string of DNA has a higher probability of doing something which selection can then favor or not favor. Action evolves first, then conditional action.
2) I think it results in a milder slope in the fitness landscape leading towards stable traits and strategies. For example, in the first approach, incremenenting or decrementing through sysvar values as in the example above as a means of hitting upon a value which does something would probably be a common approach bots would evolve. Makes sense for evolution to just walk through every value to find the ones that work, right? But because the space is spares and the range of values that do something contigious, the result is that nothing happens for a while and then suddenly a lot happens. In the example above, it reproduces every cycle after beginning its 1365th cycle of life, giving each offspring a differnet nrg percentage. I would claim (without evidence) that it is harder (I.e. that the genetic distance is further, requiring more subsequent mutations) to go from this genome to one where a specific nrg percentage is used (or a number of other 'stable' strategies) than it would be were the sysvar space non-sparse and the conditional evolved as a conditional for performing the store, not the value.
Try the mental excercise of mutating different single base pairs in both genes above I.e. change a number, change a sign, change a operator, etc. Which gene is 1 base pair away from a larger number of interesting reproduction strategies? I would claim the second.
Granted I am arguing from opinion without data, but there's my argument. I just prefer a dense sysvar value space.
Zinc Avenger:
Cond-start-stop is, as far as I am aware, exclusively found in hand-coded bots. After many hundreds of millions of cycles of evolution in countless sims, I have not managed to find a single instance of this structure evolving in a workable state. I normally end up with flow control commands all over the place with no rhyme or reason.
It is not only unlikely (what's the chance of getting a cond, then the condition, then a start, then the action, then a stop from a purely evolved genome?) but it is fragile - it is far too easy for mutations to break it. Change any of those instructions or flow commands and the entire thing stops working.
I'm all for wrapping values in, say, .repro so that any positive integer is accepted with meaningful result. I agree with what you say about allowing the maximum possible interesting mutations from any given starting point. But in your example, the only way to evolve not reproducing is through the useful, powerful but fantastically unlikely cond-start-stop structure.
I also agree yes, an invalid inputs method of behaviour control is a long way away in "genetic distance" from the "ideal", but the "ideal" is further removed still from a bot without any behaviour control.
It seems very hard in the current scheme of things for a bot to evolve to do something not-constantly. So far I've only seen storing numbers in random locations until it happens to hit the right sysvar (X Y rnd store, where X is a valid input and Y > the memory location it really wants) and invalid inputs which has already been discussed.
I'd like to hear if anyone has actually seen any other form of behaviour self-control evolve.
EricL:
You have a very good point regarding the rarity of cond start stop in evolved DNA. I havn't done enough (any) reverse engineering analysis of evolved DNA to know whether bots are evolving their own conditional flow using some sort of analogious mechanism or whether they are all just big single genes or if we just need more cycles for behaviour complex enough to need conditional logic to evolve. Perhaps all of the above.
Your point regarding fragility is particulary apt and DNA fragility, particularly as we woudl like to evolve stuff much faster than nature with higher mutation rates, worries me . I have long wanted to add loci-specific mutation probability coding so that bots can evolve to have low mutation rates for important structures or sequences in thier DNA, but of course that does not exist yet.
I will point out that in my suggestion, there is a 1 in 100 chance of a stored value in .repro not resulting in reproduction (any multiple of 100) but that does not address your main point, which I will concede. I'll change it back and have all negative values do nothing and MOD positive values. That leaves a little less than 50/50 chance of a value stored to .repro resulting in reproduction and the probability of each reproduction percentage equal.
I fully agree think that both the subjects of evolved flow control and sysvar sparsity are critical disscussions that should be continued.
Greven:
Zinc Avenger well said. Introducing artificial constraints on DNA/genome level aint doing any good, "Life takes it own path" or whatever Dr. Ian Malcolm said in Jurassic Park.
It would indeed be funny to create a DNA parser, which could turn evolved DNA into a more readable form.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version