Я использую Matlab и Оптимизацию кита Алгоритм для оптимизации моей системы измерения 11. Есть некоторые ограничения равенства, которые мне нужно сохранить (т.е. x (2) -x (1) -90,х (4) -x (3) = 60 ...).Я знаю, что с этими типами алгоритмов оптимизации необходимо использовать штрафные функции для решения ограниченных вопросов (согласно статье в той же ссылке).
Моя целевая функция называется House_cost, и я добавил условие штрафа внутрифункция стоимости.
if((x(2)-x(1))~= 90)
C=inf;
end
Где C - моя стоимость, я также попытался установить ее на действительно большое значение. Остальные границы и параметры установлены следующим образом:
dim = 11;
Max_iteration =1000;
SearchAgents_no = 30;
lb = [1 1 1 1 2 1 50 3 19 1 1];
ub = [1440 1440 1440 1440 5 3 80 10 24 3 200];
fobj=@House_cost;
Function_name='House_cost';
tic;
[Best_score,xbest,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
toc;
Когда яЗапустите мою программу, ограничения не выполнены, на самом деле x (2) -x (1) = - 73 в моей последней попытке.Что может быть причиной этой проблемы?