1

Matlab의 NSGA2 유전 알고리즘을 기반으로하는 두 가지 목적 함수를 작성하고 싶습니다. 그러나 객관적인 함수에서 염색체를 사용하지 않으면 입력란을 혼동하고 있습니다. 내 함수 호출이 evaluateObjective(chromosome(ii,:), V)이고 입력 할 매개 변수를 따르는 경우 염색체에 따라 객관적인 함수를 평가하는 방법을 모른다. 다목적 ​​유전 알고리즘 적합성 평가 Matlab

S = [0.9 0.8 0.3 0.3]; 
W = [0.9 0.7 0.4 0.1]; 
P = [15 17 18]; 
T = [13 14 13]; 
V=4; 

내 욕망 기능 :

Obj1: for all w belongs to W and p belongs to P 
summation of (w*p) 

Obj2: for all t belongs to T and s belongs to S 
summation of (t*s) 

그리고 목적 함수 : 그것은 당신이하고있는 정확하게 코드에서 분명하지 않다

function f = evaluateObjective(x, V) %x is the choromosome 
     % Objective function 1 
     sum = 0; 
     for i = 1 : V - 1 
      sum = sum - W((i))*P; 
     end 
     f(1) = sum; 
     % Objective function 2 
     sum = 0; 
     for i = 1 : V 
      sum = sum + S*S(i); 
     end 
     f(2) = sum; 

    end 

답변

0

, 그래서 수 ' 구체적이어야합니다. 그러나 :

f는 (X) = Y 함수 최적화 될이고, 함수는 Y 벡터에 문제합니다 (결정 공간 단위) X 벡터 매핑하면합니다 (대물 공간을)

염색체의 클로닝 및 돌연변이는 결정 공간에서 수행되는 반면, 평가는 문제의 객관적인 공간에서 수행됩니다. 즉, X가 염색체 인 경우, 평가 함수에 대한 염색체 자체를 전달하지 않고 객관적인 공간에서의 매핑을 수행합니다. 그

fitness = evaluate(X, ...) //wrong 
fitness = evaluate(f(X), ...) // correct 

특정 선택 때문에 염색체 자체에 의해 평가되지 않은 경우에만 비 지배 염색체의 NSGA2 알고리즘하지만 인구의 다른 염색체에 비해한다. 그래서 당신은 모든 모든 염색체를 전달하고 인구의 모든 x_i로부터 만 이들에 대한

all(f(X) <= f(X_i)) 

을 유지해야합니다.