文章目录
- 一、单纯形法计算示例 ( 上篇博客回顾总结 )
- 二、迭代原则
- 三、最优解推导
- 四、出基与入基
- 五、出基与入基变量选择
一、单纯形法计算示例 ( 上篇博客回顾总结 )
在上一篇博客 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 线性规划求解示例 ) 博客给出了一个线性规划的示例 , 并进行了 查找初始基可行解 , 和 判定该基可行解是否是最优解 ;
在目标函数中 , 将基可行解代入目标函数中
- 不是最优解情况 : 非基变量的系数都是大于
的数值 , 该基可行解不是最优解 ;
- 是最优解情况 : 只有当 非基变量的系数都是小于等于
的数时 , 该基可行解才是最优解 ;
线性规划标准形式为 :
单纯形表 :
c j c_j cj | c j c_j cj | 3 3 3 | 4 4 4 | 0 0 0 | 0 0 0 | ||
---|---|---|---|---|---|---|---|
C B C_B CB 基变量系数 (目标函数) | 基变量 | 常数 b b b | x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | θ i theta_i θi |
0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 ) | x 3 x_3 x3 | 40 40 40 | 2 2 2 | 1 1 1 | 1 1 1 | 0 0 0 | |
0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4) | x 4 x_4 x4 | 30 30 30 | 1 1 1 | 3 3 3 | 0 0 0 | 1 1 1 | |
σ j sigma_j σj | 3 3 3 | 4 4 4 | 0 0 0 | 0 0 0 |
基变量系数 (目标函数)基变量常数
( 目标函数
系数
)
( 目标函数
系数
)
选择
作为基矩阵 , 基变量是
,
, 初始基可行解是
, 经过计算 , 其目标函数中
的系数是
,
的系数是
, 都是大于
的数 , 该基可行解不是基解 , 继续向下迭代 ;
二、迭代原则
上述解出的基可行解
不是最优解 , 那么 需要迭代下一个基可行解 , 下面开始讲解 , 如何进行迭代 ;
上述的解中 , 非基变量
和
取
不是最好的选择 , 那么 这两个变量最好取非
的值 , 求解线性规划的思路是 :
- 在无穷多个可行解中迭代 , 得到最优解 ;
- 上述思路可以转化成在有限个基可行解中迭代 , 得到最优解 ;
- 无限 -> 有限 : 可行解 是无限个的 , 基可行解 是有限个 ;
三、最优解推导
取值为
不是最优解 , 约束条件要求这两个变量必须大于等于
, 那么只能取值大于
, 下面讨论这两个变量取值大于
的情况 ;
的系数是
,
的系数是
, 如果
取
, 目标函数
, 将
任意一个增大 , 其目标函数的值都会增大 ;
- 增大
: 此时可以选择将
增大 ,
增加
, 目标函数就会增加
;
- 增大
: 也可以选择将
增大 ,
增加
, 目标函数就会增加
, 只要是目标函数随变量增加而增加即可 ;
增大
,
不能无限增大 , 其需要受到
约束方程约束 ,
- 受第一个方程约束 , 增大
, 最多是
都取值
,
理论上最大值时
;
- 受第一个方程约束 , 增大
, 最多是
都取值
,
理论上最大值时
;
最大就能取值到
, 否则无法满足第二个约束方程 , 如果
取
, 那么在第二个方程中 , 就会出现有变量为负数 , 就不符合约束条件了 , 因此
最大只能取到
;
那么开始增加
的值 , 目标函数
, 增大
, 如果
从
增加到
, 目标函数可以增加
,
c j c_j cj | c j c_j cj | 3 3 3 | 4 4 4 | 0 0 0 | 0 0 0 | ||
---|---|---|---|---|---|---|---|
C B C_B CB 基变量系数 (目标函数) | 基变量 | 常数 b b b | x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | θ i theta_i θi |
0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 ) | x 3 x_3 x3 | 40 40 40 | 2 2 2 | 1 1 1 | 1 1 1 | 0 0 0 | 40 40 40 ( θ 3 theta_3 θ3 ) |
0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4) | x 4 x_4 x4 | 30 30 30 | 1 1 1 | 3 3 3 | 0 0 0 | 1 1 1 | 10 10 10 ( θ 4 theta_4 θ4 ) |
σ j sigma_j σj | 3 3 3 | 4 4 4 | 0 0 0 | 0 0 0 |
基变量系数 (目标函数)基变量常数
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
四、出基与入基
基可行解 : 选择可行基 , 自然会产生基变量 ( 可行基对应变量 ) , 与非基变量 , 非基变量取值为
, 解出基变量 , 此时基变量的解与
组合成基可行解 ;
上一次的初始基可行解选择时 ,
和
是基变量 ,
和
是非基变量 , 非基变量取值必须为
;
如果
变成了非
取值 , 此时就需要将
设置成基变量 ;
基变量的个数是固定的 , 本示例中是
个 , 如果将
设置成基变量 , 那么就需要将之前的
和
中其中一个基变量替换成
, 被替换的基变量变成非基变量 ;
因此该迭代的过程又称为出基 , 入基过程 ;
- 出基 :
有一个变量设置成非基变量 , 称为出基 ;
- 入基 :
设置成基变量 , 称为入基 ;
五、出基与入基变量选择
入基变量选择 : 具体哪个变量入基 , 是由检验数决定的 , 检验数
较大的入基 ;
的检验数
是
, 大于
, 因此这里选择
作为入基变量 ;
出基变量选择 : 系数矩阵中 , 常数列
, 分别除以除以入基变量大于
的系数列
, 得出结果是
, 然后选择一个最小值
, 查看该最小值对应的变量是
, 选择该变量作为出基变量 ;
这里将出基变量与入基变量选择好了 ,
的检验数较大 , 选择
作为入基变量 ,
的
较小 , 选择
作为出基变量 ;
入基出基操作完成后 , 基变量变成了
;