Zachriel

Posts: 2572 Joined: Sep. 2006
|
| Quote (Bob O'H @ June 20 2009,02:14) | | Quote (Zachriel @ June 19 2009,17:34) | | Quote (Steve Schaffner @ June 18 2009,20:53) | <snipped>
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 else 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 ...>
if(dynamic_linkage) & 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.
-------------- The struggle against ignorance is to the end of time. But it is said that if you die in tard, you will be reborn in Tardhalla.
|