Я пишу модель, которая должна минимизировать 6 переменных, используя fmincon
: o
, a
, b
, w
, kappa
, gamma
. Переменная options
определяется следующим образом:
optimset(optimset(@fmincon),'Diagnostics','off','Display','off','LargeScale','off','MaxSQPIter',1000,'TolFun',1e-6)
Переменные уже подчиняются следующим нижним / верхним границам:
o
, a
, b
, w
между 0
и Inf
; kappa
и gamma
строго положительный между (2 * options.TolCon)
и Inf
;
Мне нужно для обеспечения соблюдения нескольких ограничений:
o
, a
, b
, w
должны приблизительно составлять 1
; kappa
* gamma
должно быть приблизительно равно 1
;
Если бы мне не пришлось учитывать последние две переменные, я бы, вероятно, использовал параметры A
и b
fmincon
следующим образом:
A = [-eye(3); ones(1,3)];
b = [(zeros(3,1) + (2 * options.TolCon)); (1 - (2 * options.TolCon))];
Но подход к этому подходу с двумя различными ограничениями (аддитивным и мультипликативным) довольно странный, и я действительно понятия не имею, как установить A
и b
.
Кажется, что параметр nonlcon
в fmincon
может быть тем, что я ищу, но мне неясно, как его правильно сформулировать.
Спасибо!