Main Content

典型的线性规划问题

此示例说明如何求解典型的线性规划问题

minxfTxsuchthat{Axb,Aeqx=beq,x0.

加载 sc50b.mat 文件,该文件在运行此示例时可用,它包含矩阵和向量 AAeqbbeqf 以及下界 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

您还可以在迭代输出中找到目标函数值和迭代次数。