Этот пример показывает решение типичной задачи линейного программирования. Проблема
Можно загрузить матрицы и векторы A, AeqB, beqF, и нижние границы lb в рабочую область MATLAB® с
load sc50b
Проблема в sc50b.mat имеет 48 переменных, 30 неравенств и 20 равенств.
Используйте linprog решать задачу:
options = optimoptions(@linprog,'Algorithm','dual-simplex','Display','iter');
[x,fval,exitflag,output] = ...
linprog(f,A,b,Aeq,beq,lb,[],options);Поскольку итеративное отображение было установлено с помощью optimoptions, отображенные результаты
LP preprocessing removed 2 inequalities, 16 equalities,
16 variables, and 26 non-zero elements.
Iter Time Fval Primal Infeas Dual Infeas
0 0.001 0.000000e+00 0.000000e+00 1.305013e+00
8 0.001 -1.587073e+02 3.760622e+02 0.000000e+00
33 0.001 -7.000000e+01 0.000000e+00 0.000000e+00
Optimal solution found.exitflag значение положительно, говоря вам linprog сходившийся. Можно также получить итоговое значение функции в fval и количество итераций в output.iterations:
exitflag,fval,output
exitflag =
1
fval =
-70
output =
struct with fields:
iterations: 33
constrviolation: 3.1264e-13
message: 'Optimal solution found.'
algorithm: 'dual-simplex'
firstorderopt: 2.3082e-14