Code center > Darwinbots3

Mutation protection

<< < (3/7) > >>

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.
--- End quote ---

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.  

Numsgil:

--- 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.
--- End quote ---

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?

--- End quote ---

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.

Peksa:
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.

bacillus:
Would that decrease the total likelihood of mutations, or just shove the extra probability onto the rest of the DNA code?

jknilinux:
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.
--- End quote ---

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.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version