"크로스 오버는"너무 많은 부모의 측면을 복용하고 어떤 방법으로 각각의 부모와 비슷한 자손을 생산하기 위해 그들을 사용의 일반적인 생각으로 잘 정의 된 연산자가 아닙니다. 따라서, 어떻게 크로스 오버를해야하는지에 대한 질문에는 실제로 올바른 대답이 없습니다.
실제로, 당신은 당신의 문제 도메인 및 인코딩에 대한 의미가 무엇이든해야한다. 바이너리 인코딩 된 개인의 두 개의 상위 재조합과 같은 것들로, 몇 가지 분명한 선택이 있습니다. 예를 들어, n 포인트 및 균일 크로스 오버와 같은 것들이 있습니다. 실제 값 인코딩의 경우 엄격한 생물학적 관점에서 볼 때 SBX와 같은 것이 있습니다. 오히려, 그들은 단순히 소정의 특성을 갖도록 설계되어있다. 마찬가지로, 순열 인코딩은 다시 부모에 어떤 기능 분석의 결과 특정 문제 영역에 대한 유전하게 이해하는 것이 많은 잘 알려진 사업자 (주문 크로스 오버, 사이클 크로스 오버, 에지 조립 크로스 오버 등)을 제공합니다.
당신은 같은 일을 할 무료입니다. 그 좋은 운영자 여부
child = new chromosome(L)
for i=1 to L
switch(rand(3))
case 0:
child[i] = parentA[i]
case 1:
child[i] = parentB[i]
case 2:
child[i] = parentC[i]
여부 여러 가지 요인에 따라 달라집니다 (문제 도메인의 해석 : 당신이 (진 같은 몇 가지 별도의 인코딩) 세 부모가있는 경우 다음과 같은 것이 같은 것을 할 수 인코딩 등),하지만 그것은 자식을 생산하는 완벽하게 합법적 인 방법입니다. AND, OR와 같은 부울 연산을 수행하는 등 다수의 부모에 대한 각 대립 유전자 값의 가중치 평균을 취하는 등보다 복잡한 방법을 직접 구현할 수도 있습니다. 원하는 경우 다른 구조화 연산자를 구축 할 수도 있습니다. 부모에게는 특정한 역할이 있습니다. 기본 Differential Evolution 알고리즘은 세 부모 a, b 및 c를 선택하고 a + F(b - c)
(일부 기능 F 포함)과 같은 업데이트를 대략적으로 자식에 해당합니다.