[最优化理论与技术]线性规划

线性规划

线性规划的标准型

线性规划模型 ( LP )

  1. 一组决策变量
  2. 一个线性目标函数
  3. 一组线性约束条件

一般形式:
\[ \min (\max ) \sum_{i=1}^{n} c_{i} x_{i} \\ s.t.\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n} \geq(=, \leq) b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n} \geq(=, \leq) b_{2}} \\ {\cdots} \\ {a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n} \geq(=, \leq) b_{m}} \\ {x_{i} \geq(=, \leq) 0, i=1,2, \cdots, n}\end{array}\right. \]
标准型:
\[ \max \sum_{i=1}^{n} c_{i} x_{i} \quad \text { s.t. }\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n}=b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n}=b_{2}} \\ {\cdots} \\ {x_{i} \geq 0, i=1,2, \cdots, n}\end{array}\right. \]
其中,记 \(c=\left(c_{1}, c_{2}, \cdots, c_{n}\right)^{T}, b=\left(b_{1}, b_{2}, \cdots, b_{m}\right)^{T}, x=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{T},\boldsymbol{A}=\left(a_{i j}\right)_{m \times n}\),则线性规划标准型记为
\[ \begin{array}{l}{\max \quad c^{T} x} \\ {\text { s.t. }\left\{\begin{array}{l}{A x=b} \\ {x \geq 0}\end{array}\right.}\end{array} \]

化标准型

  1. 目标函数

    原问题目标函数:\(\min \quad c^{T} x \quad \Rightarrow \max \quad-c^{T} x\)

  2. 约束条件

    • 原问题条件:\(a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n} \leq b_{i}\)

      \(\Rightarrow\left\{\begin{array}{c}{a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n}+x_{n+i}=b_{i}} \\ {x_{n+i} \geq 0}\end{array}\right.\)\(x_{n+i}\) 称为松弛变量

    • 原问题条件:\(a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n} \geq b_{i}\)

      \(\Rightarrow\left\{\begin{array}{c}{a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n}-x_{n+i}=b_{i}} \\ {x_{n+i} \geq 0}\end{array}\right.\)\(x_{n+i}\) 称为剩余变量

    • 原问题:\(x_i\) 无非负约束,则令\(\left\{\begin{aligned} \boldsymbol{x}_{i} &=\boldsymbol{u}_{i}-\boldsymbol{v}_{i} \\ \boldsymbol{u}_{i}, \boldsymbol{v}_{i} & \geq \mathbf{0} \end{aligned}\right.\)

图解法

  1. 画出可行域范围
  2. 利用等值线平移方法求极值点

线性规划解的概念和性质

\[ \begin{array}{c}{(L P) \quad \max \quad z=c^{T} x \quad(1)} \\ {\text { s.t. }\left\{\begin{array}{cc}{A x=b} & {\text { (2) }} \\ {x \geq 0} & {\text { (3) }}\end{array}\right.}\end{array} \]

可行解:满足 (2)(3) 式的解 \(x=(x_1,x_2,...,x_n)^T\) 称为 \((LP)\) 的可行解

可行域\(D=\{x | A x=b, x \geq 0\}\)

  • 线性规划问题的可行域 \(D\) 是凸集

线性规划解的概念

:设 \(A\)\(m \times n\) 的系数矩阵,秩为 \(m\) 。若 \(B\)\(A\)\(m \times m\) 阶的非退化子阵,则称 \(B\)\(A\) 的 (或 \((LP )\) 问题) 一个基。

  • 非退化子阵:又称 “非异矩阵”、“满秩矩阵”,矩阵行列式 \(|A|\ne0\)\(n\) 阶方阵 \(A\) 是非退化的充要条件为 \(A\) 是可逆矩阵。

基向量:设基 \(\boldsymbol{B}=\left(\boldsymbol{P}_{i 1}, \boldsymbol{P}_{i 2}, \cdots, \boldsymbol{P}_{i m}\right)\),称 \(\left(\boldsymbol{P}_{i 1}, \boldsymbol{P}_{i 2}, \cdots, \boldsymbol{P}_{i m}\right)\) 为基向量。

基变量:\(\boldsymbol{P}_{i m}\)对应的变量 \(x_m\),不是基变量的变量称为非基变量。

基本解:取线性规划的基 \(B\),令非基变量取0,\(\left(B^{-1} b, 0\right)^{T}\) 为对应于基 \(B\) 的基本解。

基本可行解:满足线性规划 \((LP)\) 问题条件(3) 的基本解为基本可行解。

  • 线性规划 \((LP)\) 问题的解 \(x\) 是基本可行解的充要条件是 \(x\) 是可行域 \(D\) 的顶点

单纯形法

算法思路

从一个基本可行解开始,判断其是否为最优解,若不是则跳到下一个基本可行解,直到找到最优解。

  1. 如何得到第一个基本可行解
  2. 如何判断是否是最优解
  3. 如何从一个基本可行解变换到另一个基本可行解

初始基本可行解

\(M\) 法:增加人工变量使得 \(z=\sum_{i=1}^{n} c_{i} x_{i}-M x_{n+1}-\cdots-M x_{n+m}\),取 \(\boldsymbol{x}_{n+1}, \cdots, \boldsymbol{x}_{n+m}\) 为初始基变量。

最优解判定条件

\[ (\boldsymbol{L P}) \max z=\sum_{i=1}^{n} c_{i} \boldsymbol{x}_{i} \quad \text { s.t. }\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n}=b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n}=b_{2}} \\ {\cdots} \\ {a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n}=b_{m}} \\ {x_{i} \geq 0, i=1,2, \cdots, n}\end{array}\right. \]

设经过迭代后有
\[ \left\{\begin{array}{l}{x_{1}=b_{1}^{\prime}-\sum_{j=m+1}^{n} a_{1 j}^{\prime} x_{j}} \\ \vdots\\{x_{m}=b_{m}^{\prime}-\sum_{j=m+1}^{n} a_{m j}^{\prime} x_{j}}\end{array}\right.(1) \]
\(x_1,...,x_m\) 为基变量,\(x_{m+1},...,x_n\) 为非基变量。

代入目标函数有
\[ z=\sum_{i=1}^{m} c_{i} b_{i}^{\prime}+\sum_{j=m+1}^{n}\left(c_{j}-\sum_{i=1}^{m} c_{i} a_{i j}^{\prime}\right) x_{j} \]
\(z_0=\sum_{i=1}^{m} c_{i} b_{i}^{\prime}\)\(\sigma_j=c_{j}-\sum_{i=1}^{m} c_{i} a_{i j}^{\prime}\),则
\[ z=z_{0}+\sum_{j=m+1}^{n} \sigma_{j} x_{j} \]
\(\sigma_j\) 为检验函数。

  • \(x^*=(b_1^*,...,b_m^*,0,...,0)^T\) 是对应于基 \(B\) 的一个基本可行解,且对任意 \(m+1 \le j \le n\),有 \(\sigma_j \le 0\),则 \(x^*\) 是最优解。
  • \(x^*=(b_1^*,...,b_m^*,0,...,0)^T\) 是对应于基 \(B\) 的一个基本可行解,且对任意 \(m+1 \le j \le n\),有 \(\sigma_j \le 0\),且存在 \(\sigma_{m+k}=0(k \ge 0)\) ,则线性规划问题有无穷多最优解。

单纯形表

根据上节,将线性规划问题 \((LP)\) ,改写成
\[ (L P) \quad \max \quad z=z_{0}+\sum_{i=m+1}^{n} \sigma_{i} x_{i} \]

\[ \text { s.t. }\left\{\begin{aligned} x_{1}+a_{1, m+1} x_{m+1}+\cdots+a_{1 n} x_{n} &=b_{1} \\ x_{2}+a_{2, m+1} x_{m+1}+\cdots+a_{2 n} x_{n} &=b_{2} \\ x_{m}+a_{m, m+1} x_{m+1}+\cdots+a_{m n} x_{n} &=b_{m} \\ x_{i} \geq 0, i =1,2, \cdots, n \end{aligned}\right. \]

则单纯形表为

\(x_ 1\) \(x_2\) \(x_ m\) \(x_ {m+1}\) \(x_n\) \(b\)
1 0 \(\cdots\) 0 \(a_{1,m+1}\) $\cdots $ \(a_{1n}\) \(b_1\)
0 1 \(\cdots\) 0 \(a_{2,m+1}\) \(\cdots\) \(a_{2n}\) \(b_2\)
$\vdots $ \(\vdots\) \(\vdots\) \(\vdots\) \(\vdots\) $\vdots $
0 0 \(\cdots\) 1 \(a_{m,m+1}\) \(\cdots\) \(a_{mn}\) \(b_m\)
0 0 $ \cdots $ 0 \(\sigma_{m+1}\) $ \cdots$ \(\sigma_n\) \(-z_0\)
  • 包含一个单位子矩阵作为基矩阵,它所对应的变量是基变量
  • 最后一行称为检验数行,其中基变量的检验数为0
  • 最后一列的元素对应当前基变量的取值
  • \(m+1\) 行、第 \(n+1\) 列的元素 \(-z_0\) ,表示当前基本可行解对应的目标函数值的相反数

基变换

入基变量:可选取最大的 \(\sigma_j\) 对应的变量作为入基变量

离基变量:设入基变量 \(x_k\),由(1)式计算
\[ \boldsymbol{\theta}=\min \left\{\frac{\boldsymbol{b}_{i}^{\prime}}{\boldsymbol{a}_{i k}^{\prime}} | \boldsymbol{a}_{i k}^{\prime}>\boldsymbol{0}\right\} :=\frac{\boldsymbol{b}_{l}^{\prime}}{\boldsymbol{a}_{l k}^{\prime}} \]

  • \(x:=y\) 表示命题 \(x\) 定义为等于 \(y\)

  • 结合(1)式计算需注意,\(a_{lk}\) 前面符号是减号

    \({x_{m}=b_{m}^{\prime}-\sum_{j=m+1}^{n} a_{m j}^{\prime} x_{j}}\)

选取 \(x_l\) 为离基变量。

单纯性法算法步骤

  1. 确定初始基本可行解,建立初始单纯形表

  2. 看检验数,若 \(\sigma_j \le 0(j=m+1,..,n)\) 则当前基本可行解就是最优解,算法结束。否则转(3)

  3. 若存在 \(\sigma_k>0\) 使得其对应的变量 \(x_k\) 的系数列向量 \(P_k\le0\),则线性规划问题的解无界,算法结束。否则转(4)

  4. \(\max \left(\sigma_{j}>0\right)=\sigma_{k}\),选取 \(x_k\) 为入基变量。计算
    \[ \boldsymbol{\theta}=\min \left\{\frac{\boldsymbol{b}_{i}}{\boldsymbol{a}_{i k}} | \boldsymbol{a}_{i k}>\boldsymbol{0}\right\} :=\frac{\boldsymbol{b}_{l}}{\boldsymbol{a}_{l k}} \]
    选取 \(x_l\) 为离基变量。转(5)

  5. \(a_{lk}\) 为主元旋转。即利用行变换,将第 \(k\) 个系数列向量变换为只有 \(a_{lk}=1\) 其他元素都为 0 的列。

猜你喜欢

转载自www.cnblogs.com/ColleenHe/p/11720787.html
今日推荐