В этом примере решена типичная задача линейного программирования
Загрузить 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
Значение целевой функции и количество итераций также можно найти на итерационном экране.