【运筹学】线性规划 单纯形法原理 ( 构造初始可行基 | 基变换 | 最优性检验 | 解的判别 | 检验数 | ( 唯一 / 无穷多 ) 最优解判别定理 | 无界解判别定理 )



1 . 前置概念





1.1 线性规划向量形式



线性规划 向量形式 : 其中 矩阵 C C , 矩阵 X X , 矩阵 b b 与上面的矩阵形式内容一致 , 本公式之比上个公式多了一个 向量 P j P_j ;

m a x Z = C X s . t { j = 1 n P j x j = b x j 0 j = 1 , 2 , , n \begin{array}{lcl}max Z = CX \\ \\ s.t \begin{cases} \sum_{j = 1}^{n} P_j x_j = b \\ \\ x_j \geq 0 & j=1,2,\cdots,n \end{cases}\end{array}

其中

j = 1 n P j x j = b \sum_{j = 1}^{n} P_j x_j = b

展开后是 :

P 1 x 1 + P 2 x 2 + + P n x n = b P_1x_1 + P_2x_2 + \cdots + P_nx_n = b

其中的 P j P_j 为 :

P j = [ a 1 j a 2 j a m j ] P_j=\begin{bmatrix}\\\\ a_{1j}\\\\ a_{2j}\\\\ \vdots\\\\ a_{mj}\\\\ \end{bmatrix}

举例 对应的 P 1 P_1 就是

P 1 = [ a 11 a 21 a m 1 ] P_1=\begin{bmatrix}\\\\ a_{11}\\\\ a_{21}\\\\ \vdots\\\\ a_{m1}\\\\ \end{bmatrix}

对应的 P n P_n 就是

P n = [ a 1 n a 2 n a m n ] P_n=\begin{bmatrix}\\\\ a_{1n}\\\\ a_{2n}\\\\ \vdots\\\\ a_{mn}\\\\ \end{bmatrix}



1.2 可行基概念



1 . 基的概念

系数矩阵 : 约束方程的 系数 可以组成一个 m × n m \times n 阶 矩阵 , 即 m m 行 , n n 列 , 代表 有 m m 个约束方程 , 每个约束方程有 n n 个变量 ;

基 :

  • ① 矩阵秩 : A A 为上述 m × n m \times n 阶系数矩阵 ( m < n ) ( m < n ) , 其秩 为 m m ; ( 该矩阵的秩的最大取值是 m i n ( m , n ) min(m , n) )
  • ② 满秩矩阵 : 矩阵 B B 是矩阵 A A m m 阶满秩子矩阵 , 其中 B 0 |B| \not=0 ,
    B = [ a 11 a 1 m a m 1 a m m ] = ( p 1 p m ) B= \begin{bmatrix} & a_{11} & \cdots & a_{1m} \\ \\ &\vdots &\vdots &\vdots \\ \\ & a_{m1} & \cdots & a_{mm} \end{bmatrix} = ( p_1 \cdots p_m )
  • ③ 基引入 : 则称 B B 是线性规划问题的 一个基 ;

2 . 基解概念

基解 :

  • ① 确定基 : 确定一个基 B B , 该矩阵是系数矩阵 A A 的满秩子矩阵 , 即一个 m × m m \times m 阶矩阵 ;
  • ② 处理非基变量 : 将非基变量 设置成 0 0 ;
  • ③ 解出基解 : 将 基 代入约束方程 , 解出对应的变量值 , 即基解 ;
  • ④ 基解个数 : 基解中变量取值 非 0 0 个数 , 小于等于 约束方程个数 m m , 基解的总数 不超过 C n m C_n^m

3 . 可行基概念

基可行解 : 解出的基解 , 有一部分满足 变量的 非负 约束 , 即解大于等于 0 0 , 这些解称为基可行解 ;

可行基 : 基可行解 对应的基 , 称为 可行基 ;


详细的概念参考 : 【运筹学】线性规划问题的解 ( 可行解 | 可行域 | 最优解 | 秩的概念 | 极大线性无关组 | 向量秩 | 矩阵秩 | 基 | 基变量 | 非基变量 | 基解 | 基可行解 | 可行基 )



1.3 线性规划求解步骤



1 . 线性规划向量形式为 :

m a x Z = C X s . t { j = 1 n P j x j = b x j 0 j = 1 , 2 , , n \begin{array}{lcl}max Z = CX \\ \\ s.t \begin{cases} \sum_{j = 1}^{n} P_j x_j = b \\ \\ x_j \geq 0 & j=1,2,\cdots,n \end{cases}\end{array}


2 . 找可行基 : 使用单纯形法求解最优解的第一个步骤 , 就是找到一个可行基 ;


3 . 构造初始可行基方法 : 已知一个线性规划问题的标准数学模型 , 构造初始可行基的三种方法 :

  • ① 观察 : 通过观察 , 直接从系数矩阵中发现一个可行基 , 即 m m 阶方阵 B 0 |B| \not= 0 ;
  • ② 松弛变量法 : 如果约束方程是 \leq 约束 , 那么加入松弛变量 , 这些松弛变量的每个系数的列向量都是单位向量 ;
  • ③ 人工变量法 : 如果约束方程式 \geq 约束 , 那么需要加入人工变量 ;

线性规划问题求解 , 第一步就是根据上面三种方法 , 构造出初始的可行基 ;


4 . 求线性规划最优解流程 : 先构造初始可行基 , 然后解出该解 , 判定是否是基可行解 , 如果是基可行解 , 那么判断该解是否是最优解 , 如是 , 那么该解就是最优解 , 如果不是 , 那么继续迭代 ;


5 . 这里就两个问题 : ① 如何判定该解是否是最优解 , ② 如何进行迭代 ;



2 . 构造初始可行基





2.1 构造初始可行基 并 解出基解



1 . 前提条件 : 先做一个假设 , 假设由一个线性规划问题 , 有 m m 个约束方程 , 有 n n 个决策变量 , x 1 , x 2 , , x m x_1 , x_2 , \cdots , x_m ; 这 m m 个约束方程都是 \leq 约束 ;


2 . 构造可行基方法 ( 添加松弛变量 ) : 给所有的约束方程 , 添加一个松弛变量 , 即需要添加 m m 个松弛变量 ;

线性规划的约束方程为 : 该约束方程有 n m n-m 个决策变量 , 有 m m 个约束不等式 ;

s . t { a 11 x 1 + a 12 x 2 + + a 1 n x n m b 1 a 21 x 1 + a 22 x 2 + + a 2 n x n m b 2 a m 1 x 1 + a m 2 x 2 + + a m n x n m b m x 1 , x 2 , , x n m 0 s.t \begin{cases} a_{11} x_1 + a_{12} x_2 + \cdots + a_{1n}x_{n-m} \leq b_1 \\ \\ a_{21} x_1 + a_{22} x_2 + \cdots + a_{2n}x_{n-m} \leq b_2 \\ \\ \cdots\cdots\cdots \\ \\ a_{m1} x_1 + a_{m2} x_2 + \cdots + a_{mn}x_{n-m} \leq b_m \\ \\ x_1, x_2 , \cdots , x_{n-m} \geq 0 \end{cases}

由于是 \leq 约束 , 添加松弛变量 , 有 m m 个不等式 , 需要添加 m m 个松弛变量 ; 添加松弛变量后 , \leq 不等式变成 等式 :

s . t { x 1 + a 1 m + 1 x m + 1 + a 1 m + 2 x m + 2 + + a 1 n x n = b 1 x 2 + a 2 m + 1 x m + 1 + a 2 m + 2 x m + 2 + + a 2 n x n = b 2 x m + a m m + 1 x m + 1 + a m m + 2 x m + 2 + + a m n x n = b m x 1 , x 2 , , x n 0 s.t \begin{cases} x_1 & & +a_{1 m+1} x_{m+1} + a_{1 m+2} x_{m+2} + \cdots + a_{1n}x_{n} = b_1 & \\ \\ & x_2 & + a_{2 m+1} x_{m+1} + a_{2 m+2} x_{m+2} + \cdots + a_{2n}x_{n} = b_2& \\ \\ \cdots\cdots\cdots \\ \\ & & x_m + a_{m m+1} x_{m+1} + a_{m m+2} x_{m+2} + \cdots + a_{mn}x_{n} = b_m& \\ \\ x_1, x_2 , \cdots , x_{n} \geq 0 \end{cases}

修改下标标号 : 上述式子将添加的松弛变量的下标修改成了 x 1 x m x_1 \cdots x_m , 上述公式中下标的次序可以修改 ;


3 . 构造初始可行基 : 该初始可行基 , 假设由 系数矩阵 前面的 m m 个向量组成的 方阵 ; 该方阵是 x 1 x m x_1 \cdots x_m 变量的系数矩阵 ;

x 1 x m x_1 \cdots x_m 就是基变量 ; 该基变量的系数 ( P 1 , , P m ) (P_1 , \cdots , P_m) 就是初始可行基 ;


基是在 线性规划 约束方程组 的系数矩阵 中 的一个 m m 阶方阵 , 其行列式不等于 0 0 , 行列式不等于 0 0 的方阵最基本最简单的就是单位阵 , 为了讨论方便 , 假设该初始可行基是单位阵 ; 即构造以下初始可行基 :

B = [ P 1 P 2 P m ] = [ 1 0 0 0 1 0 0 0 1 ] B=\begin{bmatrix}& P_1 & P_2 & \cdots & P_m & \end{bmatrix}= \begin{bmatrix} & 1 & 0 & \cdots & 0 & \\ & 0 & 1 & \cdots & 0 & \\ & \vdots & \vdots & & \vdots & \\ & 0 & 0 & \cdots & 1 & \\ \end{bmatrix}

初始可行基 : 上述的松弛变量的系数矩阵 , 刚好构成一个 m × m m \times m 阶 的 单位阵 , 该单位阵是一个可行基 , 因为每个变量只添加一个松弛变量 , 其它 m 1 m-1 个不等式添加的对应松弛变量在本式子中 系数肯定是 0 0 ;

如在第一个约束方程中 , 添加了 x 1 x_1 , 那么在第一个约束方程中 , 对应的 x 2 x m x_2 \cdots x_m m 1 m-1 个变量的系数肯定是 0 0 ;


4 . 初始基可行解 : X ( 0 ) = ( x 1 0 , x 2 0 , , x m 0 , 0 , , 0 ) T X^{(0)}=( x_1^0 , x_2^0, \cdots , x_m^0 , 0 , \cdots , 0 )^T , 其中右上角的 0 0 表示这是第 0 0 次迭代 , 是初始基可行解 ;



3 . 基变换





3.1 基变换 概念



1 . 基变换 引入 : 如果初始可行基的基可行解不是最优解 , 那么就需要进行迭代 , 迭代 就是进行 基变换 ; 整个单纯形法的迭代就是不停的进行基变换 ;


2 . 基变换 概念 : 如果两个基可行解相邻 , 两者可以变换 , 并且只能变换一个基变量 ;

举例 : 基可行解对应的基变量是 x 1 , x 2 , x 3 , x 4 x_1 , x_2 , x_3 , x_4 , 将其中的某一个迭代出来 , 使用 x 5 x_5 替换其中的某一个 ;



3.2 线性规划 向量形式 按照基变量 非基变量 进行拆解



1 . 解 基可行解 方法 : 令所有的非基变量等于 0 0 , 可以得到基解 , 因为是单位阵 , 因此基解的取值是各自右端的常数值 b 1 b m b_1 \cdots b_m ; 即 x 1 = b 1 , x 2 = b 2 , , x m = b m x_1 = b_1 , x_2 = b_2 , \cdots , x_m = b_m , 这些值肯定大于 0 0 , 因此这些基解是基可行解 ;


2 . 初始基可行解 : X ( 0 ) = ( x 1 0 , x 2 0 , , x m 0 , 0 , , 0 ) T X^{(0)}=( x_1^0 , x_2^0, \cdots , x_m^0 , 0 , \cdots , 0 )^T , 其中右上角的 0 0 表示这是第 0 0 次迭代 , 是初始基可行解 ;

其中 x 1 0 x_1^0 是对应基变量 x 1 x_1 的解 , x m 0 x_m^0 是对应基变量 x m x_m 的解 ;


3 . 这是线性规划的向量形式 :

m a x Z = C X s . t { j = 1 n P j x j = b x j 0 j = 1 , 2 , , n \begin{array}{lcl}max Z = CX \\ \\ s.t \begin{cases} \sum_{j = 1}^{n} P_j x_j = b \\ \\ x_j \geq 0 & j=1,2,\cdots,n \end{cases}\end{array}


4 . 拆解约束方程 : 将上面的向量形式的 约束方程 , j = 1 n P j x j = b \sum_{j = 1}^{n} P_j x_j = b , 写成两部分 ;

  • ① 前半部分 : i = 1 m P i x i \sum_{i=1}^{m}P_ix_i , 由 x 1 x m x_1 \cdots x_m 基变量及其系数组成 ;
  • ② 后半部分 : j = m + 1 n P j x j \sum_{j=m+1}^{n}P_jx_j x m + 1 x n x_{m+1} \cdots x_n 组成 ;


3.3 初始基可行解 代入 拆解后的 线性规划 约束方程中



1 . 拆解后 线性规划的 向量形式为 :

m a x Z = C X s . t { i = 1 m P i x i + j = m + 1 n P j x j = b x j 0 j = 1 , 2 , , n \begin{array}{lcl}max Z = CX \\ \\ s.t \begin{cases} \sum_{i=1}^{m}P_ix_i + \sum_{j=m+1}^{n}P_jx_j = b \\ \\ x_j \geq 0 & j=1,2,\cdots,n \end{cases}\end{array}


2 . 初始基可行解代入约束方程 : 将初始的基可行解 X ( 0 ) = ( x 1 0 , x 2 0 , , x m 0 , 0 , , 0 ) T X^{(0)}=( x_1^0 , x_2^0, \cdots , x_m^0 , 0 , \cdots , 0 )^T 代入上述约束方程 ;

其中 x 1 0 x_1^0 是对应基变量 x 1 x_1 的解 , x m 0 x_m^0 是对应基变量 x m x_m 的解 ;


其中后半部分 j = m + 1 n P j x j \sum_{j=m+1}^{n}P_jx_j 的变量是非基变量 , 都等于 0 0 , 其乘以系数后的结果也等于 0 , 因此有

j = m + 1 n P j x j = 0 \sum_{j=m+1}^{n}P_jx_j = 0

在约束方程中可以直接消去 ; 约束方程变成如下形式 , 得到 :

i = 1 m P i x i 0 = b \sum_{i=1}^{m}P_ix_i^0 = b



3.4 系数矩阵的 增广矩阵 概念



1 . 线性规划 系数矩阵 的 增广矩阵 : 增广矩阵 就是 将 约束方程的右端项 b 1 b_1 b m b_m 常数 , 写到矩阵中 , 当做最右侧的向量 ;

2 . 下面是 线性规划标准形式的 约束方程 :
s . t { x 1 + a 1 m + 1 x m + 1 + a 1 m + 2 x m + 2 + + a 1 n x n = b 1 x 2 + a 2 m + 1 x m + 1 + a 2 m + 2 x m + 2 + + a 2 n x n = b 2 x m + a m m + 1 x m + 1 + a m m + 2 x m + 2 + + a m n x n = b m x 1 , x 2 , , x n 0 s.t \begin{cases} x_1 & & +a_{1 m+1} x_{m+1} + a_{1 m+2} x_{m+2} + \cdots + a_{1n}x_{n} = b_1 & \\ \\ & x_2 & + a_{2 m+1} x_{m+1} + a_{2 m+2} x_{m+2} + \cdots + a_{2n}x_{n} = b_2& \\ \\ \cdots\cdots\cdots \\ \\ & & x_m + a_{m m+1} x_{m+1} + a_{m m+2} x_{m+2} + \cdots + a_{mn}x_{n} = b_m& \\ \\ x_1, x_2 , \cdots , x_{n} \geq 0 \end{cases}


3 . 增广矩阵是 :

[ 1 0 0 a 1 , m + 1 a 1 j a 1 n b 1 0 1 0 a 2 , m + 1 a 2 j a 2 n b 2 0 0 1 a m , m + 1 a m j a m n b m ] \begin{array}{lcl} \begin{bmatrix} & 1 & 0 & \cdots & 0 & a_{1 , m+1} & \cdots & a_{1j} & \cdots a_{1n} & b_1 \\ & 0 & 1 & \cdots & 0 & a_{2 , m+1} & \cdots & a_{2j} & \cdots a_{2n} & b_2\\ & \vdots & \vdots & & \vdots & \vdots & & \vdots & \vdots & \vdots\\ & 0 & 0 & \cdots & 1 & a_{m , m+1} & \cdots & a_{mj} & \cdots a_{mn} & b_m\\ \end{bmatrix}\end{array}

为该增广矩阵中的向量标号 P 1 P_1 P n P_n 方便下面讨论 ;


4 . 增广矩阵的前 m m 个向量 : P 1 P_1 P m P_m 是 基变量前的系数 , 基向量 , 也是 单位向量 :

[ 1 0 0 0 1 0 0 0 1 ] \begin{array}{lcl} \begin{bmatrix} & 1 & 0 & \cdots & 0 & \\ & 0 & 1 & \cdots & 0 & \\ & \vdots & \vdots & & \vdots & \\ & 0 & 0 & \cdots & 1 &\\ \end{bmatrix}\end{array}


5 . 增广矩阵的 第 m + 1 m+1 n n 个向量 : P m + 1 P_{m+1} P n P_n 是正常的列向量 , 写到 单位向量右侧 , 常数向量左侧 :

[ a 1 , m + 1 a 1 j a 1 n b 1 a 2 , m + 1 a 2 j a 2 n b 2 a m , m + 1 a m j a m n b m ] \begin{array}{lcl} \begin{bmatrix} & & a_{1 , m+1} & \cdots & a_{1j} & \cdots a_{1n} & b_1 \\ & & a_{2 , m+1} & \cdots & a_{2j} & \cdots a_{2n} & b_2\\ & & \vdots & \vdots & & \vdots & \vdots & \\ & & a_{m , m+1} & \cdots & a_{mj} & \cdots a_{mn} & b_m\\ \end{bmatrix}\end{array}



3.5 向量间的线性表达



6 . 向量之间的线性表达 : 使用 P 1 P_1 P m P_m 单位向量 表达 P j P_j 向量 ;

n n 维的单位向量可以表示任何 n n 维向量 ;

表示公式 : 其中的 P j P_j 向量在下面有解释
P j = a 1 j P 1 + a 2 j P 2 + a 3 j P 3 + + a m j P m = i = 1 m a i j P i \begin{array}{lcl}P_j & = & a_{1j} P_1 + a_{2j} P_2 + a_{3j} P_3 + \cdots + a_{mj}P_m \\\\ & = & \sum_{i=1}^m a_{ij}P_i \end{array}

a 1 j P 1 a_{1j} P_1 计算 : 其中 a 1 j a_{1j} 是个常数 , P 1 P_1 是个向量 , 运算方式就是 常数 乘以 向量中每个值 , 然后相加 , P 1 P_1 中只有第一项是 1 , 其它项都是 0 0 , 因此结果是 a 1 j a_{1j} ;


P 1 P_1 P m P_m 单位向量是 :
[ 1 0 0 0 1 0 0 0 1 ] \begin{array}{lcl} \begin{bmatrix} & 1 & 0 & \cdots & 0 & \\ & 0 & 1 & \cdots & 0 & \\ & \vdots & \vdots & & \vdots & \\ & 0 & 0 & \cdots & 1 &\\ \end{bmatrix}\end{array}

P j P_j 向量是 :
[ a 1 j a 2 j a m j ] \begin{array}{lcl} \begin{bmatrix} & a_{1j} & \\ & a_{2j} & \\ & \vdots & \\ & a_{mj} &\\ \end{bmatrix}\end{array}

7 . 线性表达移项 :

将上述线性表达式结果进行移项 :

P j = a 1 j P 1 + a 2 j P 2 + a 3 j P 3 + + a m j P m = i = 1 m a i j P i \begin{array}{lcl}P_j & = & a_{1j} P_1 + a_{2j} P_2 + a_{3j} P_3 + \cdots + a_{mj}P_m \\\\ & = & \sum_{i=1}^m a_{ij}P_i \end{array}

移项后结果 :

P j i = 1 m a i j P i = 0 P_j - \sum_{i=1}^m a_{ij}P_i = 0

将上述式子左右两边乘以一个正数 θ \theta :

θ ( P j i = 1 m a i j P i ) = 0 \theta ( P_j - \sum_{i=1}^m a_{ij}P_i ) = 0




3.6 将 向量线性表达结果 与 初始基可行解代入结果 结合



1 . 初始基可行解代入 拆解后的向量公式中 : 将线性规划 向量形式 根据 基向量 非基向量 进行拆解 , 并将初始基可行解代入到拆解后的约束方程中 , 结果是 :

i = 1 m P i x i 0 = b \sum_{i=1}^{m}P_ix_i^0 = b


2 . 向量间线性表达最终结果是 :

θ ( P j i = 1 m a i j P i ) = 0 \theta ( P_j - \sum_{i=1}^m a_{ij}P_i ) = 0


3 . 向量线性表达结果 与 初始基可行解代入结果 结合 : 将 上述 二者结合这样我们得到了下面的方程组 :

{ θ ( P j i = 1 m a i j P i ) = 0 i = 1 m P i x i 0 = b \begin{cases} \theta ( P_j - \sum_{i=1}^m a_{ij}P_i ) = 0 \\\\ \sum_{i=1}^{m}P_ix_i^0 = b \end{cases}

4 . 将方程组两边分别相加 并计算 :

θ ( P j i = 1 m a i j P i ) + i = 1 m P i x i 0 = 0 + b θ P j θ i = 1 m a i j P i + i = 1 m P i x i 0 = b i = 1 m ( x i 0 θ a i j ) P i + θ P j = b \begin{array}{lcl} \theta ( P_j - \sum_{i=1}^m a_{ij}P_i ) + \sum_{i=1}^{m}P_ix_i^0 & = &0 + b \\\\ \theta P_j - \theta \sum_{i=1}^m a_{ij}P_i + \sum_{i=1}^{m}P_ix_i^0 & = & b \\\\ \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij}) P_i + \theta P_j & = & b \\\\ \end{array}

最终结果是 :

i = 1 m ( x i 0 θ a i j ) P i + θ P j = b \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij} ) P_i + \theta P_j = b



3.7 分析初始的约束方程



上面得到式子 :

i = 1 m ( x i 0 θ a i j ) P i + θ P j = b \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij} ) P_i + \theta P_j = b

该结果 正好是 满足 约束方程的 一个解 ; 初始的约束方程组为 :

j = 1 n P j x j = b \sum_{j = 1}^{n} P_j x_j = b

展开后为 :

P 1 x 1 + P 2 x 2 + + P j x j = b P_1x_1 + P_2x_2 + \cdots + P_jx_j = b

都是 x j x_j 取某些值 , 满足 让 j = 1 n P j x j \sum_{j = 1}^{n} P_j x_j 结果等于 b b ;

只要满足让 P j P_j 乘以一个数 x_j , 将这些 P j x j P_j x_j 相加 , 结果等于 b b , 那么这些 x j x_j 就是其中的一个解 ;

这个解如果都大于 0 , 那么这些解都是可行解 ;



3.8 分析 经过 方程组变换后的 式子 引入 变换后的 基可行解



1 . 向量形式分析 :

将 向量线性表达结果 与 初始基可行解代入结果 结合 经过各种变换后的 最终结果是 :

i = 1 m ( x i 0 θ a i j ) P i + θ P j = b \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij} ) P_i + \theta P_j = b

由此发现 , 该形式 与 初始的线性规划向量形式的 约束方程 的 形式 几乎一致 :

j = 1 n P j x j = b \sum_{j = 1}^{n} P_j x_j = b


2 . 展开式分析 :

将上面的

i = 1 m ( x i 0 θ a i j ) P i + θ P j = b \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij} ) P_i + \theta P_j = b

展开后为 :
( x 1 0 θ a 1 j ) P 1 + ( x 2 0 θ a 2 j ) P 2 + + ( x i 0 θ a i j ) P i + θ P j = b ( x_1^0 - \theta a_{1j}) P_1 + ( x_2^0 - \theta a_{2j}) P_2 + \cdots + ( x_i^0 - \theta a_{ij}) P_i + \theta P_j = b

线性方程标准形式展开后的结果 :

P 1 x 1 + P 2 x 2 + + P j x j = b P_1x_1 + P_2x_2 + \cdots + P_jx_j = b


3 . 关于解的说明 :

P 1 , P 2 , , P i , P j P_1 , P_2 , \cdots , P_i , P_j 都是系数向量 , 前面乘以的数就是 对应的解 ;

i = 1 m ( x i 0 θ a i j ) P i + θ P j \sum_{i=1}^{m} ( x_i^0 - \theta a_{ij}) P_i + \theta P_j 式子中 P i P_i P j P_j 系数相乘的取值就是满足 约束方程 j = 1 n P j x j = b \sum_{j = 1}^{n} P_j x_j = b 的一个解 ;

即 :

系数向量 P 1 P_1 对应的解是 ( x 1 0 θ a 1 j ) ( x_1^0 - \theta a_{1j}) ;
系数向量 P 2 P_2 对应的解是 ( x 2 0 θ a 2 j ) ( x_2^0 - \theta a_{2j}) ;
\vdots
系数向量 P i P_i 对应的解是 ( x i 0 θ a i j ) ( x_i^0 - \theta a_{ij}) ;
系数向量 P j P_j 对应的解是 θ \theta ;


第一次迭代后的 解 为 :

X ( 1 ) = ( x 1 0 θ a 1 j , x 2 0 θ a 2 j , , x m 0 θ a m j , 0 , , θ , , 0 ) T X^{(1)}=( x_1^0 - \theta a_{1j} ,x_2^0 - \theta a_{2j} , \cdots , x_m^0 - \theta a_{mj} , 0 , \cdots , \theta , \cdots , 0 )^T

初始线性规划的基可行解为 X ( 0 ) = ( x 1 0 , x 2 0 , , x m 0 , 0 , , 0 ) T X^{(0)}=( x_1^0 , x_2^0, \cdots , x_m^0 , 0 , \cdots , 0 )^T ;



3.9 θ \theta 的取值分析



1 . 可行解的非负约束 : 线性规划 解出的基解 , 满足约束方程组的另外一个条件是 , 这一组解是基可行解 , 即这些解都要大于等于 0 , 要满足解的非负约束 ;

满足所有约束条件的解才是基可行解 , 约束条件除了满足约束方程约束外 , 还要满足变量的非负约束 ;


2 . 分析解 : 下面是第一次迭代出的解 , 如果下面的解都是可行解 , 则所有的解必须大于等于 0 ;

X ( 1 ) = ( x 1 0 θ a 1 j , x 2 0 θ a 2 j , , x m 0 θ a m j , 0 , , θ , , 0 ) T X^{(1)}=( x_1^0 - \theta a_{1j} ,x_2^0 - \theta a_{2j} , \cdots , x_m^0 - \theta a_{mj} , 0 , \cdots , \theta , \cdots , 0 )^T

上述解都必须大于等于 0 0 , 才是可行解 , 因此有下面的式子 :

x i 0 θ a i j 0 i = 1 , 2 , , m x i 0 θ a i j \begin{array}{lcl} x_i^0 - \theta a_{ij} \geq 0 & i = 1 , 2 , \cdots , m \\\\ x_i^0 \geq \theta a_{ij} \end{array}

因为 θ \theta 是正数 , 可以在等式两边都除以 θ \theta , 得到下面的表达式 :

a i j x i 0 θ a_{ij} \leq \frac{x_i^0}{\theta}

a i j a_{ij} 要满足上面的条件 , 该解才是可行解 ;


3 . a i j a_{ij} 取值有两种情况 :

  • a i j 0 a_{ij} \leq 0 ;
  • a i j > 0 a_{ij} > 0 ;

下面会 根据 a i j a_{ij} 的取值 , 分情况讨论 θ \theta 取值 ;


4 . a i j 0 a_{ij} \leq 0 的情况 :

如果 a i j 0 a_{ij} \leq 0 , a i j x i 0 θ a_{ij} \leq \frac{x_i^0}{\theta} 肯定成立 , 因为 x i 0 x_i^0 θ \theta 都是整数 , 两个数相除 , 肯定也是正数 , 正数肯定大于负数 ;

m m 个约束不等式 至少有一个等号是成立的 , 当 a i j 0 a_{ij} \leq 0 时 , 式子 a i j x i 0 θ a_{ij} \leq \frac{x_i^0}{\theta} 肯定成立 ;


5 . a i j > 0 a_{ij} > 0 时的情况 :

假设 a i j , a 2 j , , a m j a_{ij} , a_{2j} , \cdots , a_{mj} 中最小的是第 l l 个 , 即 a l j a_{lj} , 那么有下面的式子 :

θ = m i n { x i 0 a i j a i j > 0 } = x l 0 a l j \theta = min\begin{Bmatrix}\\\\ \frac{x_i^0}{a_{ij}} | a_{ij} > 0 \\\\ \end{Bmatrix} =\frac{x_l^0}{a_{lj}}

θ \theta x i 0 a i j \frac{x_i^0}{a_{ij}} 中最小的那个值 , 当 i = l i=l 时 , 该值最小 ;

这样可以确保 :

  • ① 当 x i 0 θ a i j = 0 x_i^0 - \theta a_{ij} = 0 时 , i = l i=l ;
  • ② 当 x i 0 θ a i j 0 x_i^0 - \theta a_{ij} \geq 0 时 , i l i \not=l ;

这个 θ \theta 是单纯形法中最重要的 最小比值规则 ;

将上述 θ \theta 代入初始的基解 X ( 1 ) X^{(1)} 得到的就是可行解 : 下面的解都是可行解 ;

X ( 1 ) = ( x 1 0 θ a 1 j , x 2 0 θ a 2 j , , x m 0 θ a m j , 0 , , θ , , 0 ) T X^{(1)}=( x_1^0 - \theta a_{1j} ,x_2^0 - \theta a_{2j} , \cdots , x_m^0 - \theta a_{mj} , 0 , \cdots , \theta , \cdots , 0 )^T



3.10 验证基矩阵 及 初等行变换



1 . 判定解是否可行 : 上面的解是可行解 , 下面需要验证这些可行解对应的向量是否能组成一个基 , 即 判定这个解是否是基可行解 ;


2 . 向量替换 : 将第一次变换的 P j P_j 放到原基中 , 原来的初始基是单位阵 , 即 P 1 , P 2 , , P m P_1 , P_2 , \cdots , P_m , 将其中的 P l P_l 替换成 P j P_j , 已经验证过解出的解是可行解 , 现在要验证 P j P_j 向量替换 P l P_l 后 , 该矩阵是不是基矩阵 ;


3 . 判定基 : 新的矩阵的行列式值不等于 0 0 , 则说明该矩阵是基矩阵 , 因为除 P j P_j 外其余都是单位阵 , 显然该行列式不等于 0 0 , 该矩阵是基矩阵 ;


4 . 单位阵转换 : 该解作为迭代后的新的基可行解 , 为了方便下一步推导 , 我们希望对应的基向量都是单位向量 ; 这里需要使用矩阵的初等行变换 , 将其转为单位向量 ;


5 . 初等行变换 : P j P_j 列 , 替换成单位列 , P j P_j 向量中 , a l j a_{lj} 除以 a l j a_{lj} , 变成 1 1 ,



4 . 最优性检验 和 解的判别





4.1 将 基可行解 代入方程



将上述 初始基可行解
X ( 0 ) = ( x 1 0 , x 2 0 , , x m 0 , 0 , , 0 ) T X^{(0)}=( x_1^0 , x_2^0, \cdots , x_m^0 , 0 , \cdots , 0 )^T , 和 第一次迭代后的基可行解 X ( 1 ) = ( x 1 0 θ a 1 j , x 2 0 θ a 2 j , , x m 0 θ a m j , 0 , , θ , , 0 ) T X^{(1)}=( x_1^0 - \theta a_{1j} ,x_2^0 - \theta a_{2j} , \cdots , x_m^0 - \theta a_{mj} , 0 , \cdots , \theta , \cdots , 0 )^T , 分别代入约束方程的目标函数 :

m a x Z = C X = j = 1 n c j x j max Z = CX = \sum_{j=1}^n c_j x_j


代入 X ( 0 ) X^{(0)} , 因为只有前 m m 项是非 0 0 的 , 后面的解都是 0 0 , 代入后的结果 :

Z ( 0 ) = i = 1 m c i x i 0 Z^{(0)} = \sum_{i = 1}^m c_i x_i^0


代入 X ( 1 ) X^{(1)} , 只有前 m m 项 , 和第 j j 项的解是非 0 0 的 , 其余的解都是 0 0 , 前 m m 项 解为 ( x i 0 θ a i j ) (x_i^0 - \theta a_{ij}) 其中 ( i = 1 , 2 , , m ) ( i = 1 , 2 , \cdots , m) 代入后为

i = 1 m c i ( x i 0 θ a i j ) \sum_{i = 1}^m c_i ( x_i^0 - \theta a_{ij} )

j j 项解为 θ \theta , 代入后为 θ c j \theta c_j ;

整体目标函数代入结果 :

Z ( 1 ) = i = 1 m c i ( x i 0 θ a i j ) + θ c j Z^{(1)} = \sum_{i = 1}^m c_i ( x_i^0 - \theta a_{ij} ) + \theta c_j



4.2 引入 检验数



1 . 合并同类项 :

在上面的 Z ( 1 ) Z^{(1)} 基础上 , 将其中的 i = 1 m c i x i 0 \sum_{i = 1}^m c_i x_i^0 通过合并同类项 , 提取出来 :

Z ( 1 ) = i = 1 m c i ( x i 0 θ a i j ) + θ c j Z^{(1)} = \sum_{i = 1}^m c_i ( x_i^0 - \theta a_{ij} ) + \theta c_j
Z ( 1 ) = i = 1 m c i x i 0 i = 1 m c i θ a i j + θ c j Z^{(1)} = \sum_{i = 1}^m c_i x_i^0 - \sum_{i = 1}^m c_i \theta a_{ij} + \theta c_j
Z ( 1 ) = i = 1 m c i x i 0 + θ c j i = 1 m c i θ a i j Z^{(1)} = \sum_{i = 1}^m c_i x_i^0 + \theta c_j - \sum_{i = 1}^m c_i \theta a_{ij}
Z ( 1 ) = i = 1 m c i x i 0 + θ ( c j i = 1 m c i a i j ) Z^{(1)} = \sum_{i = 1}^m c_i x_i^0 + \theta ( c_j - \sum_{i = 1}^m c_i a_{ij} )


2 . 代入 Z ( 0 ) Z^{(0)} :

其中 Z ( 1 ) = i = 1 m c i x i 0 Z^{(1)} = \sum_{i = 1}^m c_i x_i^0 , 将 i = 1 m c i x i 0 \sum_{i = 1}^m c_i x_i^0 使用 Z ( 0 ) Z^{(0)} 替换 , 得到 :


Z ( 1 ) = Z ( 0 ) + θ ( c j i = 1 m c i a i j ) Z^{(1)} = Z^{(0)} + \theta ( c_j - \sum_{i = 1}^m c_i a_{ij} )


3 . 引入检验数 :

分析下面的式子 :

Z ( 1 ) = Z ( 0 ) + θ ( c j i = 1 m c i a i j ) Z^{(1)} = Z^{(0)} + \theta ( c_j - \sum_{i = 1}^m c_i a_{ij} )

  • ① 分析差距 : X ( 1 ) X^{(1)} 对应的目标函数值 Z ( 1 ) Z^{(1)} , 与 X ( 0 ) X^{(0)} 对应的目标函数值 Z ( 0 ) Z^{(0)} , 其唯一的差距就是 θ ( c j i = 1 m c i a i j ) \theta ( c_j - \sum_{i = 1}^m c_i a_{ij} ) 值 , θ \theta 是正数 ;

  • ② 目标函数增大趋势 : 如果后面的这部分 ( c j i = 1 m c i a i j ) ( c_j - \sum_{i = 1}^m c_i a_{ij} ) 大于 0 0 , 说明目标函数值是增大的 , 即目标函数值还有增大的可能性 ;

  • ③ 目标函数减小趋势 : 如果后面的这部分 ( c j i = 1 m c i a i j ) ( c_j - \sum_{i = 1}^m c_i a_{ij} ) 小于 0 0 , 说明迭代后目标函数值会变小 , 那么当前函数的值就是最优解 ;


检验数引入 : 下面的值非常重要 , 称为 “检验数” , 用于判断当前基可行解是否最优的检验数 , 记为符号 σ j \sigma_j :
σ j = c j i = 1 m c i a i j \sigma_j = c_j - \sum_{i = 1}^m c_i a_{ij}



4.3 解判别的方法



1 . 之前推导的内容 :

迭代前的解 :

Z ( 0 ) = i = 1 m c i x i 0 Z^{(0)} = \sum_{i = 1}^m c_i x_i^0

迭代后的解 :

Z ( 1 ) = Z ( 0 ) + θ ( c j i = 1 m c i a i j ) Z^{(1)} = Z^{(0)} + \theta ( c_j - \sum_{i = 1}^m c_i a_{ij} )

将后者减去前者 , 得到一个检验数 σ j \sigma_j :

σ j = c j i = 1 m c i a i j \sigma_j = c_j - \sum_{i = 1}^m c_i a_{ij}


2 . 最优解 : 当所有的非基变量检验数 σ j 0 \sigma_j \leq 0 时 , 即 任何 基变换 后的目标函数 Z ( 1 ) Z^{(1)} , 其都是 Z ( 0 ) Z^{(0)} 与一个小于等于 0 0 的数之和 , 任何基变换都会导致目标函数值减小 , 该解 Z ( 0 ) Z^{(0)} 对应的的目标函数值是最大值 , 该解是最优解 ;


3 . 无穷多最优解 : 当所有的非基变量检验数 σ j 0 \sigma_j \leq 0 时 , 其中有非基变量 x j x_j 的检验数 σ j = 0 \sigma_j = 0 , 那么说明有两个点可以使目标函数达到最大值 , 这两个点之间的连线都是最优解 , 这种情况下有无穷多最优解 ;


4 . 唯一最优解 : 当所有的非基变量检验数 σ j < 0 \sigma_j < 0 时 , 当前解是最优解 ;


5 . 无界解 : 如果存在某个非基变量的检验数 σ j > 0 \sigma_j > 0 , 而该非基变量对应的非基向量 P j 0 P_j \leq 0 , 则该线性规划有无界解 ;

  • ① 分析检验数 与 P j P_j : 如果 P j 0 P_j \leq 0 , 那么 该向量中所有的数 a i j a_{ij} ( i = 1 , 2 , , m i = 1 , 2 , \cdots , m ) 都是小于等于 0 0 的 , 此时检验数
    σ j = c j i = 1 m c i a i j \sigma_j = c_j - \sum_{i = 1}^m c_i a_{ij} 此时 σ j \sigma_j 变成正数 ;

  • ② 分析 Z ( 1 ) Z^{(1)} 目标函数值 :

Z ( 1 ) = i = 1 m c i ( x i 0 θ a i j ) + θ c j Z^{(1)} = \sum_{i = 1}^m c_i ( x_i^0 - \theta a_{ij} ) + \theta c_j

如果 a i j a_{ij} ( i = 1 , 2 , , m i = 1 , 2 , \cdots , m ) 都是小于等于 0 0 的 , x i 0 θ a i j x_i^0 - \theta a_{ij} 值肯定大于 0 0 , θ \theta 取任意大的值 , 都符合要求 , 此时目标函数 Z ( 1 ) Z^{(1)} 值会无限大 ;



4.4 线性规划解判别定理



1 . 最优解判别定理 :

  • ① 条件 1 : X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 为基可行解 ;
  • ② 条件 2 : 并且全部的检验数 σ j 0 \sigma_j \leq 0 , j = m + 1 , , n j = m+1 , \cdots , n ;
  • ③ 结论 : 此时的 X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 最优解 ;

2 . 唯一最优解判别定理 :

  • ① 条件 1 : X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 为基可行解 ;
  • ② 条件 2 : 并且全部的检验数 σ j < 0 \sigma_j < 0 , j = m + 1 , , n j = m+1 , \cdots , n ;
  • ③ 结论 : 此时的 X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 唯一最优解 ;

3 . 无穷多最优解判别定理 :

  • ① 条件 1 : X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 为基可行解 ;
  • ② 条件 2 : 并且全部的检验数 σ j 0 \sigma_j \leq 0 , j = m + 1 , , n j = m+1 , \cdots , n ;
  • ③ 条件 3 : 存在一个 非基变量 x m + k x_{m+k} 的检验数 σ m + k = 0 \sigma_{m+k} = 0 ;
  • ④ 结论 : 此时的 X ( 0 ) = ( b 1 , b 2 , , b m , 0 , , 0 ) T X^{( 0 )} = ( b_1^{'} , b_2^{'} , \cdots , b_m^{'} , 0 , \cdots , 0 ) ^T 唯一最优解 ;

如果两个顶点都能取得最优值 , 那么两个顶点之间的连线 ( 有无穷多个点 ) 肯定也能取得最优值 ;


4. 无界解判别定理 :

  • ① 条件 1 : 若 存在一个 非基变量 x m + k x_{m+k} 的 检验数 σ m + k > 0 \sigma_{m+k} > 0 ;
  • ② 条件 2 : 其对应的非基变量的所有系数 a i , m + k 0 a_{i , m+k} \leq 0 , i = 1 , 2 , , m i = 1 , 2 , \cdots , m ;
  • ③ 结论 : 此时的 线性规划 具有无界解 ;

发布了252 篇原创文章 · 获赞 1013 · 访问量 168万+

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/103348812
今日推荐