Code center > Darwinbots3
Mutation protection
jknilinux:
--- Quote from: Numsgil ---I don't like the idea of any sysvar or command influencing mutation rates (of a subset of the DNA anyway). Having it use the stack and sysvars is not an improvement over just using a command.
What I'm thinking, in the short term, is something like this:
--- Code: ---[x0]
cond
*.nrg 5000 >
start
50 .repro store
stop
[/x0]
--- End code ---
The [] tags would let you specify meta data, that applies for all base pairs until you find the matching closing [/] tags. (In this example, the x specifies a mutation multiplier, with 0 meaning mutation rates for this section get multiplied by 0). It would get "compiled" into something like this:
--- Code: ---(type: flow logic) (value: 1) (mutation multiplier: 0)
(type: sysvar) (value: 236 (or whatever .nrg is)) (mutation multiplier: 0)
etc.
etc.
--- End code ---
That is, right now the DNA is stored in memory as a pair of numbers: one describes the type, the other describes what it actually is (cond, start, stop, else share a type but have different values). To that tuple I would add a float that describes a mutation multiplier. It defaults to 1.0, but can be modified by special tags. If we really want, we could have these multipliers subject to mutations as well. I'm not sure I like the idea (it would get really messy with evolved DNA), but I wouldn't be against it either.
It's not what I'll probably do for DB3, but I think it addresses both Eric and my concerns, with the added benefit that it can be done right now. Not sure if it addresses your concerns, though.
--- End quote ---
Well, if it's true that everyone else likes this idea, then I like this idea. Like I said, I think the most important thing is to get it coded. Once we've done that, then we can add features to make everyone happy. I would hate for this feature to go the way of Duke Nukem Forever.
EDIT: So, everyone, which method for Mutation Protection are you in favor of?
1: Numsgil's idea of having codules of the form "[xmutation_rate] ...protected BPs... [/xmutation_rate]"
2: Ericl's idea of having a new instruction, of the form "number_of_lines_to_protect .protect store"
3: A hybrid idea, like my MPPI instruction (Feel free to add another, but I'm not aware of any)
4: Something totally different
TELL US WHAT YOU THINK [a href=\'index.php?showtopic=2947\']HERE![/a]
I think the most important problem with this idea is that evolution will have a hard time taking advantage of it, since it seems more delicate than "10 .protectx store".
And besides, I don't see anything this can do that 10 .protectx store can't, or vise-versa. So, if they're equivalent, why not implement the easier one? See below.
--- Quote from: Numsgil ---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.
--- End quote ---
Sorry for bringing up an old post, but why would having metadata in the DNA break the second methodology? If you're afraid the Mutation Protection instruction will get separated from it's exon, then just "glue" it there, like in my MPPI-based idea above.
But, like I said, if everyone else likes this idea, I like it.
Maybe I'm just too tired to think clearly about it!
Bacillus-
In that case, it's only dependent on the cell having, like, 5 ATP per month, to run that enzyme whenever a stray UV ray hits that DNA. I think that's negligible.
Besides, in relation to your original comment:
--- Quote ---I don't like the idea of changing the rate of mutation too much. If anything...
--- End quote ---
The rate of mutation can change quite quickly in a population. For example, if memory serves me correctly, the average mutation rate in a bacteria culture will go up as the amount of food decreases, since the bacteria have "evolved to evolve" to find new food sources.
Numsgil:
--- Quote from: jknilinux ---
--- Quote from: Numsgil ---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.
--- End quote ---
Sorry for bringing up an old post, but why would having metadata in the DNA break the second methodology? If you're afraid the Mutation Protection instruction will get separated from it's exon, then just "glue" it there, like in my MPPI-based idea above.
But, like I said, if everyone else likes this idea, I like it.
Maybe I'm just too tired to think clearly about it!
--- End quote ---
I have no idea I've been a bit burned out lately, and my mind's felt like mush trying to work through anything left brain, so the reasoning might be full of holes.
ikke:
Maybe I'm the outcast here, but I am not in favour of coding mutation rates. To me there two ways to mutaton protection: evolve it or program copy protection. In my evo sims the most fatal mutation I can track with the graphs is a breakdown of the reproduce condition, resulting in exploding population, and certain death of all the offspring (I use kilobody nrg with low energy levels, so a veggie needs a minimum body size to survive). I have seen strains evolve that don't break down explosively but bubble at regular intervals. Also I noticed that the explosions occur less and less often. With my current zerobot evolution I haven't seen this behaviour alltogether, which says something about the strenght of natural vs manmade code. I would be sad to see this gone by creationist intervention.
As for coding copy protection I would favour a command that allows for checking gene equality. A but has two copies of a gene and checks for equality. Or a gene has a a stored vs actual hashvalue, whatever. Die on inequality, or maybe even allow repairing if genes are identified as defects and the coder is smart enough to program the bot to figure out how to tget back to normal...
jknilinux:
--- Quote from: ikke ---Maybe I'm the outcast here, but I am not in favour of coding mutation rates. To me there two ways to mutaton protection: evolve it or program copy protection. In my evo sims the most fatal mutation I can track with the graphs is a breakdown of the reproduce condition, resulting in exploding population, and certain death of all the offspring (I use kilobody nrg with low energy levels, so a veggie needs a minimum body size to survive). I have seen strains evolve that don't break down explosively but bubble at regular intervals. Also I noticed that the explosions occur less and less often. With my current zerobot evolution I haven't seen this behaviour alltogether, which says something about the strenght of natural vs manmade code. I would be sad to see this gone by creationist intervention.
As for coding copy protection I would favour a command that allows for checking gene equality. A but has two copies of a gene and checks for equality. Or a gene has a a stored vs actual hashvalue, whatever. Die on inequality, or maybe even allow repairing if genes are identified as defects and the coder is smart enough to program the bot to figure out how to tget back to normal...
--- End quote ---
Your copy protection just sounds like a universal halved mutation rate for that species, assuming every gene has a duplicate error-checker version.
If you want only some genes to have copies, then it's basically regular mutation protection only for those certain genes, but you're limiting the mutation protection to either the regular mutation rate or 1/2 the regular mutation rate, if I understand you correctly.
Also, this will be an added feature, not a requirement, so you could easily continue your evolved mutation protection sims by simply switching the feature off.
Thanks for the input, and let me know if I missed something.
jknilinux:
I'm sending this topic over [a href=\'index.php?showtopic=2947\']here[/a], mainly so I could add a poll, but also because it's more of a suggestion for DB2 than DB3. Sorry for any inconvenience!
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version