Многопредметная оценка пригодности генетического алгоритма Matlab

#matlab #artificial-intelligence #genetic-algorithm #fitness

#matlab #искусственный интеллект #генетический алгоритм #Фитнес

Вопрос:

Я хочу написать две целевые функции на основе NSGA2 генетического алгоритма в Matlab, однако я путаю входные хромосомы для оценки моих целей, а в моей целевой функции хромосомы не используются, я не знаю, как оценить целевую функцию в соответствии с хромосомами, в которых находится мой вызов функции evaluateObjective(chromosome(ii,:), V) , и у меня следующие параметрыдля ввода.

 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 
  

Ответ №1:

Из кода неясно, что именно вы делаете, поэтому я не могу быть конкретным. Однако:

Если f (X) = Y является функцией, подлежащей оптимизации, функция отображает вектор X (в пространстве решений) задачи в вектор Y (в целевом пространстве)

Клонирование и мутация хромосом выполняются в пространстве решений, в то время как оценка выполняется в объективном пространстве проблемы. То есть, если X является хромосомой, вы передаете в функцию оценки не саму хромосому, а ее отображение в объективном пространстве. это

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

Алгоритм NSGA2, в частности, выбирает только недоминированные хромосомы, поэтому хромосома оценивается не сама по себе, а по сравнению с другими хромосомами в вашей популяции. Итак, вам нужно передать все все хромосомы и сохранить только те, для которых

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

для каждого X_i в популяции.