Я использую набор инструментов оптимизации "fmincon" MATLAB, но у меня возникла следующая проблема:
У меня есть 6 параметров для изменения, пара из них чаще всего варьируется в четных числах, от 4 до 16 (эти значения могут варьироваться, но всегда будут варьироваться в четных числах). Итак, давайте определим их так:
x1=[4:2:16];
x2=[4:2:16];
Еще пара переменных должна изменяться между 300 и 1500 с шагом 100, я имею в виду:
x3=[300:100:1500];
x4=[300:100:1500];
Последняя пара просто варьируется от 4 до 6, например:
x5=4:6;
x6=4:6;
Ограничение параметров таково:
x1<=x2
x3<=x4
x5<=x6
Здесь очень важно то, что вариация, которая создает fmincon
, не может вносить небольшие изменения, я имею в виду, что первое значение x1
, равное 4
, не может быть 4.0000000001
, потому что в моей целевой функции эти изменения не будут иметь никакого значения; и в этом моя проблема, потому что шагов слишком мало, поэтому вариация ничего не даст, и алгоритм останавливается, говоря, что вариации целевой функции нет.
Я установил fmincon
, DiffMinChange=1
, и это работает для первой итерации, и они начинают делать слишком маленькие шаги. Это начальная конфигурация для fmincon
:
options1 = optimset('Display','iter',...
'Algorithm','sqp','PlotFcns',@optimplotfval,...
'MaxIter',400,'MaxFunEvals',2000,'DiffMinChange',1);
Первоначальные ограничения:
A=[1 -1 0 0 0 0;0 0 1 -1 0 0;0 0 0 0 1 -1];
b=[0;0;0];
Чтобы быть более ясным, я ищу создание 3 диапазонов, позволяющих определить их следующим образом:
R1=[x1:2:x2];
R2=[x3:100:x4];
R3=[x5:x6];
РЕДАКТИРОВАТЬ 1: Вы можете знать, что каждая оценка целевой функции займет около 2-3 часов.
Как видите, наконец то, что я ищу, это вариация интервала, по этой причине лимит в начале не может быть больше лимита в топе, иначе ранг будет пустым.