Может быть, классическая фраза: я пытаюсь понять это уже несколько дней, но у меня ничего не получается - правда, обо мне!Возьмем отсюда простую ограниченную задачу оптимизации, максимизирующую доход с бюджетными ограничениями.Итак, проблема в
Мы можем решить ее в Matlab с помощью fmincon
objective = @(x) -200*x(1)^(2/3)*x(2)^(1/3);
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = fmincon(objective,[1,1],[],[],[20, 170],20000,[],[],[])
>> X =
666.6669 39.2157
LAMBDA =
struct with fields:
eqlin: 2.5927
ИЛИможно использовать функцию стоимости Лагранжа и переписать их для задачи оптимизации без ограничений (Прав ли я на этом этапе?)
Затем решение этой целевой функции с помощью fminsearch или fminunc (даже при попытке с га )
lambda = 2.5927;
>> objective = @(x) -200*x(1)^(2/3)*x(2)^(1/3)-lambda*(20*x(1) + 170*x(2) - 20000);
x = fminuncfminunc(objective,[1, 1])
>> Problem appears unbounded.
fminunc stopped because the objective function value is less than
or equal to the value of the objective function limit.
<stopping criteria details>
x =
1.0e+19 *
0.2504 6.4423
>> x = fminsearch(objective,[1, 1])
Exiting: Maximum number of function evaluations has been exceeded
- increase MaxFunEvals option.
Current function value: -51855.290146
x =
0.1088 1.7458
дает разные результаты идаже не близко к ограниченному решению с fmincon .Я пытался изменить знак, поставить лямбда = 1 ....
Так почему это так, где я не прав или я чего-то не понимаю?
заранее спасибо!