Author Topic: Mutation protection opinion  (Read 6647 times)

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Mutation protection opinion
« on: November 18, 2008, 01:55:16 PM »
Sorry, I've been away awhile and just now noticed this topic. I also apologize for not carefully reading all the proposals and the original DB3 topic. And I also apologize for posting in a separate thread - for some reason I'm not allowed to comment in the original one.

I voted for "another option" because I agree with Cyberduke - it is not clear what this option is trying to achieve. He proposed two different possibilities: 1) for us to make some DNA unmutable; 2) for bots to evolve protection of their DNA. I think these are vastly different goals and require vastly different approaches.

1) For us to make some DNA "protected" from mutation - this is for our convenience sake. Bots should suffer no penalty for that and should not even know that such protection exists. So clean metadata is the best approach here.

2) For bots to evolve protection of specific DNA regions. Seems like people are thinking that bots should be able to protect certain areas of their genome but not others. This is NOT how real DNA replicates. There may be some fancy exceptions, but in general organisms have a generic mechanism for DNA replication and mutation rate is the general feature of the organism. So, I'm completely against this idea!

3) For bots to evolve general rates of mutations. This already exists in the code - mutation rates can mutate and change. I think it would be fair to charge a little extra for lower mutation rates.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #1 on: November 18, 2008, 10:43:21 PM »
shvarz-

If you're against the idea of bots evolving mutation protection, then don't check that box in your mutation settings tab.
Personally, I'm for it, and I'm sure there are others.

Also, IMO, the mutation protection instruction provides the best flexibility and is most evolution-friendly. How many times have you seen a bot evolve to use cond...start...stop? And what about inline conditions? One's meta, the other isn't, and one's rarely used by evolution, the other isn't.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Mutation protection opinion
« Reply #2 on: November 19, 2008, 02:15:32 PM »
After following the development of this program for the last 6 years or so, I've come to the conclusion that a well-thought-out feature does not really need a tick-mark. We have plenty of those in options now, and most of them just confuse the hell out of new users. That's all they do.

I still have not heard a good reason for this "protection from mutations". Why do we need it? Give me one most important reason.

P.S: Maybe I'm missing something, but I thought that metadata or metatags are comments seen by us and by the program, but not by bots. In that light I'm confused by your last paragraph.

P.P.S: And, as mentioned in the other thread, the whole discussion is moot if we don't have a programmer to implement it. Eric is away doing some other fun things, and we don't have anyone else at the time.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #3 on: November 19, 2008, 06:08:56 PM »
Reason 1: There is mutation protection in nature- in fact, almost all mutations in nature cause a mutation in relatively unimportant genes that lead to, for example, formation of an extra limb, as opposed to missing important metabolism pathways.

Reason 2: It prevents bots from devolving their most important genes, which is what turns them into big berthas etc...

Reason 3: It facilitates the evolution of interesting behavior bots. For example, an antbot will not usually keep it's antbot-behavior intact after a while of evolution. Making the ant-behavior genes non-mutatable will allow the antbots to evolve and keep those genes.

Reason 4: Making it part of the DNA will allow the bot to evolve protection for it's most important genes, just like IRL evolution.

Also, IMO, DB should always provide flexibility and features over simplicity and instant entertainment. DB has a very specific niche in games, mainly for people already familiar with CS or Biology.

P.S By meta, I was referring to non-instruction code. So cond sort of counts as metadata, right? By the way, can mutations insert cond statements? I just realized I was never actually told this, and maybe that last paragraph was wrong.

P.P.S You're right, that's why that discussion died off.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Mutation protection opinion
« Reply #4 on: November 19, 2008, 07:36:29 PM »
Quote
Reason 1: There is mutation protection in nature- in fact, almost all mutations in nature cause a mutation in relatively unimportant genes that lead to, for example, formation of an extra limb, as opposed to missing important metabolism pathways.

I assume that this is the main reason, because you put it first. What can I tell you - it's just wrong. There is no mutation protection in nature, at least not in the way you are picturing it. DNA polymerase has no idea what DNA it is copying - it makes mutations everywhere with equal probability. If effect of the mutation happens to be very severe, then the organism just dies (maybe even at embryonic stage) and we don't see it. In this sense, DB already has mutation protection, as most of mutations that you see in evo-sims are mild mutations, not drastically crippling the bot.

Quote
Also, IMO, DB should always provide flexibility and features over simplicity and instant entertainment. DB has a very specific niche in games, mainly for people already familiar with CS or Biology.

I'm all for features, but at some point it just becomes a mess. In fact, it's already a causing a mess in IM - when I ran my sim in IM mode most of the bots that came in from internet died almost immediately, because conditions in different sims are so drastically different. What I'm saying is that there is a fine balance between usability and functionality. Saying "just add a tick-mark" does not automatically solve things.

cond, start stop etc all can be created through mutations and they can be moved around and deleted by mutations, so these are not meta-commands.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #5 on: November 20, 2008, 07:53:39 PM »
1:
They were not in any particular order.

Anyway, here's some evidence that no.1 is right, from a 5-minute search on wikipedia:

DNA evolution
Hypermutation

You could almost definitely find more on google.

2:
I consider that a good thing in IM. We need a diverse environment if we want speciation.

3:
How is cond-start-stop inserted? Are each of the three inserted in a random spot, or is one of the three inserted randomly? In either case, it doesn't sound like it'll do much, evolutionarily speaking. It'll just break something. But, making it a single instruction circumvents this- insert it anywhere, and it works instantly.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Mutation protection opinion
« Reply #6 on: November 21, 2008, 12:59:26 AM »
1: There's nothing there about protection from mutation. The hypermutation process exists only in higher vertebrates in cells of immune system. It's a nice example, but it's rather an exception than the rule. I don't see this as evidence for immediate implementation of this feature. I stand by my original statement - in general cells have no mechanisms to protect certain areas from mutation.

2. To some extent - yes, but it really gets out of hand. With a small number of people running IM, this is like having a bucket of water and a frying pan. Anything that can live in one, cannot live in the other, so might as well disconnect from IM - nothing is being transferred.

3. They can be inserted one by one randomly.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection opinion
« Reply #7 on: November 21, 2008, 01:17:21 AM »
Agreeing with shvarz, remember that there are such things as miscaraiges, and they can be caused by severe mutations that cause missing metabolic pathways, or whatever.  For instance, down syndrome is caused by an extra 21st chromosome.  There are no children with an extra #1 chromosome (the largest), not because it's impossible to produce an embryo with it, but because they die before they're born, very early in the pregnancy.  Severe mutations self destruct before we can observe them.

Generally, from what I know, cells can control their global mutation rate to a degree.  There is evidence of this.  But specific control of specific DNA sequences is not commonplace.  There is some modern argument that some sequences are more or less mutation prone than others (you can code the same amino acid in more than one way often times), which is something Eric's brought up.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #8 on: November 21, 2008, 02:32:36 AM »
1:
Dang- you're right. That wikipage had nothing to do with mutation protection. I know it used to, but they changed it, I guess. Sorry about that.
Anyway, here's an example off the top of my head: amino acids can be coded for in way more ways than necessary. In some cases, the amino acid will be coded for by DNA made from mostly As & Ts, while in other cases, the amino acid can be coded for using mostly Gs and Cs. Guanine and cytosine have 3 hydrogen bonds connecting them, while Adenine and thymine only have two. This makes G-C base pairs less susceptible to mutations and, sure enough, bacteria that dry out regularly and need to halt their metabolism have a far larger amount of Guanine and Cytosine in their DNA, to protect it from mutations, than their less hardy cousins.

Here's an article from science magazine on bacteria with fluctuating mutation rates.

And here is a wiki page that does discuss changes in mutation rates.

2:
That's why, IMO, there should be more than one internet mode. One for F1 settings, one for F2, one for IB, etc...
Even better would be to make the program automatically connect you to whoever has the most similar settings. I still think that's better than treating everyone like a newb.

3:
But how are they inserted?

Numsgil-
I agree, this isn't usually the case with eukaryotes, like us. But with bacteria, like those simulated in DB, varying mutation rates is not uncommon.

Offline ikke

  • Bot Destroyer
  • ***
  • Posts: 300
    • View Profile
Mutation protection opinion
« Reply #9 on: November 21, 2008, 04:13:15 AM »
I feel that in this discussion two things are mixed: organism mutation rate and mutation protection of specific genomes within an organism. Without having the expertise to add to the discussion I think the two should be separated, if for no ohter reason than that overall mutation speed is already implemented.

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Mutation protection opinion
« Reply #10 on: November 21, 2008, 05:05:19 AM »
Well, yes overall shvarz is right. Ofcource there are exeptions to the rule, as with your hypermutations link.

jknilinux, the most links you gave are about the changing of the ''overall'' mutation rates. Without pointing anywhere to the specific mutation rates. But go on and find some good links, this stuff could be interesting.

We already have overall mutation rates. Insert and deletions mutation rates can both change dramatically in a bot live.
Oh my god, who the hell cares.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Mutation protection opinion
« Reply #11 on: November 23, 2008, 12:30:03 AM »
1:
Quote
Anyway, here's an example off the top of my head: amino acids can be coded for in way more ways than necessary. In some cases, the amino acid will be coded for by DNA made from mostly As & Ts, while in other cases, the amino acid can be coded for using mostly Gs and Cs. Guanine and cytosine have 3 hydrogen bonds connecting them, while Adenine and thymine only have two. This makes G-C base pairs less susceptible to mutations and, sure enough, bacteria that dry out regularly and need to halt their metabolism have a far larger amount of Guanine and Cytosine in their DNA, to protect it from mutations, than their less hardy cousins.

First, the protective effect of such mechanisms is pretty small and is designed for very specific conditions. Second, we already have a similar mechanism in place. There are different mutation rates for different kinds of mutations. These rates can be mutated and, therefore, bots can evolve to protect their DNA.


3:
But how are they inserted?

There are insertion mutations that insert random stuff in random places.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #12 on: November 23, 2008, 10:09:36 PM »
1: another link: http://www.robots.net/article/2694.html

Also, there may not be many mechanisms to protect against DNA mutations, but there are definitely mechanisms to fix the damage from mutations before it is even noticed in the cell.

3:
Yeah, I know, I meant
a: is "cond" inserted randomly, then "start" during the next cycle, etc?
b: are "cond", "start", and "stop" inserted all randomly in 3 different places, in 1 cycle?
c: is it just inserted as a blob, "cond start stop", randomly?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Mutation protection opinion
« Reply #13 on: November 23, 2008, 10:36:29 PM »
Quote from: jknilinux
1: another link: http://www.robots.net/article/2694.html

Keep in mind you're talking about stuff that's cutting edge.  It hasn't been verified and accepted by the scientific community at large.  The central dogma to evolutionary theory is still that adaptations from mutations are random and non deterministic.

Quote
Also, there may not be many mechanisms to protect against DNA mutations, but there are definitely mechanisms to fix the damage from mutations before it is even noticed in the cell.

For our purposes in Darwinbots, it's assumed that those repair mechanisms are factored in to the final mutation rate.

Quote
3:
Yeah, I know, I meant
a: is "cond" inserted randomly, then "start" during the next cycle, etc?
b: are "cond", "start", and "stop" inserted all randomly in 3 different places, in 1 cycle?
c: is it just inserted as a blob, "cond start stop", randomly?

The stuff inserted is entirely random, and done one at a time.  That's on purpose. The program used to do things like you describe: insert whole genes into the genome.  But I changed it because I consider that to be cheating.  Right now, it's possible for 29 conds to get inserted before any starts are.  In fact it's probably more likely in a zero bot because when a point mutation changes something, it changes either the value or the type.  A value of 0 and a flow command type is a cond bp, so a 0 in the genome has to evolve in to a cond before it can evolve in to a start.

The cond start stop order isn't mandated in the code.  cond basically clears the cond stack, start and else AND the cond stack together, and turn on/off store statements based on the value, and stop clears the current state so store statements won't happen anymore.  They can appear in any order.  For the purposes of determining genes, a gene is basically all the code after and inside a cond statement, until the next cond or stop statement.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Mutation protection opinion
« Reply #14 on: November 24, 2008, 10:16:56 AM »
Thanks for the clarification, numsgil.

So, getting back to how easily evolution can use metadata- it sounds like it would be pretty difficult for ex-nihilo bots to use cond-start-stop efficiently if you can randomly insert 29 conds before you finally get 1 start. Having mutation protection be the same way, as in being metadata, should also be difficult for evolution to use, which is why I was against the metadata method. If bots use cond-start-stop just as well as any other instruction, then I'm okay with implementing mutation protection as metadata.