3

나는 룰렛 휠 선택을 사용하여 유전 알고리즘을 구현하려고하고 있는데, 만약 우리가 아이를 낳을 때 같은 부모가 선택된다면 어떻게 될까? 결과적으로 자녀가 부모와 같기 때문에 우리는 여전히 교차를합니까?룰렛 휠 셀렉션이 동일한 부모를 반환하면 어떻게 될까요?

breedChild: function() { 

    //blah blah blah 
    //blah blah blah 
    //blah blah blah 

    var mom = this.rouletteWheelSelection(), 
    dad = this.rouletteWheelSelection(); 
} 



rouletteWheelSelection: function() { 
    var total = 0, 
    //totalFitnessScore is precalculated, and represents the sum of all the fitness scores in current population 
    threshold = totalFitnessScore * Math.random(); 

    for (var i = 0; i < genomesArr.length; i++) { 
    total += genomesArr[i].fitnessScore; 

    if (total >= threshold) break; 
    }; 

    return genomesArr[i]; 
} 
+0

이것은 * 프로그래밍 * 문제가 아닙니다. 귀하의 질문은 프로그래밍 행위 나 프로그래밍에 사용 된 도구와 관련이 없습니다. – meagar

+0

@meagar 알고리즘에 대한 설명을 요구하는 질문입니다. 주제에 관한 것입니다. –

답변

3

크로스 오버는 차이가 나지 않을 것입니다,하지만 같은 부모를 선택하면 부모가 더 많은 계산이 경우의 크로스 오버를 수행하는 것보다 것이다 생산 된 각 자녀에 대해 동일 검사하면 너무 자주해야 - 경우 그것은 당신의 유전자 풀이 너무 작아서 효과적인 결과를 낼 수 없기 때문입니다. 부수적으로, 돌연변이가 도입되면 아이는 부모와 다를 수 있습니다.

+0

그게 내가 생각한거야. 고마워! –

+1

부모님이 짝짓기를하지 못하도록하기 위해 근친상 간염 예방법을 사용하는 GAS가 있습니다. CHC는 아마도 가장 잘 알려진 방법 일 것입니다. 따라서 동일한 부모를 두 번 선택하는 특수 케이스에 대해 걱정할 필요는 없지만이를 더 큰 다양성 보존 체계의 일부로 방지하는 알고리즘을 개발하는 것이 좋습니다. – deong