Понимание проблем оптимизации и их решение в Matlab (выбор подходящего решателя) - PullRequest
1 голос
/ 17 мая 2019

Может быть, классическая фраза: я пытаюсь понять это уже несколько дней, но у меня ничего не получается - правда, обо мне!Возьмем отсюда простую ограниченную задачу оптимизации, максимизирующую доход с бюджетными ограничениями.Итак, проблема в

enter image description here

Мы можем решить ее в 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

ИЛИможно использовать функцию стоимости Лагранжа и переписать их для задачи оптимизации без ограничений (Прав ли я на этом этапе?)

enter image description here

Затем решение этой целевой функции с помощью 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 ....

Так почему это так, где я не прав или я чего-то не понимаю?

заранее спасибо!

...