单纯形法 参考博客 :
1 . 查找初始基可行解 :
2 . 最优解判定 :
3 . 迭代原则 :
4 . 单纯形法阶段总结 :
使用单纯形法求解线性规划最优解 :
首先将该线性规划转为标准形式 :
参考 【运筹学】线性规划数学模型标准形式 ( 标准形式 | 目标函数转化 | 决策变量转化 | 约束方程转化 | 固定转化顺序 | 标准形式转化实例 ) 线性规划 普通形式 -> 标准形式 转化顺序说明 博客 , 先处理变量约束 , 再将不等式转为等式 , 最后更新目标函数 ;
① 变量约束 : 首先查看变量约束 , 两个变量都是
的 , 符合线性规划标准形式要求 ;
② 不等式转换 : 两个等式都是 小于等于不等式 , 需要 在不等式左侧加入松弛变量 , 将其转为等式 ;
, 左侧加入松弛变量
, 变为
, 左侧加入松弛变量
, 变为
③ 更新目标函数 : 将
和
加入到目标函数中 , 得到新的目标函数
;
此时线性规划标准形式为 :
找基矩阵 :
上述线性规划标准形式的系数矩阵为
, 其中子矩阵中有
单位阵
;
使用该单位阵
作为基矩阵 , 单位阵肯定是可逆的 , 其对应的基解 , 解出后的值就是右侧的常数值 , 肯定大于等于
, 是基可行解 ;
列出单纯形表 :
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 ( σ 1 \sigma_1 σ1 ) | 4 4 4 ( σ 2 \sigma_2 σ2 ) | 0 0 0 | 0 0 0 | |
– | – | – | – | – | – | – | – |
0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 ) | x 3 x_3 x3 | 30 30 30 | 5 3 \dfrac{5}{3} 35 | 0 0 0 | 1 1 1 | − 1 3 -\dfrac{1}{3} −31 | ? ? ? ( θ 3 \theta_3 θ3 ) |
4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2) | x 2 x_2 x2 | 10 10 10 | 1 3 \dfrac{1}{3} 31 | 1 1 1 | 0 0 0 | 1 3 \dfrac{1}{3} 31 | ? ? ? ( θ 2 \theta_2 θ2 ) |
σ j \sigma_j σj ( 检验数 ) | | | 5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 ) | 0 0 0 | 0 0 0 | − 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 ) | |
基变量系数 (目标函数)基变量常数
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
(
)
(
)
––––––––
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
( 检验数 )
(
)
(
)
新的 基变量是
, 对应的基矩阵是
, 非基变量是
, 对应的非基矩阵是
, 将非基变量设置为
, 方程组为
, 解出基变量为
, 基可行解 为
判定最优解 并选择入基变量
根据 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | 系数计算方法 | 根据系数是否小于等于 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 ( σ 1 \sigma_1 σ1 ) | 4 4 4 ( σ 2 \sigma_2 σ2 ) | 0 0 0 | 0 0 0 | |
– | – | – | – | – | – | – | – |
0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 ) | x 3 x_3 x3 | 30 30 30 | 5 3 \dfrac{5}{3} 35 | 0 0 0 | 1 1 1 | − 1 3 -\dfrac{1}{3} −31 | 18 18 18 ( θ 3 \theta_3 θ3 ) |
4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2) | x 2 x_2 x2 | 10 10 10 | 1 3 \dfrac{1}{3} 31 | 1 1 1 | 0 0 0 | 1 3 \dfrac{1}{3} 31 | 30 30 30 ( θ 2 \theta_2 θ2 ) |
σ j \sigma_j σj ( 检验数 ) | | | 5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 ) | 0 0 0 | 0 0 0 | − 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 ) | |
基变量系数 (目标函数)基变量常数
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
(
)
(
)
––––––––
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
( 检验数 )
(
)
(
)
当前的方程组为
, 选择
作为基变量 , 基矩阵为
, 进行同解变换 , 将基矩阵转为单位阵 ;
方程
同解变换 :
将
方程中的
的系数变为
,
的系数为
保持不变 ;
方程的左右变量乘以
:
当前方程组变成
方程
同解变换 : 将方程
乘以
, 与方程
相加 ;
① 方程
乘以
:
② 与方程
相加 :
当前方程组变成
更新一下单纯形表 : 将第三次迭代的矩阵填入下面的单纯形表中 ;
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 ( σ 1 \sigma_1 σ1 ) | 4 4 4 ( σ 2 \sigma_2 σ2 ) | 0 0 0 | 0 0 0 | |
第一次迭代 | – | – | – | – | – | – | – |
0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 ) | x 3 x_3 x3 | 30 30 30 | 5 3 \dfrac{5}{3} 35 | 0 0 0 | 1 1 1 | − 1 3 -\dfrac{1}{3} −31 | 18 18 18 ( θ 3 \theta_3 θ3 ) |
4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2) | x 2 x_2 x2 | 10 10 10 | 1 3 \dfrac{1}{3} 31 | 1 1 1 | 0 0 0 | 1 3 \dfrac{1}{3} 31 | 30 30 30 ( θ 2 \theta_2 θ2 ) |
σ j \sigma_j σj ( 检验数 ) | | | 5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 ) | 0 0 0 | 0 0 0 | − 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 ) | |
第二次迭代 | – | – | – | – | – | – | – |
3 3 3 ( 目标函数 x 1 x_1 x1 系数 c 1 c_1 c1 ) | x 1 x_1 x1 | 18 18 18 | 1 1 1 | 0 0 0 | 3 5 \dfrac{3}{5} 53 | − 1 5 -\dfrac{1}{5} −51 | ? ? ? ( θ 3 \theta_3 θ3 ) |
4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2) | x 2 x_2 x2 | 4 4 4 | 0 0 0 | 1 1 1 | − 1 5 -\dfrac{1}{5} −51 | 2 5 \dfrac{2}{5} 52 | ? ? ? ( θ 2 \theta_2 θ2 ) |
σ j \sigma_j σj ( 检验数 ) | | | 0 0 0 | 0 0 0 | ? ? ? ( σ 3 \sigma_3 σ3 ) | ? ? ? ( σ 4 \sigma_4 σ4 ) | |
基变量系数 (目标函数)基变量常数
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
(
)
(
)
第一次迭代–––––––
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
( 检验数 )
(
)
(
)第二次迭代–––––––
( 目标函数
系数
)
(
)
( 目标函数
系数
)
(
)
( 检验数 )
(
)
(
)
计算检验数
:
两个非基变量的检验数都是小于等于
的 , 因此该基可行解
是最优解 ;
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有