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