exponenta event banner

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

В этом примере решена типичная задача линейного программирования

minxfTxsuchthat{A⋅x≤b,Aeq⋅x=beq,x≥0.

Загрузить sc50b.mat файл, содержащий матрицы и векторы A, Aeq, b, beq, fи нижние границы 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.036    0.000000e+00   0.000000e+00   1.305013e+00  
    8     0.052   -1.587073e+02   3.760622e+02   0.000000e+00  
   33     0.053   -7.000000e+01   0.000000e+00   0.000000e+00  

Optimal solution found.

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

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

Значение целевой функции и количество итераций также можно найти на итерационном экране.