2

룰렛 휠 선택을 구현하려고합니다. 나는 약간의 의사 코드를 발견했으나 그것을 구현했습니다. 0 체력의 게놈에 대해서는 이해할 수없는 것이 있습니다.유전자 알고리즘 : 룰렛 휠 선택

내가 찾은 psudocode 내 관심사는 다음과 같다이

for each genome in population: 
    totalFitness = totalFitness + genome.fitness 

x = random(0, totalFitness) 

currentCount = 0 

for each genome in population: 
    currentCount = currentCount + genome.fitness 
    if currentCount >= x: 
     parent = genome 
     break 

했다 : 나는 다음과 같은 체력 점수 5 개 게놈을 갖고 있다고 위의 알고리즘, 확실히에만 G1을 바탕으로

G1 = 11 
G2 = 0 
G3 = 0 
G4 = 0 
G5 = 0 

유전 적 다양성을 죽일 수있는 선택을 할 수 있었다. ... 나는이 권리를 이해 했는가?

+0

글쎄, 그 인구를 감안할 때, 나는'G1'이 이겼고 나머지는 손실되었다고 말할 수 있겠지? 게놈에 전혀 적응력이 없다면 왜 그것이 생존 할 것이라고 기대합니까? – AakashM

답변

4

예, 올바르게 이해했습니다. 당신이 더 좋은 다양성을 원한다면, 개인이별로 좋지 않을 때 제로가 아니라 개인에게 부분적인 신용을 제공해야합니다.

이것을 달성하는 쉬운 방법 중 하나는 개인의 오류을 계산 한 다음 적합성을 1/(1 + 오류)로 만드는 것입니다. 그러나 당신의 개인에게 일부를 줄 수있는 방법을 찾으면 포인트가 문제를 해결할 것입니다.

피트니스 값의 크기를 조정할 수도 있습니다. 이제 선택의 기회는 적합도에 비례합니다.

1

정확하게 이해했습니다. 위의 답이 언급했듯이 0이 가능하지 않도록 피트니스 기능을 변경하는 것이 좋은 해결책입니다. 일반적으로 문제 의이 유형과 함께 룰렛 휠 선택은 최선의 선택이 아닙니다.

일부 인구가 점수가 0 인 유전 알고리즘을 사용하고 있지만 여전히 선택 과정에 포함하려는 경우 다른 선택 방법을 고려해야합니다. 순위 기반 룰렛 선택 방법은 훨씬 더 나은 문제에 맞게됩니다. 모든 게놈에 선택의 가능성을 줄뿐만 아니라 아웃 라이어가 룰렛을 지배하지 못하게합니다.

유전 알고리즘의 대부분의 구현 에서처럼 선택 사항은 문제의 영향을 크게받습니다. 때로는 0의 체력을 가진 게놈이 인구 집단에서 추려지기를 원할 것입니다. 그러면 위와 같이 룰렛 선택을 사용하게 될 것입니다.

+0

참. 사용할 수있는 다른 선택 메커니즘도 있습니다. 토너먼트 선발 *에 대한 좋은 경험을했습니다. – Matsemann

관련 문제