Типичная линейная проблема программирования

Этот пример показывает решение типичной линейной проблемы программирования. Проблема

minxfTx таким образом , что {Axb,Aeqx=beq,x0.

Можно загрузить матрицы и векторы A, Aeq, b, beq, f и нижние границы lb в рабочую область MATLAB® с

load sc50b

Проблема в sc50b.mat имеет 48 переменных, 30 неравенств и 20 равенств.

Используйте linprog, чтобы решить проблему:

options = optimoptions(@linprog,'Algorithm','dual-simplex','Display','iter');
[x,fval,exitflag,output] = ...
    linprog(f,A,b,Aeq,beq,lb,[],options);

Поскольку итеративное отображение было установлено с помощью optimoptions, отображенные результаты

LP preprocessing removed 2 inequalities, 16 equalities,
16 variables, and 26 non-zero elements.

 Iter      Time            Fval  Primal Infeas    Dual Infeas  
    0     0.001    0.000000e+00   0.000000e+00   1.305013e+00  
    8     0.001   -1.587073e+02   3.760622e+02   0.000000e+00  
   33     0.001   -7.000000e+01   0.000000e+00   0.000000e+00

Optimal solution found.

Значение exitflag положительно, говоря вам, linprog сходился. Можно также получить итоговое значение функции в fval и количестве итераций в output.iterations:

exitflag,fval,output

exitflag =

     1


fval =

   -70


output = 

  struct with fields:

         iterations: 33
    constrviolation: 3.1264e-13
            message: 'Optimal solution found.'
          algorithm: 'dual-simplex'
      firstorderopt: 2.3082e-14
Для просмотра документации необходимо авторизоваться на сайте