저는 C++에서 유전자 알고리즘을 프로그래밍하고 있으며 GA'a 연산자 (선택, 교차, 돌연변이)를 수행하는 모든 종류의 방법을 검색 한 후에 의심의 여지가 생겼습니다. 초기 인구가 500 명이라고 가정 해 보겠습니다. 내 선택은 최고 적합도를 기준으로 상위 20 %를 얻는 것으로 구성됩니다. 그래서 나는 100 명의 개인을 짝 지어줍니다. 내가 크로스 오버를 할 때 나는 2 명의 아이들을 데리고 50 %의 생존력을 얻습니다. 여태까지는 그런대로 잘됐다. 나는 돌연변이를 시작하고 모든 것은 괜찮습니다. 이제 차세대를 선택할 때, 나는 많은 수의 아이를 가지고 있음을 봅니다 (이 경우, 알고 싶다면 4950). 이제 GA를 실행할 때마다 모든 어린이를 차세대로 보내면 세대당 개인 수가 기하 급수적으로 늘어날 것입니다. 따라서 초기 인구의이 범위를 벗어나지 않고 새로운 세대를 성취 할 어린이를 선택하는 방법이 있어야합니다.유전자 알고리즘 신세대 기하 급수적으로 증가
내가 여기 부탁 해요 것은 어쨌든 내가 너무 많은 아이들을하지 않는 짝짓기를 또는은 어떻게 든 (아마도 감소)을 선택해야 새로운 세대를 채우기 위해 부모가 아이를 선택하는있는 경우입니다 끝.
감사합니다 :) GA에 대한 일반적
20 % 대신 상위 100 개를 선택해보세요. 아니면 상위 500, 또는 상위 1000 ...? 또는 생성 된 어린이 중 500 명을 무작위로 선택하십시오. – AndyG
고정 전화 번호를 받으면 선택에 제한을 가하는 것처럼 보입니다. 따라서 나는 상위 20 %를 선호합니다. 이 경우 100이 되겠지만 init 인구가 5000 인 경우를 상상해보십시오. 1000 대신에 100을 사용합니다. 나는 무작위로 많은 수의 아이들을 데리고 다니기가 쉽지 않습니다. 나는 모른다. 나는이 "문제"를 예방할 수있는 잘 정의 된 방법이 있어야한다고 생각한다. – RubenC
** close-vote ** :이 질문은 stackoverflow에 적합하지 않으며 알고리즘 및 데이터 구조 개념에 관한 질문은 [programmers SE] (http://programmers.stackexchange.com)에 있습니다. –