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