유전자 알고리즘의 룰렛 휠 선택. 인구를 먼저 정렬해야합니까?
-
09-09-2019 - |
문제
유전자 알고리즘에서, 룰렛 휠 선택 방법을 사용하여 크로스 오버를 위해 멤버를 선택할 때, 인구는 먼저 피트니스 순위별로 정렬해야합니까?
가능성은 다음과 같습니다.
- 피트니스를 올라가서 먼저 인구를 정렬하십시오
- 체력을 내림으로써 인구를 정렬하십시오
- 모집단을 분류하지 않고 룰렛 볼이 어디에서 떨어지게하십시오 ..
나는 어느 쪽이든 분류가 효과가 없을 것이라고 생각합니다. 다른 크기의 (피트니스) 슬라이스를 포함하는 휠에 무작위로 페블 착륙은 더 큰 슬라이스가 함께 그룹화되어 있는지 여부에 관계없이 정확히 동일한 결과 기회를 갖습니다. 그러나 나는 100% 확신이 아닙니다.
어떻게 생각해?
모든 세대의 종류를 수행해야 할 필요성은 알고리즘의 속도에도 영향을 미칩니다. 따라서 나는 엘리트주의를 사용하는 경우 정렬을 할 것입니다. 그러나이 경우에는 그렇지 않습니다). Google 등을 통해 결정적인 답변을 찾을 수 없으므로 감사합니다.
해결책
아니요, 실제로 정렬 할 필요는 없습니다. 당신은 고위급 멤버가 함께 그룹화되어 있거나 그렇지 않으면 (적어도 좋은 무작위 숫자 생성기 :)) 효과가 없다는 것이 정확합니다.
당신의 직관은 여기서 죽었습니다 - 통계적으로, 분류에 영향을 미치지 않을 것이며, 당신이 언급했듯이, 당신은 많은 시간과 노력을 낭비 할 필요가 없습니다!
다른 팁
엘리트주의를 적용하더라도 인구를 분류 할 필요가 없습니다.
최고의 N 개인을 찾는 데는 인구를 통한 단일 반복 만 있으면됩니다.
그러한 선택을 사용하는 경우 모집단을 정렬 할 필요가 없습니다.
그리고 당신은 또한 복잡성에 대해 옳습니다. 정렬은 n*log (n)이며, 유전자 알고리즘을 상당히 느리게 만듭니다 (그러나 여전히 복잡성은 다항식으로 남아 있으며 유전자 알고리즘의 중요한 특징).
다음은 내가하는 방법입니다 (그리고 학교에서 추가 포인트를 얻습니다) :
후크를 사용하여보다 일반적인 솔루션을 구현 - 돌연변이 전, 선택 후 등.
반복 횟수와 알고리즘의 속도 / 각 반복 속도를 측정하십시오.
고리로 정렬하십시오. 측정하다. 이제 후크를 비워두고 측정하십시오.
당신은 멋진 데이터를 얻고 직관이 당신에게 말하는 것을 실험적으로 확인할 것입니다.