2014-11-10 2 views
2

경험에 따르면, 가중치 할당 문제에 가장 적합한 크로스 오버 연산자는 무엇입니까? 특히, 나는 모든 가중치의 합이 1이되도록 강제하는 제약에 직면하고 있습니다. 현재는 균일 한 크로스 오버 연산자를 사용하고 있는데 합계를 1로 계산하면 합계가 나옵니다. 크로스 오버는 작동하지만이 방법으로 솔루션의 좋은 부분을 저장하고 수렴 할 수 있는지 확신하지 못합니다. 더 나은 해결책. 의견이 있으십니까? 사용자 지정 연산자를 작성해야하는 경우에는 문제가 없습니다.유전 알고리즘 - 가중치 할당을위한 최적의 크로스 오버 연산자

답변

2

초기 인구가 가능한 사람으로 구성된 경우 differential evolution과 같은 접근 방식을 시도해 볼 수 있습니다.

재조합 연산자는 세 (임의의) 경로를 필요로 및 제 3 벡터를 두 집단 벡터 사이의 가중 된 차이를 추가

offspring = A + f (B - C) 

당신은 [0.6에 고정 가중 계수 f을 시도 할 수 있었다; 2.0] 범위를 선택하거나 각 세대 또는 각 차이 벡터 (디더이라는 기술, 특히 잡음이 많은 목적 함수의 경우 크게 수렴 동작을 개선해야하는 기술)에 대해 임의로 f을 선택하여 실험하십시오.

자손이 자동으로 실행할 수 있기 때문에 이것은 꽤 잘 작동합니다.

조기 컨버전스 (예 : 일부 niching 알고리즘)를 피하려면 특별한주의를 기울여야합니다. 균일 교차는 전체 N 차원 공간을 탐색하고 함께 EDIT

반면, 부분 공간 H (초평면을 상기 재조합 제한 개인 Σ I I = 1, w 여기서 w I)는 원래 검색 공간의 가중치입니다.

질문 읽기 나는 가중치 합이 유일한 제약이라고 생각했습니다. 다른 제약이 있기 때문에, 자손이 자동으로 실행 가능하다는 것은 사실이 아닙니다.

어차피 가능한 용액 H에 여야

경우 A = (a 1하는 2 ...에서 N), B = (1 B .. b n), C = (c , ...C N)이 가능하다 :

  • Σ I I =
  • Σ 1 I B I = 1
  • Σ I C I = 1

그래서

Σ I (a I + F ( B I - C I)) = Σ I I + F (Σ I B i - Σ ic i) = 1 + f (1 - 1) = 1

자손은 H 초평면에 있습니다.

추가 제한 조건의 수/유형에 따라 제안 된 재조합 연산자를 수정하거나 페널티 기능을 기반으로 무언가를 시도 할 수 있습니다.

EDIT2

당신은 분석적 f의 "유효"범위를 결정할 수 있지만, 아마 이런 일이 충분하다 :

f = random(0.6, 2.0); 

double trial[] = {f, f/2, f/4, -f, -f/2, -f/4, 0}; 

i = 0; 
do 
{ 
    offspring = A + trial[i] * (B - C); 
    i = i + 1; 
} while (unfeasible(offspring)); 

return offspring; 

이, 나는 그것이 어떻게 작동하는지 확인 그냥 생각하지 않아요된다 .

+0

우선, 도와 주셔서 감사합니다. 그래서 당신은 DE 접근법을 제안 할 것입니다. 왜 당신은 그것이 단순한 균일 한 크로스 오버보다 효과가 있다고 생각하는지 설명 할 수 있습니까? 그리고 그렇습니다. 제 인구는 가능한 사람들로 구성되어 있습니다. 그러나이 접근 방식을 따르는 자손이 자동으로 가능해야하는 이유를 이해하지 못합니다. 실제로, 나는 또한 나의 경우에는 금지되어있는 음의 값을 얻을 수 있지만, 어쨌든 합계는 항상 1이 아닙니다. 어쩌면 나는 잘 이해하지 못했을 것입니다. – user2297037

+0

죄송합니다, 바로 당신입니다! 물론 실수를하기 전에! : P 그 시스템을 사용할 수없는 것은 유감입니다. 불행히도 부정적인 가중치는 금지되어 있으며 다른 제약 조건이 없습니다. 출구를 고치는 방법을 생각하십니까? 제약 조건을 만족하는 각 벡터에 대해 F의 무작위 값을 선택할 수는 있지만 많은 시간이 걸릴 수 있다고 생각합니까? 그렇지 않습니다. 페널티 기능에 대해 들었지만, 제 문제로 어떻게 도와 줄 수 있는지 잘 모릅니다. – user2297037

+0

페널티 함수를 사용하면 제한된 최적화 문제를 원래 목적 함수에 페널티 함수라는 용어를 추가하여 형성된 제한되지 않은 문제로 바꿀 수 있습니다. 페널티는 제약 조건의 위반 측정 값을 곱한 매개 변수로 구성됩니다. http://en.wikipedia.org/wiki/Penalty_method를보실 수 있습니다 – manlio