Несколько ограничений на fmincon?MATLAB - PullRequest
0 голосов
/ 08 февраля 2019

Я не уверен, что fmincon является лучшим решением для оптимизации с несколькими параметрами.

Я хочу оптимизировать два параметра: inp_1 с допустимыми значениями от 1 до 2 длякоторый я использовал этот код

inp_1 = 1
Ub= 2*inp_1 ; Lb= 0.5*inp_1;
options = optimoptions('fmincon',...
         'FiniteDifferenceType','central',...
         'DiffMaxChange',0.5,...
         'DiffMinChange',1e-1,...
         'MaxIter',20,...
         'MaxFunEvals',200,...
         'Display','iter',...  % 'iter'
         'OptimalityTolerance',1e-13);
[param,distance,exitflag,output,lambda,grad,hessian]  = fmincon(@optimization_func,inp_1 ,[],[],[],[],[],Lb,Ub,options);

и все работает отлично.Если я хочу добавить еще одну зависимость, например inp_2 с допустимыми значениями от 0 до 360, я могу установить вектор x как x(1) = inp_1; и x(2) = inp_2 и передать x в fmincon.

Таким образом, параметры больше не являются правильными, поскольку мне нужно установить другие параметры, особенно для DiffMinChange и DiffMaxChange.Какое здесь лучшее решение для нескольких разных ограничений?

1 Ответ

0 голосов
/ 08 февраля 2019

Насколько я знаю, параметры DiffMinChange и DiffMaxChange всегда применяются ко всему вектору и не могут быть настроены для каждого элемента.

Что вы могли бы сделать, это нормализовать все переменные, чтобы быть вединичный интервал [0,1], так что вы в порядке с глобальными настройками в DiffMinChange и DiffMaxChange.Затем примените денормализацию внутри вашей функции стоимости.

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