典型的线性规划问题
此示例说明如何求解典型的线性规划问题
加载 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);
Running HiGHS 1.6.0: Copyright (c) 2023 HiGHS under MIT licence terms Presolving model 37 rows, 37 cols, 93 nonzeros 20 rows, 20 cols, 61 nonzeros 15 rows, 15 cols, 59 nonzeros 12 rows, 12 cols, 58 nonzeros 12 rows, 12 cols, 58 nonzeros Presolve : Reductions: rows 12(-38); columns 12(-36); elements 58(-60) Solving the presolved LP Using EKK dual simplex solver - serial Iteration Objective Infeasibilities num(sum) 0 -8.6188182138e-01 Ph1: 9(12.9103); Du: 1(0.861882) 0s 14 -7.0000000000e+01 Pr: 0(0) 0s Solving the original LP from the solution after postsolve Model status : Optimal Simplex iterations: 14 Objective value : -7.0000000000e+01 HiGHS run time : 0.00 Optimal solution found.
检查退出标志、解处的目标函数值以及 linprog
用于求解问题的迭代次数。
exitflag,fval,output.iterations
exitflag = 1
fval = -70.0000
ans = 14
您还可以在迭代输出中找到目标函数值和迭代次数。