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