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

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

minxfTxsuchthat{Axb,Aeqx=beq,x0.

Загрузите 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

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