Author Topic: Mutation protection  (Read 10457 times)

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection
« on: September 30, 2008, 09:06:58 PM »
Hi,

I just noticed that, whenever there is a mutation in real-life organism, it almost never occurs in a vital area, like a metabolic pathway, even though such vital areas make up most of our DNA. Therefore, most organisms must have some sort of mutation protection for their vital genes. So, for DB3, or maybe even the next version of DB2 (since it should be an easy change), we should add a feature where a coder can select which portions of the bot's DNA are vital for life, like the reproduction code, and those portions will be, say, ten times less likely to get a mutation. That way, we will never have to deal with something "evolving" until it's unable to eat. What do you think?

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Mutation protection
« Reply #1 on: September 30, 2008, 09:14:46 PM »
I love this idea.  I have loved this idea for years.  My very first DB post in the Newbie forum years ago was on this subject.

I favor a scheme where DNA can be decorated in some fashion, perhaps with in-line commands that increment or decrement the mutation probability for subsequent base pairs.  I would love to see a concrete and specific suggestion along these lines in the Suggestions forum and would give such high priority for implementation.  Such a discussion may already exist in fact if memory serves.  There has been much discussion on this subject in the past.
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection
« Reply #2 on: September 30, 2008, 09:23:26 PM »
My thinking for this is that Codules (essentially equivalent to functions in other languages) would have mutation multipliers assigned to them.  I might assign a cost (in nrg or time) during reproduction based on a composite mutation rate, but I'm not sure if that part mirrors real life properly.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Mutation protection
« Reply #3 on: September 30, 2008, 09:32:32 PM »
I favor an approach that is not tied to gene structure in any way such that any part of a gene, multiple genes, parts there of or any other sequence including non-coding sequences can be so decorated.  Hence my in-line suggestion in which the multiplier/de-multiplier itself is in fact a base pair.  In this way the mutation multiplier/de-multiplier itself can be subject to mutation and protected or increased mutation probability through its own decoration.
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection
« Reply #4 on: September 30, 2008, 10:25:30 PM »
I'm just not a fan of decorating the DNA stream with no-ops.  It's one thing for the text representation of the DNA to have that stuff done inline, but the final representation in code should not have metadata buried in with the base pairs, IMO.  I just don't like it.  Metadata should sit on top of the base pairs, in the same way that regulatory proteins sit on top of the DNA instead of inline with it.
« Last Edit: September 30, 2008, 10:26:19 PM by Numsgil »

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Mutation protection
« Reply #5 on: October 01, 2008, 07:16:24 PM »
I think that, in real life as well as DB, these mutations are seldom seen because they are vital, eg. a bot that evolves a cancerous trait or can't feed anymore will, quite naturally, cease to exist in quite a short time frame.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Mutation protection
« Reply #6 on: October 01, 2008, 07:41:54 PM »
Quote from: bacillus
I think that, in real life as well as DB, these mutations are seldom seen because they are vital, eg. a bot that evolves a cancerous trait or can't feed anymore will, quite naturally, cease to exist in quite a short time frame.
Actually, you see it all over in nature.  It's one of the causes of codon bias and long repeat sequences.   I.e. Selection has favored coding of our DNA (in conjunction with replication machinery) in a specific way using specific codons and sequences over other synonymous codons and sequences, which by their very nature encode meta-data influencing the mutation probability of those sequences.  Many evolutionary biologists think that a large percentage of all mutations may be self-directed in this way by the genome.
Many beers....

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection
« Reply #7 on: October 05, 2008, 09:38:17 PM »
So, why don't we add this feature? Everyone here seems to be for it.
« Last Edit: October 05, 2008, 09:38:44 PM by jknilinux »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection
« Reply #8 on: October 05, 2008, 10:06:31 PM »
It's mostly a question of "how".  There are lots of different ways of doing it, but arriving at a way that pleases everyone has been difficult.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Mutation protection
« Reply #9 on: October 05, 2008, 11:41:29 PM »
Quote from: EricL
Quote from: bacillus
I think that, in real life as well as DB, these mutations are seldom seen because they are vital, eg. a bot that evolves a cancerous trait or can't feed anymore will, quite naturally, cease to exist in quite a short time frame.
Actually, you see it all over in nature.  It's one of the causes of codon bias and long repeat sequences.   I.e. Selection has favored coding of our DNA (in conjunction with replication machinery) in a specific way using specific codons and sequences over other synonymous codons and sequences, which by their very nature encode meta-data influencing the mutation probability of those sequences.  Many evolutionary biologists think that a large percentage of all mutations may be self-directed in this way by the genome.
Oh, yeah, I remember reading something like that. "DNA for programmers aka. If you're a hammer, everything looks like a nail" or something like that.

Quote from: Numsgil
It's mostly a question of "how".  There are lots of different ways of doing it, but arriving at a way that pleases everyone has been difficult.
A good method to do this would be to create a sort of secondary DNA exempt from mutations, or using secondary mutation rates. Regular DNA is transferred to this using a command, sort of like creating an internal virus.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection
« Reply #10 on: October 06, 2008, 05:15:19 PM »
Quote from: Numsgil
It's mostly a question of "how".  There are lots of different ways of doing it, but arriving at a way that pleases everyone has been difficult.

Well, I like Ericl's idea of having the mutation rate of different sections being encoded in the DNA. This is the closest we have to real life, instead of having the first 50 BPs being magically un-mutatable, or something.

I'm afraid I might be misunderstanding Numsgil's counterargument, though. Are you saying we shouldn't have metadata in the DNA because of aesthetic reasons?


Anyway, I think that it doesn't really matter which implementation we choose right now. Having any implementation whatsoever should be enough to help evolution drastically.
If there's a big controversy on the subject, then let's just do the simplest implementation, and add the features later that can please everyone.  

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection
« Reply #11 on: October 06, 2008, 05:48:41 PM »
Quote from: jknilinux
Quote from: Numsgil
It's mostly a question of "how".  There are lots of different ways of doing it, but arriving at a way that pleases everyone has been difficult.

Well, I like Ericl's idea of having the mutation rate of different sections being encoded in the DNA. This is the closest we have to real life, instead of having the first 50 BPs being magically un-mutatable, or something.

I'm afraid I might be misunderstanding Numsgil's counterargument, though. Are you saying we shouldn't have metadata in the DNA because of aesthetic reasons?

It has to do with how I think DNA should be understoood.  In it's purest form I like to think of it as just a string of beads.  The DNA parser starts at the top of the bead string and reads to the end.  Fairly standard.  But what happens when you want to do some mutations or operations on the bead string?  Local mutations are pretty standard and easy to understand, but what about things like splicing two bead strings together?  Or removing a long section of beads?  Or inserting random garbage into the bead string.  Or having a virus insert viral material in to the bead string?

There are two options: 1.  A formal structure needs to be imposed on the beads (you must have a red bead after a blue bead before you can have another blue bead) to keep it in a consistant state.  This is how Darwinbots started.  There are still some relics from this line of thought in how viruses are constructed and inserted.  2.  No formal structure is assumed, and any bead can follow any bead and be a valid bead string.  This is appealing to me, at least, because when something like a zerobot evolves the ability to eat and move and reproduce, it's closer to a truely ex nihilo source instead of being a consequence of simulator provided structure.

But this second methodology breaks down if metadata (by which I mean tags that describe the DNA itself, such as changing the mutation rate for some basepairs or, if we had diploid DNA, changing the dominance/recessiveness of a gene) is itself actually a bead.  It might be that after a few splices the tag that identifies a change in mutation rate is now modifying entirely different DNA.  Which entirely defeates the purpose if you're a bot author and your goal is to make the reproduction gene, or whatever, non mutable.

Instead, there are two solutions that could work well.  The easiest is to give each bp a mutation multiplier.  The hard part is presenting it to the bot writer in a way that isn't confusing.  Another way is to find a natural logical grouping of DNA and have mutation probabilities work on that level.  Which is why I suggest it can work as part of codules.  It's different from the imposed structure of the original program, since an individual codule can contain any DNA combonation and still be valid, and codules can be arranged in any call structure imaginable and still be valid.

I realize the reasoning is a bit weak, but it's hard for me to communicate the reasoning.  It's just a gut feeling.
« Last Edit: October 06, 2008, 05:52:26 PM by Numsgil »

Offline Peksa

  • Bot Destroyer
  • ***
  • Posts: 118
    • View Profile
Mutation protection
« Reply #12 on: October 08, 2008, 04:26:04 PM »
how about a new sysvar? 10 .protect store would protect next 10 bps from mutations, either  from 90%, 95%, 100% or some other pre-set percantage of mutations. Both 10 and .protect would be suspectible to mutations. No meta DNA and simple enough. It would be pain to count the bps from programmers point of view but I think it would do well in evolved DNA.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Mutation protection
« Reply #13 on: October 08, 2008, 07:08:06 PM »
Would that decrease the total likelihood of mutations, or just shove the extra probability onto the rest of the DNA code?
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection
« Reply #14 on: October 09, 2008, 02:00:30 AM »
Peksa,

As far as I know, that example you gave IS metadata. This is basically what Ericl and I were for, but Numsgil noted that if the mutation protection is itself mutatable, then it is of no use to the coder to keep a certain stretch of DNA from mutating.

Numsgil,

Quote from: Numsgil
Another way is to find a natural logical grouping of DNA and have mutation probabilities work on that level.  Which is why I suggest it can work as part of codules.  It's different from the imposed structure of the original program, since an individual codule can contain any DNA combonation and still be valid, and codules can be arranged in any call structure imaginable and still be valid.

Would you mind explaining your codule method in greater detail? It sounds interesting.



---

Everyone:

Perhaps we should just implement the easiest one to code for now, and try to please everyone later? I think that this is a very important feature, and if we just start with a single crude implementation now, then maybe it will be perfected soon. Otherwise, I'm afraid it will get caught up in an endless debate on exact implementation, and will remain unimplemented forever, just like it has since Ericl made his first newb post on the subject so long ago.