RSS 2.0 Feed

» Welcome Guest Log In :: Register

Pages: (14) < [1] 2 3 4 5 6 ... >   
  Topic: Evolutionary Computation, Stuff that drives AEs nuts< Next Oldest | Next Newest >  

Posts: 2723
Joined: Sep. 2006

(Permalink) Posted: June 20 2009,08:21   

Quote (Bob O'H @ June 20 2009,02:14)
Quote (Zachriel @ June 19 2009,17:34)
Quote (Steve Schaffner @ June 18 2009,20:53)

And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring.

From much of this discussion, it's easy to see how many different ways there are to abstract an evolutionary process.

These are the primary attributes I've found in Mendel's Accountant:

* Population of Genotypes (genotypic fitness).
* Genotype modified by heritability and noise to Phenotype (phenotypic fitness).
* Genotype further modified for chance of reproductive success to Working Fitness.
* Number of offspring proportional to sqrt(Phenotype).
* Reproduction with mutation.
* Throw in more random factors, such as random death.

No recombination?  We know about mutational meltdown, and we also know that sex can mitigate the effect.

Oops. Good point. Haven't got that far in reconstructing the algorithm, but of course. Add it to the list of primary attributes.  

c...        Randomly mate one half of the population with members
c...        from the other half.

           dad = min(current_pop_size,
    &            1 + int(current_pop_size*randomnum(1)))

           do while(.not.available(dad))
              dad = mod(dad, current_pop_size) + 1
           end do
           available(dad) = .false.

           mom = min(current_pop_size,
    &            1 + int(current_pop_size*randomnum(1)))
           do while(.not.available(mom))
              mom = mod(mom, current_pop_size) + 1
           end do
           available(mom) = .false.

Looks like asexual recombination, i.e. two random individuals.

                 if(randomnum(1) < 0.5) then
                    parent = dad
                    parent = mom
                 end if

This looks like a bit of the actual recombination event:

if(.not. clonal_reproduction) then

<... snip ...>

do ch=1,haploid_chromosome_number

        ls0 = (ch - 1)*chr_length + 1
        ls1 = min(chr_length-1, int(chr_length*randomnum(1))) + ls0
        ls2 = min(chr_length-1, int(chr_length*randomnum(1))) + ls0

<... snip ...>

    &      hap_id = min(2, 1 + int(2.*randomnum(1)))

The rest of the code seems a lot more complicated than need be, but that might just be because of the dynamic linkage option. The command do ch=1,haploid_chromosome_number appears twice in the code. (Indentation doesn't seem to be consistent so it's hard to know where the beginning and ending of sections are to be found, though that might be my reader.)

I still think the problem with Mendel's Accountant is more basic, and breaks before that point.


You never step on the same tard twice—for it's not the same tard and you're not the same person.

  419 replies since Mar. 17 2009,11:00 < Next Oldest | Next Newest >  

Pages: (14) < [1] 2 3 4 5 6 ... >   

Track this topic Email this topic Print this topic

[ Read the Board Rules ] | [Useful Links] | [Evolving Designs]