2

피트니스 비례 확률을 얻었을 때 피트니스 (피트 니스 '?)와 관련하여 질문이 있습니다. 회원의 컨테이너 먼저 가장 높은 체력으로 분류 될 경우, 다음이 유사한 코드를 수행일부 피트니스가 0 일 때 적당 비율 선택

for all members of population 
    sum += fitness of this individual 
end for 

for all members of population 
    probability = sum of probabilities + (fitness/sum) 
    sum of probabilities += probability 
end for 

loop until new population is full 
    do this twice 
     number = Random between 0 and 1 
      for all members of population 
       if number > probability but less than next probability then you have been selected 
      end for 
     end 
     create offspring 
end loop 
나는 무작위로 생성 된 회원들과 손에 의해 하나의 반복을 통해 가서 내가보고하고

내 문제는 내가 가지고있는 몇 가지 구성원의 적합성을 0으로 설정하지만 해당 구성원의 확률을 얻으면 마지막 0이 아닌 구성원과 동일한 확률을 유지합니다. 0이 아닌 확률을 0 확률에서 분리 할 수있는 방법이 있습니까? 나는 가장 높은 적합성에 기초하여 분류하더라도, 마지막 0이 아닌 구성원은 0 확률과 동일한 확률을 가질 것이라고 생각했습니다.

답변

2

이 예를 생각해 우리가 선택하려고하는 number = Random between [0;1[ 경우 지금

individual fitness(i) probability(i)  partial_sum(i) 
    1   10  10/20 = 0.50       0.50  
    2   3   3/20 = 0.15 0.5+0.15    = 0.65 
    3   2   2/20 = 0.10 0.5+0.15+0.1   = 0.75 
    4   0   0/20 = 0.00 0.5+0.15+0.1+0.0  = 0.75 
    5   5   5/20 = 0.25 0.5+0.15+0.1+0.0+0.25 = 1.00 
      ------ 
      Sum 20 

개별 i 경우 : 개인이 피트니스 0있다

individual   condition 
    1   0.00 <=     number < partial_sum(1) = 0.50 
    2   0.50 = partial_sum(1) <= number < partial_sum(2) = 0.65 
    3   0.65 = partial_sum(2) <= number < partial_sum(3) = 0.75 
    4   0.75 = partial_sum(3) <= number < partial_sum(4) = 0.75 
    5   0.75 = partial_sum(4) <= number < partial_sum(5) = 1.00 

경우 (예 : I)가 될 수 없다 선택 조건 (예 : I)은 관련 조건이 0.75 <= number < 0.75입니다.