Author Topic: Smarter Gene Selection and Evolution  (Read 758 times)

Offline rwill128

  • Bot Builder
  • **
  • Posts: 67
    • View Profile
Smarter Gene Selection and Evolution
« on: August 06, 2012, 01:49:39 PM »
Okay, I have a lot to say here, so I'm trying to narrow it down to just one small bite-size piece of information for this post. I've been thinking about DB a lot since I discovered it a month or so ago, though.

Here goes:

As far as I know, right now DB's only mutation-rate variability is a global one, which not only affects all parts of the bot's DNA, but it affects all bots.

But I think we should have more options: not just a variable inside a bot that changes it's own susceptibility to mutation, but commands that changes a particular gene's susceptibility to mutation, or even a command that changes the bot's susceptibility to mutation in the following lines of code until it is changed again, or perhaps changes the bot's susceptibility to mutation for an X number of lines of code that follow.

The above system could simulate variability in environmental factors that change our genes (such as carcinogenic substances, responses to stress, or radiation).

It could also allow for evolutionarily-intelligent ways of "sticking one's neck out." Certain crucial parts of code would, through the process of natural selection, be more-or-less preserved as low mutation rates were selected for, while other more experimental parts could be left open to higher mutation rates.

I don't think this way of handling mutation would be counter to actual biological processes. Granted, I'm no biologist, but I think that the molecular copying of our genes is orchestrated in such a way that other genes could actually be telling our copying centers to copy that piece of code with a greater or lesser degree of precision.

(Perhaps I'm wrong. If so, I would welcome a swift knuckle-rapping from an actual biologist.)


Secondly, I think that, in order to conform more precisely to the behavior of actual genetics, it would be wise to consider the following options:

1) Consider a way that each bot's code would be more likely to support a metaphorical bank of stored-up, unexpressed mutations -- mutations that are waiting for a relatively unlikely mutational "on-switch," one that causes that set of genes to be expressed at a very specific time in the bot's life or under other specific circumstances.

2) Consider giving genes not just commands for performing operations,  but conditions for genes to check if certain goals are being achieved, certain inputs are being received, or certain conditions are being met by the end of a gene's expression. If not, these genes should be able to deactivate their own expression.


In fact, perhaps each gene should have three sections: one that only accepts conditions for this gene to express itself, one that only accepts commands -- a "what to do if this gene is turned on" section, and a third section that also only accepts conditions, and which serves as a "when to turn this gene off section."

If a mutation occurs such that a new gene is created, but only one of these sections has code, then the gene rests dormant until all sections have gained a mutation.

I have a few other ideas, but I think these changes (to start) would be crucial for inviting more complex evolutionary jumps.


Perhaps some research would have to be done to cite a biological precedent, but I do believe that biological organisms behave according to these patterns, and even though bot instructions are referred to as "DNA," they're still operating at a macro level (we have commands that tell bots to "shoot" or "repro" -- and an entire gene can define a complex set of behaviors, etc.) To me this fact means that we should tweak DB "DNA" to have some of macro-level behaviors of expression that our genes do.


Similarly, as far as I know, two of the properties of genetic code that make mutations so potentially powerful are the recursive nature and the scalability of genes that define certain features.

Because of the way DB code is run, we can't necessarily implement true recursiveness except for on a cycle-to-cycle basis, but why not add mutation types that, for example, copy an entire section of code and put in a new area, or put it directly following the original section. Or perhaps a whole gene is copied and then both genes are allowed to express themselves, but if one changes the original will still be there.


Let me know if I'm making sense. and also give me any input you have on these ideas.


« Last Edit: August 06, 2012, 03:15:34 PM by rwill128 »

Offline Botsareus

  • Society makes it all backwards - there is a good reason for that
  • Bot God
  • *****
  • Posts: 4483
    • View Profile
    • DJ Paul Kononov
Re: Smarter Gene Selection and Evolution
« Reply #1 on: August 06, 2012, 03:46:35 PM »
On mutating the mutation rates:

My rework of delta mutation is a little more powerful. For one, my delta mutations only happen on reproduction (unless it is going to effect point mutations) Another cool feature is that they mutate Mean and StdDev.

On the rest of the requests:

Most of these can be emulated by simply adding amplification, which is a key feature in my experiments. Amplification simply takes a snip of the DNA and copys it to a different location.

On Junk DNA:

Once again from my experiments, robots do effectively develop junk DNA given the right circumstances. see attachment.

This is all I have to say on this subject. Expect reply from other users.
« Last Edit: August 06, 2012, 04:25:02 PM by Botsareus »