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

Этот пример решает типичную задачу линейного программирования

minxfTxsuchthat{Axb,Aeqx=beq,x0.

Загрузите sc50b.mat файл, который содержит матрицы и векторы A, AeqB, beqF, и нижние границы lb.

load sc50b

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

disp(size(A))
    30    48
disp(size(Aeq))
    20    48

Установите опции использовать dual-simplex алгоритм и итеративное отображение.

options = optimoptions(@linprog,'Algorithm','dual-simplex','Display','iter');

Проблема не имеет никакой верхней границы, таким образом, устанавливает ub к [].

ub = [];

Решите задачу путем вызова linprog.

[x,fval,exitflag,output] = ...
    linprog(f,A,b,Aeq,beq,lb,ub,options);
LP preprocessing removed 2 inequalities, 16 equalities,
16 variables, and 26 non-zero elements.

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

Optimal solution found.

Исследуйте выходной флаг, значение целевой функции в решении и количество итераций, используемых linprog решать задачу.

exitflag,fval,output.iterations
exitflag = 1
fval = -70
ans = 33

Можно также найти значение целевой функции и количество итераций в итеративном отображении.

Для просмотра документации необходимо авторизоваться на сайте