数学建模笔记 -- 线性规划

673 阅读2分钟

线性规划

1. 什么是线性规划

在数学规划中有三大因素:目标函数、决策变量、约束条件。当目标函数和约束条件都为线性表达式时,该规划为线性规划。

线性规划英文名为 Linear Programming。

2. 求解线性规划的步骤

确定决策变量、目标函数和约束条件。并整合为以下形式:

y=minCTxs.t.{AxbAeqx=beqlbxuby = minC^Tx\\ s.t.\begin{cases} Ax \leq b\\ Aeq · x=beq\\ lb \leq x \leq ub \end{cases}

头顶第一行minCTxminC^Tx 为目标函数,其中min固定,即目标最优时,目标函数必须是求最小值的形式。C(Coefficient - 系数)为目标函数中的系数列向量。y就是目标最优时的目标函数值,x为决策变量的列向量。

括号内第一行不等式约束(可能不止一条),其中小于等于号固定。A为该方程左侧的系数矩阵(形状跟随方程组),b (Boundary - 边界)为一个常数。

括号内第二行等式约束(也可能不止一条)。同理Aeq为方程左侧的系数矩阵,beq为一个常数。

括号内第三行:lb(lower bound - 下界)下界列向量, ub(upper bound - 上界)上界列向量。即定义域(决策变量的固有范围)。这一条件常常是题目中隐藏的。

3. 在Matlab中如何求解线性规划问题

Matlab中有现成的API可以调用来解决线性规划问题:

[x, y] = linprog(c, A, b)
[x, y] = linprog(c, A, b, Aeq, beq)
[x, y] = linprog(c, A, b, Aeq, beq, lb, ub)

该API方法名为linprog,源自线性规划的英文名——Linear Programming(开头提及)。

接收参数有三种情况,分别是:

  1. 只有目标函数和不等式约束
  2. 有目标函数、不等式和等式约束
  3. 有目标函数、不等式和约束条件、决策变量的上界下界

返回值都是在目标最优情况下,x为此时决策变量取值的向量,y此时为目标函数的值。

4. 线性规划的适用范围

线性规划往往用于求解简单的最优化问题。大多数的题目中都会涉及非线性函数,此时线性规划则失去了作用。但部分非线性问题可以转化为线性问题求解,此时便可以使用线性规划。

使用线性规划模型时需注意找对目标函数、决策变量、约束条件,并且做到与标准格式相同,在代入Matlab提供的linprog接口时输入位置对应的正确参数,并正确接收返回值。