Cumulative Selection Explained!

The battle over cumulative selection and Dawkins’ Weasel program has raged on for some months [years?] here at TSZ and across numerous threads. So can it possibly be that we now, finally, have a definitive statement about cumulative selection?

Mung: And whether or not my program demonstrates the power of cumulative selection has not been settled…

To which keiths responded:

keiths: Anyone who understands cumulative selection can see that it doesn’t, because your fitness functions don’t reward proximity to the target — only an exact match. The fitness landscapes are flat except for a spike at the site of the target.

So there you have it. You need a target and a fitness function that rewards proximity to the target.

Imagine my surprise when I discovered that I had said the exact same thing nine months ago.

Mung: Here’s what he Weasel program teaches us:

1.) In order to demonstrate the power of cumulative selection one must first define a target.

2.) In order to demonstrate the power of cumulative selection one must define a fitness function that increases the likelihood of the search algorithm to find the target relative to the likelihood of a blind search finding the target.

Now perhaps I have misunderstood keiths here. Perhaps he did not really say, or really mean, what I think he said, or what it appears like he said. So I’d like to hear his response.

Is it possible that keiths has agreed with me all along while expending every effort possible to make it seem otherwise?

Just so there’s no mistake, here he is again saying the same thing:

keiths: Mung,

Besides failing in your attempt to code a Weasel and contradicting yourself regarding your intent, you also failed to demonstrate the power of cumulative selection in your program.

1) Your program doesn’t evolve a phrase; it evolves individual letters, one after the other, latching each one when it matches.

2) There is a separate fitness function for each letter.

3) The fitness functions don’t reward proximity to the target — they only reward an exact match for a single character.

The only thing your program demonstrates the “power” of is latching, not cumulative selection.

It’s a remarkable display of incompetence.

Perhaps. But it served its’ purpose. keiths admits I was right all along. So incompetence? Perhaps not.

You need a target. You need a fitness function that rewards proximity to the target. Is that your story keiths, and are you sticking to it? Weasel out of this!

I predict keiths will try to make this about my program and what it does or does not demonstrate rather than his revelation about cumulative selection.

212 thoughts on “Cumulative Selection Explained!

  1. petrushka:

    If you read my posts you will know that I am not thrilled with keiths’ tendency to play the pit bull.

    Where “pit bull” = “someone who doesn’t back off just because petrushka’s ego is threatened and his hackles are raised”.

  2. Alan Fox,

    You could say the niche is the “environmental designer”.

    I can see how the niche can fix a feature in a population but how is the feature created in the first place?

  3. colewd: I can see how the niche can fix a feature in a population but how is the feature created in the first place?

    You’ve been at this a while. Give us your best understanding of how evolution would produce a new feature. Refer to Wagner, if you think it will help.

  4. phoodoo: If a fox breeder tries to select ten different features for breeding a fox, and each of those features is unhelpful to the other feature, or even in conflict with, then of course he is going to get a pretty scrambled and useless breeding program.

    Dimitri Belyaev 😊

  5. colewd:
    Alan Fox,

    I can see how the niche can fix a feature in a population but how is the feature created in the first place?

    That’s the job of variation: mutations, recombination, crossing over, etc.

  6. Alan Fox: That’s the job of variation: mutations, recombination, crossing over, etc.

    Colewd is an expert on these things. He knows more about them than Larry Moran.

    I’m surprised he asked the question. I’d like to know what he has in mind.

  7. petrushka: I’m surprised he asked the question. I’d like to know what he has in mind.

    Yes. I’d say if you can’t make the opposing case then you don’t really understand it.

  8. petrushka,

    You’ve been at this a while. Give us your best understanding of how evolution would produce a new feature. Refer to Wagner, if you think it will help.

    Doesn’t really help.

  9. Alan Fox,

    That’s the job of variation: mutations, recombination, crossing over, etc.

    So these need to work through trial and error of sequences until a feature that can be selected for is created? In some cased the creation of many new DNA sequences that code for proteins and regulatory sequences that build the feature?

  10. colewd: So these need to work through trial and error of sequences until a feature that can be selected for is created? In some cased the creation of many new DNA sequences that code for proteins and regulatory sequences that build the feature?

    New variation arrives in the gene pool at a steady rate. If the variation is beneficial, neutral or hardly deleterious (in the current niche) it may stick around. If something changes in the niche, there are rare alleles already in the gene pool which selection can work with.

    The fox breeding experiment I linked to above produced tame foxes rapidly (in 40 generations), then levelled off. It’s likely that the necessary variation was already in the population when the experiment began.

  11. Alan Fox,

    Doesn’t the stop-motion video of the giant agar plate in this thread help, either?

    It helps for bacterial adaption using existing enzymes.
    Does it work for new features of multicellular animals that require unique proteins and regulatory RNA’s?

  12. colewd: Does it work for new features of multicellular animals that require unique proteins and regulatory RNA’s?

    Can you explain what you mean by required?

    It sounds like you are implying that new features occurred intentionally.

  13. colewd: Does it work for new features of multicellular animals that require unique proteins and regulatory RNA’s?

    Not sure I understand what you mean by “unique” in this context. Any particular amino-acid sequence is unique. Change one amino-acid and you have a new unique protein. What’s the problem?

    All the biochemical heavy lifting has been done when you get to metazoa. The cool thing is, as you say, regulatory genes. Again, what’s the problem?

  14. Alan Fox: Not sure I understand what you mean by “unique” in this context. Any particular amino-acid sequence is unique. Change one amino-acid and you have a new unique protein. What’s the problem?

    All the biochemical heavy lifting has been done when you get to metazoa. The cool thing is, as you say, regulatory genes. Again, what’s the problem?

    But wouldn’t we see families of proteins if that happened?

    Oh, we do.

    Somehow such evidence doesn’t matter to your typical IDist, though.

    Glen Davidson

  15. Maybe I should point out that Wesley Elsberry has had a look at mung’s code here:

    [01] TARGET_PHRASE = "METHINKS IT IS LIKE A WEASEL"
    [02] TARGET = TARGET_PHRASE.chars
    [03] TARGET_LENGTH = TARGET.length
    [04] CHAR_SET = TARGET.uniq
    [05]
    [06] def make_baby
    [07] Array.new(TARGET_LENGTH).map {CHAR_SET.sample}
    [08] end
    [09]
    [10] def mutate weasel, trait
    [11] weasel[trait] = CHAR_SET.sample
    [12] end
    [13]
    [14] baby_weasel = make_baby
    [15]
    [16] mutations = 0
    [17] TARGET_LENGTH.times do |i|
    [18] while baby_weasel[i] != TARGET[i]
    [19] mutate(baby_weasel, i)
    [20] mutations += 1
    [21] puts baby_weasel.join
    [22] end
    [23] end
    [24] puts "And it only required #{mutations} mutations!"

    [Dr Elsberry has added numbering to facilitate commenting]

    He comments:

    Line 4 sets up the pool of characters that are possible results of mutation. Choice of this pool is also the choice of the problem space. Mung’s choice here is to limit this to the unique set of characters in a given target phrase. Let’s say that we were to use instead a target phrase of “111111111111111111111111111”. Mung’s code then outputs “And it only required 0 mutations!”. Limiting the pool of available characters makes this version incommensurate with “weasel” programs that properly set up their problem space as a complete set of alphabetic characters plus space.

  16. A commenter, KevinB writes:

    The main loop (from line [17]) shows just how irrelevant Mung’s program is. Rather than generating randomly mutated batches of strings, the program is merely iterating along the characters of the result string, running through a random stream of characters until a match occurs.

    (In fact, a physical implementation of Mung’s program in hardware exists, in the form of the IBM 1130 computer and its 1132 line printer. The printer would interrupt as each character on the print wheels came into position, and the processor would scan the print line and populate a bit map to cause the appropriate hammers to fire.)

    Mung’s program is not a Weasel (nor indeed any sort of mustelid.) I think it smells like a mephitid.

  17. KevinB:

    I think it smells like a mephitid.

    And so we have a name for Mung’s misbegotten program:

    The Skunk.

  18. Alan Fox: Maybe I should point out that Wesley Elsberry has had a look at mung’s code here:

    LoL. I’m [in]famous!

    So I reduced the character set from which mutations were drawn. So what? How does that make something not a case of cumulative selection? It’s like saying there was never any cumulative selection in biology until we had exactly 64 codons.

  19. Well, I was going to call it something else, but my next bit of Weasel coding will be renamed to SkunkWeasel.

  20. Mung: LoL. I’m [in]famous!

    So I reduced the character set from which mutations were drawn. So what? How does that make something not a case of cumulative selection? It’s like saying there was never any cumulative selection in biology until we had exactly 64 codons.

    I’m not going to get involved in Weasel wars. Dawkins wrote his program nearly forty years ago. His biomorphs are a much clearer illustration of how evolution works, with the operator acting as selective breeder.

  21. Hey keiths, is mutation required for cumulative selection? How much mutation must there be before a program is no longer a Weasel program?

  22. Alan Fox: His biomorphs are a much clearer illustration of how evolution works, with the operator acting as selective breeder.

    People knew about selective breeding long before Dawkins. How does his biomorph program demonstrate the power of cumulative selection?

  23. keiths: And so we have a name for Mung’s misbegotten program:

    The Skunk.

    I literally laughed out loud at that one.

    On a bit more serious note, I’m not a coder at all, I can barely do basic HTML so I’m not one to complain about the quality or programming. For all I know, Mung’s code could be really fine, provided it was trying to do something entirely unrelated to selection or evolution.

    But I do understand at least a bit about how evolution works. I could not sit down and program something that did not properly implement a mutation rate and something like an environmentally determined selection process. I could not be satisfied with my work until I had done at least that. But maybe that’s difficult to code, I imagine coding an environment requires a physics engine of some sort (ala BoxCar 2D), so a simplified approximation of an environment, as in an analogy to it could suffice.

    How would that look? Well, maybe instead of a simulation of an actual 2 or 3-dimensional world with physical laws, an abstraction could be made. That abstraction could be a random string of symbols, itself slowly and randomly changing. And the organism could be another string, which is of course mutating. So there’s selection for the organism-string, to match the environment-string.

    The bigger the difference between organism and environment, the less offspring-strings that organism-string makes.

    Now, here is where something that interests me with regards to simulations of evolution comes in. I don’t know of any simulation that properly implements an abstraction of the ability of organisms to replicate themselves.

    As far as I know, all simulated organisms are simply copied to the next generation, then mutated a bit (or some kind of analogy to sex with recombination is included). And this ability to copy it not part of the simulation, it’s just something that’s hardcoded into the program.
    For example, in the BoxCar 2D program, even a car without the ability to move at all, that just happens to tip over a few pixels on start, still gets copied to the next generation if it happens to have higher fitness than other cars.

    What I’d want to see is the capacity for replication itself to be subject to evolutionary constraint. Perhaps even modification. The organism has to meet certain criteria, which could still be abstractly defined, to even be able to replicate in the first place. But that abstraction should derive from the simulated phenotype. It might not be primarily environmentally constrained, in the sense that replication capacity should not be contingent on high fitness (degree of match to the environment-string), it could be something mostly different, with only weak relation to environmentally determined fitness.

    I wonder if it is possible to actually have part of the code that copies the organism-string, be part of that string. Such that if certain mutations happen in that string, they might end up actually breaking the part of the code that is responsible for the copying process. Maybe the copying-responsible code could even contain the mutation rate, and the mutation rate could itself, therefore, potentially mutate, because it is part of the organism-string.

  24. Mung: People knew about selective breeding long before Dawkins. How does his biomorph program demonstrate the power of cumulative selection?

    It iteratively brings about in increasing degree, that which is being selected for.

  25. Mung: LoL. I’m [in]famous!

    So I reduced the character set from which mutations were drawn. So what? How does that make something not a case of cumulative selection?

    Nobody is saying that that is what is making your program not reproduce an instance of cumulative selection. Rather, that one was pointed out simply because it is silly.

  26. Rumraket,

    I wonder if it is possible to actually have part of the code that copies the organism-string, be part of that string. Such that if certain mutations happen in that string, they might end up actually breaking the part of the code that is responsible for the copying process.

    Sure, and it’s been done. See Digital Organism.

  27. Rumraket,

    The article ends up mentioning Avida in brief, how is replication handled in Avida?

    Each organism runs on its own virtual machine, with a memory space that is protected from being written to by other organisms. To replicate itself, an organism allocates more memory, makes a copy of itself in that memory, and then declares the copy to be an offspring, whereupon Avida takes the offspring, assigns it to a new virtual machine, and begins executing it.

    Mutations happen during the replication process.

  28. Alan Fox,

    Alan Fox: Dimitri Belyaev

    Geez Alan, it might be a little useful if you read some prior posts. THIS experiment was what I was referring to when I said, the problem would exist as soon as the breeder began selecting for MULTIPLE traits, some which would clearly be contradictory, see? Now you are referring me right back to this, to show me how if you only select for ONE trait you can get specific results??

    This example is the EXACT opposite of what is claimed by evolution, you still don’t get that. In evolution, aggressive foxes and tame foxes both can reproduce for different reasons. Tall ones and short ones can. Smart ones and dumb ones. A tall dumb one might be better than a small smart one-sometimes! You throw everything into the mix of what can “survive” and what you get is a scrambled mix of all. Precisely NOT specialization.

    And you response is to link back to this. Holy cow.

    Remember the niche Alan! The niche means ANY thing that survives works. Doesn’t matter how or why.

  29. FWIW, we had issues with a skunk weasel living under our porch a couple of years ago. The thing had apparently latched onto the foundation. We couldn’t get rid of the damn thing, but eventually it went away on its own.

    Maybe its target home moved or something.

  30. Mung: People knew about selective breeding long before Dawkins. How does his biomorph program demonstrate the power of cumulative selection?

    Here’s Dawkins’ explanation from The Blind Watchmaker:

    The essential difference between single-step selection and cumulative selection is this. In single-step selection the entities selected or sorted, pebbles or whateverthay are, are sorted once and for all. In cumulative slelection, on the other hand, they ‘reproduce’; or in some other way the results of one sieving process are fed into a subsequent sieving, which is fed into into…and so on. The entities are subjected to selection or sorting over many ‘generations’ in succession. The end-product of one genration of selection is the starting point for the next generation of selection, and so on for many generations.

  31. Alan Fox: I’m not going to get involved in Weasel wars.

    Don’t drink the KeithsKoolaid. It’s not about Weasel, it’s about cumulative selection.

    Now if you think Weasel-style search algorithms are the only way to demonstrate the power of cumulative selection I will indeed grant you a deferment from the draft into the wars.

  32. keiths:
    Rumraket,

    I wonder if it is possible to actually have part of the code that copies the organism-string, be part of that string. Such that if certain mutations happen in that string, they might end up actually breaking the part of the code that is responsible for the copying process.

    Sure, and it’s been done.See Digital Organism.

    Thomas Ray’s Tierra comes close to what Rumraket is asking for. The genomes code for replication. Each run does start with at least one virtual organism that can replicate, after which a variety of replication styles evolve including parasitism and hyper-parasitism.

  33. Patrick: Here’s Dawkins’ explanation from The Blind Watchmaker:

    Yes, keiths couldn’t even get single-step selection right. My program is not an example of single-step selection as Dawkins uses the term. But keiths is never ever wrong.

  34. Patrick: The essential difference between single-step selection and cumulative selection is this. In single-step selection the entities selected or sorted, pebbles or whateverthay are, are sorted once and for all. In cumulative slelection, on the other hand, they ‘reproduce’; or in some other way the results of one sieving process are fed into a subsequent sieving, which is fed into into…and so on. The entities are subjected to selection or sorting over many ‘generations’ in succession. The end-product of one genration of selection is the starting point for the next generation of selection, and so on for many generations.

    Is that passage a good description? I mean, is cumulative selection just iterative single-step selection (i.e., selection not “sorted once and for all”) as is suggested here?

  35. Patrick, all that Dawkins says in that quote is what the essential difference is between single-step selection and cumulative selection. He does not say [there anyways] that his biomorph program demonstrates the power of cumulative selection, and tht was the question I had asked. I guess he just wants us to assume it.

    The entities are subjected to selection or sorting over many ‘generations’ in succession. The end-product of one generation of selection is the starting point for the next generation of selection, and so on for many generations.

    Do we agree that a GA could implement this process of selection/sorting without demonstrating the power of cumulative selection?

    So this process may be necessary but not sufficient.

  36. Rumraket: It iteratively brings about in increasing degree, that which is being selected for.

    I don’t think it does.

    So I could imagine any shape I desire and I could use his biomorph program to iteratively select for that shape and eventually the shape I was selecting for would appear on the screen?

  37. keiths: What Mung’s program does is what Dawkins refers to in the Blind Watchmaker as “single-step selection”.

    Wrong again boy wonder.

  38. keiths:
    Rumraket,

    Each organism runs on its own virtual machine, with a memory space that is protected from being written to by other organisms.To replicate itself, an organism allocates more memory, makes a copy of itself in that memory, and then declares the copy to be an offspring, whereupon Avida takes the offspring, assigns it to a new virtual machine, and begins executing it.

    Mutations happen during the replication process.

    That’s impressive, didn’t know this. I’ve some additional respect for Avida now. I’m hard pressed to see how it could be made any more biologically realistic without massively influencing processor resources. No wonder IDcreationists try to avoid it at all costs.

  39. walto: I mean, is cumulative selection just iterative single-step selection (i.e., selection not “sorted once and for all”) as is suggested here?

    Good question.

    Here’s another. Can single-step selection be implemented in a GA?

    IOW, if all the elements of a GA are present but the fitness function only rewards an exact match on the target.

    I don’t see why not. Maybe that will be my next version of a Weasel program. 🙂

  40. Mung: I don’t think it does.

    Well it’s pretty trivial to see for yourself. For example, if you wish to see really big claws, just keep selecting those with bigger claws.

    Mung:So I could imagine any shape I desire and I could use his biomorph program to iteratively select for that shape and eventually the shape I was selecting for would appear on the screen?

    Okay I see what you’re getting at. No, of course there are going to be some basic constraints that prevents the program from just brining about anything and everything. At a basic level the program just makes lines in 2 dimensions. Obviously you’re not going to be able to select a sphere to appear somehow. That doesn’t mean the program doesn’t demonstrate how cumulative selection works, it just means not everything imaginable is selectable.

    C’mon Mung you can figure this stuff out yourself. Why the silly contrarianism?

  41. I’ve written a real Weasel program as a real GA. It’s true. But it does not seem to be finding the target.

    I think it will be difficult for me to convince some promising young biology student that it demonstrates the power of cumulative selection. How many generations should I let it run before I give up on it? One run is in 8 figures now and a second is in 7 figures.

    What is the official keiths limit at which we can reject the hypothesis of cumulative selection for these runs? Or is cumulative selection always present, even if not visible?

Leave a Reply