Ограничения на равенство не были соблюдены в алгоритме оптимизации китов, несмотря на штраф - PullRequest
0 голосов
/ 25 сентября 2018

Я использую 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 в моей последней попытке.Что может быть причиной этой проблемы?

1 Ответ

0 голосов
/ 25 сентября 2018

Этот тип алгоритмов случайного поиска не очень хорош в обработке ограничений равенства.Иногда вы можете заменить вместо нее переменную:

x2-x1 = 90

означает

x2 = 90 + x1

, поэтому вы можете удалить переменнуюx2 и ограничение x2-x1=90 из модели.

В противном случае используйте другие технологии, которые могут лучше обрабатывать одновременные уравнения, такие как целочисленное программирование (кусочно-линейное), нелинейное программирование и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...