Code center > Suggestions

Codules

<< < (2/7) > >>

Numsgil:
There are really two issues here.

1.  How hard is it to create an infinite loop.

2.  The consequences if you do.

Originally a while back I considered charging for the gotos like you suggest.  In which case, infinite loops cause instantaneous death, which has issues IMO.  Generally speaking, I try not to penalize bots for evolving stupid things, but reward them for evolving smart things.  There are a few safeguards in place to generally prevent bots from screwing themselves over too bad.

The limits on up and dn etc. for instance.  They can be fairly high, the point is that it should be really hard for a bot to kill itself without trying.

So in this case, I think an upper limit is preferable, since bots are still allowed to survive and live if one little part of its DNA happens to create an infinite loop.  Theoretically this limit can be anything, since any number is going to be less than infinite.  Realistically when you get above maybe 1 000 000 you probably are stretching it.  100, 1000, or 10000 would be my preferable choice.  DNA execution isn't really the bottleneck for the program at the moment, so I don't think we have to worry too much about program slowdown.

EricL:
We have slightly different philosphies I think.  Mine is likely the result of inexperience w.r.t. the "real world" of what actually works in DB to make it fun/forgiving/probable to evolve something interesting.  So, I must defer to expereince and I'm fine with the approach and with having an upper limit.

That said, my philosphy is that I think it should be easy for bots to develop fatal DNA artifacts such as infinite loops, but the consequences of this (imposed by the associated costs inherent in the environment) should be severe and that this provides the selection pressure feedback such that bots won't evolve in that direction.  For example, if mutating an infinite loop is immediatly fatal, the number of individuals that will ever get impacted from this will be a vanishingly small percent of the population since no organism with such a mutation will ever procreate.  The diversity of the population upon which selection oeprates will contain no idividuals inclined to infinite loops.

INHO, it should be easy for bots to evovle DNA that results in quick death and favor those who do not.  Evolution isn't just survival of the fittest, its non-survival of the unfit, which has the effect of shifting the entire bell curve of individuals in a species towards fitness instead of just broadening it.  This isn't so critical I think when there is only asexual reproduction as the average fitness of other individuals within a species has little effect on the fitness of the fitter indivuals.  But the average fitness of the population becomes critical to the fitness of the most fit individuals in a population when we have sexual reproduction.  Sexual reproduction emphasizes evolution of species not just individuals.  Not punishing stupid mutations will drag down the fitter individuals in a species until we create rich mechanisms for sexual selection I.e. for fitter bots to recognize and refuse to breed with less fit bots.

-E  

"There are a lot more ways of being dead than of being alive" - Richard Dawkins.

shvarz:
Can't say I understand it completely, so some questions to clarify:

1. Are we placing all of DNA into codules?  Can DNA exist outside of a codule?
2. If DNA in a codule has a goto command the flow of that DNA is stopped and the called codule is executed first, once it's done it comes back to the original DNA and continues right after the goto command.  Is that right?
3. I'm not sure how you are preventing infinite loops.  Let's say codule 1 has the following code:

cond
start
1 goto
stop

I don't see how it can get resolved.

shvarz:
Eric:  Look at the existing DNA structure - it is designed to be forgiving.  We could make it so that any letter in DNA can be mutated, so that .refeye could mutate into .sefeye or .tefeye with fatal consecuences.  But it would not work for DB, because it would take a freakishly long time to mutate .refeye into .up.  Reality is good, but it's not fun :)  We just assume that all these mutations happen, but die out immediately, so there is no need to spend cycles on creating dead bots.

EricL:
I'm not suggesting we allow the evolution of syntaticly incorrect organisms.  I agree we can just assume all those guys die fast.  I'm saying semantic ineffeciency should be more severely punished than it is today.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version