【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★
文章目录
- 一、运输规划模型
- 1、产销平衡模型
- 2、产销不平衡模型
- 二、运输规划数学模型变量个数
- 三、表上作业法
- 四、表上作业法 : 求初始基可行解
- 1、最小元素法
- 2、差额法 ( Vogel ) 推荐方法 ★★
- 五、表上作业法 : 最优解判别
- 1、闭回路法
- 2、闭回路法示例 1
- 3、初始基可行解
- 4、计算检验数
- 5、调整运量 ( 换基 )
- 6、闭回路法示例 2
一、运输规划模型
参考博客 :
- 【运筹学】运输规划 ( 运输规划问题的数学模型 | 运输问题引入 )
- 【运筹学】运输规划 ( 运输规划基变量个数分析 )
- 【运筹学】运输规划 ( 运输规划基变量个数 | 运输问题一般形式 | 产销平衡 | 产销不平衡 )
- 【运筹学】运输规划 ( 运输规划问题模型及变化 | 表上作业法引入 )
1、产销平衡模型
将 两个产地 A1\rm A_1A1 , A2\rm A_2A2 的物品运往 三个销售地 B1\rm B_1B1 , B2\rm B_2B2 , B3\rm B_3B3 ,
各地的 产量 , 销量 ,
各个产地 运往 各个销售地 的每件物品的运费如下图所示 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | 产量 | |
---|---|---|---|---|
A1\rm A_1A1 | 666 | 444 | 666 | 200200200 |
A2\rm A_2A2 | 666 | 555 | 555 | 300300300 |
销量 | 150150150 | 150150150 | 200200200 |
A1,A2\rm A_1 , A_2A1,A2 的产量之和是 500500500 ,
B1,B2,B3\rm B_1 , B_2 , B_3B1,B2,B3 的总的销量之和是 500500500 ,
上述产量之和等于销量之和 , 是产销平衡的 ;
不同的产地运往不同的销地 , 运费不同 , 如何合理安排运输 , 能使总运费最少 ;
这里存在一个产销平衡问题 : 总产量 = 总销量 = 500500500 ;
假设变量 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | 产量 | |
---|---|---|---|---|
A1\rm A_1A1 | x1\rm x_1x1 | x2\rm x_2x2 | x3\rm x_3x3 | 200200200 |
A2\rm A_2A2 | x4\rm x_4x4 | x5\rm x_5x5 | x6\rm x_6x6 | 300300300 |
销量 | 150150150 | 150150150 | 200200200 |
A1\rm A_1A1 产地运往 B1\rm B_1B1 产地的产品数量是 x1\rm x_1x1 ,
A1\rm A_1A1 产地运往 B2\rm B_2B2 产地的产品数量是 x2\rm x_2x2 ,
A1\rm A_1A1 产地运往 B3\rm B_3B3 产地的产品数量是 x3\rm x_3x3 ,
A2\rm A_2A2 产地运往 B1\rm B_1B1 产地的产品数量是 x4\rm x_4x4 ,
A2\rm A_2A2 产地运往 B2\rm B_2B2 产地的产品数量是 x5\rm x_5x5 ,
A2\rm A_2A2 产地运往 B3\rm B_3B3 产地的产品数量是 x6\rm x_6x6 ;
存在以下等式约束 :
A1\rm A_1A1 的产量 x1+x2+x3=200\rm x_1 + x_2 + x_3 = 200x1+x2+x3=200 ;
A2\rm A_2A2 的产量 x4+x5+x6=300\rm x_4 + x_5 + x_6 = 300x4+x5+x6=300 ;
B1\rm B_1B1 的销量 x1+x4=150\rm x_1 + x_4 = 150x1+x4=150 ;
B2\rm B_2B2 的销量 x2+x5=150\rm x_2 + x_5= 150x2+x5=150 ;
B3\rm B_3B3 的销量 x3+x6=200\rm x_3 + x_6= 200x3+x6=200 ;
变量约束 : 每个变量肯定大于等于 0 ;
x1,x2,x3,x4,x5,x6≥0\rm x_1, x_2, x_3 , x_4 , x_5 , x_6 \geq 0x1,x2,x3,x4,x5,x6≥0
目标函数 : 目的是为了使运费最小 ;
minW=6x1+4x2+6x3+6x4+5x5+5x6\rm minW = 6x_1 + 4x_2 + 6x_3 + 6x_4 + 5x_5 + 5x_6minW=6x1+4x2+6x3+6x4+5x5+5x6
上述的目标函数与约束方程都是线性的 , 因此该规划是线性规划 ;
最终的线性规划如下 :
minW=6x1+4x2+6x3+6x4+5x5+5x6s.t{x1+x2+x3=200x4+x5+x6=300x1+x4=150x2+x5=150x3+x6=200x1,x2,x3,x4,x5,x6≥0\begin{array}{lcl} \rm minW = 6x_1 + 4x_2 + 6x_3 + 6x_4 + 5x_5 + 5x_6 \\\\ \rm s.t\begin{cases} \rm x_1 + x_2 + x_3 = 200 \\\\ \rm x_4 + x_5 + x_6 = 300 \\\\ \rm x_1 + x_4 = 150 \\\\ \rm x_2 + x_5= 150 \\\\ \rm x_3 + x_6= 200 \\\\ \rm x_1, x_2, x_3 , x_4 , x_5 , x_6 \geq 0 \end{cases}\end{array}minW=6x1+4x2+6x3+6x4+5x5+5x6s.t⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧x1+x2+x3=200x4+x5+x6=300x1+x4=150x2+x5=150x3+x6=200x1,x2,x3,x4,x5,x6≥0
使用单纯形法对上述规划求解即可得到最优解 ;
单纯形法解线性规划最优解过程 :
① 基可行解 : 先找到一个 初始基可行解 ;
② 检验数 : 计算检验数 , 判定当前基可行解是否是 最优解 ;
③ 迭代 : 根据检验数确定 入基变量 , 根据入基变量系数计算 出基变量 , 然后进行 同解变换 , 生成新的单纯形表 , 继续计算检验数 ;
首先确定基是多少 , 将上述线性规划 , 转为标准形 , 约束方程的系数矩阵 Am×n\rm A_{m \times n}Am×n 是 m×n\rm m \times nm×n 矩阵 , n≥m\rm n \geq mn≥m , n\rm nn 是变量个数 , m\rm mm 是约束方程个数 ,
假设 Am×n\rm A_{m \times n}Am×n 矩阵是行满秩的 , 即秩为 m\rm mm , 约束方程个数为 m\rm mm , 上述运输问题的约束方程个数是 555 个 ;
上述运输问题的系数矩阵为 : 555 个约束方程对应的是 5×6\rm 5 \times 65×6 矩阵 ;
(111000000111100100010010001001)\begin{pmatrix} \quad 1 \quad 1 \quad 1 \quad 0 \quad 0 \quad 0 \quad \\\\ \quad 0 \quad 0 \quad 0 \quad 1 \quad 1 \quad 1 \quad \\\\ \quad 1 \quad 0 \quad 0 \quad 1 \quad 0 \quad 0 \quad \\\\ \quad 0 \quad 1 \quad 0 \quad 0 \quad 1 \quad 0 \quad \\\\ \quad 0 \quad 0 \quad 1 \quad 0 \quad 0 \quad 1 \quad \end{pmatrix}⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛111000000111100100010010001001⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞
运输问题约束方程的 系数矩阵都是由 000 或 111 组成 的 , 这种矩阵称为 稀疏矩阵 , 稀疏矩阵的计算要远远比正常的矩阵更简单 ;
针对运输问题 , 存在一个简化版的单纯形法 ;
简化版的单纯形法与单纯形法的框架基本类似 , 也需要按照 ① 初始基可行解 , ② 最优解判定 , ③ 迭代 , 步骤进行计算 ;
2、产销不平衡模型
运输规划中 , 如果产量 = 销量 , 则 产销平衡 ;
如果 产量 ≥\geq≥ 销量 , 或 产量 ≤\leq≤ 销量 , 则 产销不平衡 ;
产量 === 销量 , 销量可以全部满足 , 产量可以满足 ,
产量的约束方程是 等式 ;
销量的约束方程是 等式 ;
产量 ≥\geq≥ 销量 , 销量可以全部满足 , 产量有些地方就有剩余的 ,
产量的约束方程就是 大于等于不等式 ;
销量的约束方程仍然是 等式 ;
产量 ≤\leq≤ 销量 , 产量可以全部满足 , 销量有些地方就有剩余的 ,
产量的约束方程仍然是 等式 ;
销量的约束方程仍然就是 小于等于不等式 ;
二、运输规划数学模型变量个数
参考博客 :
- 【运筹学】运输规划 ( 运输规划问题的数学模型 | 运输问题引入 )
- 【运筹学】运输规划 ( 运输规划基变量个数分析 )
- 【运筹学】运输规划 ( 运输规划基变量个数 | 运输问题一般形式 | 产销平衡 | 产销不平衡 )
- 【运筹学】运输规划 ( 运输规划问题模型及变化 | 表上作业法引入 )
运输规划问题数学模型基变量数定理 :
假设有 m\rm mm 个产地 , n\rm nn 个销地 , 并且 产销平衡 , 其基变量数为 m+n−1\rm m + n - 1m+n−1 ;
m\rm mm 个产地 , n\rm nn 个销地 , 变量个数是 m×n\rm m \times nm×n 个 ;
m\rm mm 个产地 , n\rm nn 个销地 , 约束方程个数是 m+n\rm m + nm+n 个 , 这些约束方程中 , 有一个是多余的 , 最本质的方程最多有 m+n−1\rm m + n - 1m+n−1 个 ;
任意删掉一个约束方程 , 就不再有多余的方程了 ;
确定约束方程个数后 , 就确定了基矩阵的秩 , 根据单纯形法的基本流程 , 第一步找初始基可行解 , 可行基就知道找什么样的可行基了 ;
单纯形法解线性规划最优解过程 :
① 基可行解 : 先找到一个 初始基可行解 ;
② 检验数 : 计算检验数 , 判定当前基可行解是否是 最优解 ;
③ 迭代 : 根据检验数确定 入基变量 , 根据入基变量系数计算 出基变量 , 然后进行 同解变换 , 生成新的单纯形表 , 继续计算检验数 ;
三、表上作业法
运输问题线性规划 本质也是线性规划 , 是特殊的线性规划 , 其 最优解 可以使用 单纯形法 求得 ;
运输问题是线性规划中比较简单的模型 , 其系数矩阵中的元素都是 0,10,10,1 , 是稀疏矩阵 , 可以使用简化版的单纯形法求最优解 , 该方法称为 " 表上作业法 " ;
m\rm mm 个产地 , n\rm nn 个销地 , 变量个数是 m×n\rm m \times nm×n 个 ;
m\rm mm 个产地 , n\rm nn 个销地 , 约束方程个数是 m+n\rm m + nm+n 个 , 这些约束方程中 , 有一个是多余的 , 最本质的方程最多有 m+n−1\rm m + n - 1m+n−1 个 ;
第一步 , 开始找 初始基可行解 , 基变量个数是 m+n−1\rm m + n - 1m+n−1 个 , 基矩阵的秩是 m+n−1\rm m + n - 1m+n−1 ;
求解基可行解时 , 非基变量取值 000 , 基变量允许非 000 变量 , 找 m+n−1\rm m + n - 1m+n−1 个基变量 ,
第二步 , 找到一个规则 , 判断是否是最优解 ;
第三步 , 如果不是最优解 , 进行 迭代 , 如何进行迭代 ;
四、表上作业法 : 求初始基可行解
1、最小元素法
运输问题如下 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问题 , 表格中的内容是 某产地运往某销地的运费 ;
上述运输规划问题 总共有 m×n=3×4=12\rm m \times n = 3 \times 4 = 12m×n=3×4=12 个变量 ;
基变量个数 =m+n−1=3+4−1=6\rm = m + n - 1 = 3 + 4 - 1 = 6=m+n−1=3+4−1=6 ;
初始基可行解中需要找 666 个变量作为基变量 , 其取值是非 000 的 ; 剩余的 666 个变量是非基变量 , 取值为 000 ;
运输规划的目的是使总运费最小 ,
这里引入 最小元素法 思想 , 基本原则是 " 安排运输方案时 , 从单位成本最小的开始安排 " , 优先满足运费最小的运输 , 然后再考虑其它情况 ;
最小元素法基本思想 :
就近供应 , 从运费最小的地方开始供应 , 然后逐步供应运费稍高的地方 , 直到最终供应完毕为止 ;
每个表格中需要填写两部分 , 第一部分是 cij\rm c_{ij}cij 运费 , 第二部分是变量 xij\rm x_{ij}xij ;
第 111 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到最小的 , 即 111 ; 对应表格第 222 行第 111 列 , A2\rm A_2A2 产地运往 B1\rm B_1B1 销地的运费 ;
产地分析 : 对于产地 A2\rm A_2A2 来说 , 其生产 444 个 , 已经安排了 000 个 , 还可以再安排 444 个 ;
销地分析 : 对于销地 B1\rm B_1B1 来说需求 333 个 , 已经安排了 000 个 , 还可以再安排 333 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A2\rm A_2A2 向 B1\rm B_1B1 运输 333 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 333 | 101010 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 222 | 888 | 444 |
A3\rm A_3A3 | 777 | 444 | 101010 | 555 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 B1\rm B_1B1 的销量已经全部消耗完毕 , 该列就不需要安排其它产地向 B1\rm B_1B1 销地运输了 , 可以划掉这一列 , 讨论其它列的运输问题 ;
第 222 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的运费中找到最小的 , 即 222 ; 对应表格第 222 行第 333 列 , A2\rm A_2A2 产地运往 B3\rm B_3B3 销地的运费 ;
产地分析 : 对于产地 A2\rm A_2A2 来说 , 其生产 444 个 , 已经安排了 333 个 , 还可以再安排 111 个 ;
销地分析 : 对于销地 B3\rm B_3B3 来说需求 555 个 , 已经安排了 000 个 , 还可以再安排 555 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A2\rm A_2A2 向 B3\rm B_3B3 运输 111 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 333 | 101010 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 2,12,12,1 | 888 | 444 |
A3\rm A_3A3 | 777 | 444 | 101010 | 555 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 A2\rm A_2A2 的产量已经全部消耗完毕 , 该行就不需要安排向其它销地运输了 , 可以划掉这一行 , 讨论其它行列的运输问题 ;
第 333 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到最小的 , 即 333 ; 对应表格第 111 行第 333 列 , A1\rm A_1A1 产地运往 B3\rm B_3B3 销地的运费 ;
产地分析 : 对于产地 A1\rm A_1A1 来说 , 其生产 777 个 , 已经安排了 000 个 , 还可以再安排 777 个 ;
销地分析 : 对于销地 B3\rm B_3B3 来说需求 555 个 , 已经安排了 111 个 , 还可以再安排 444 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A1\rm A_1A1 向 B3\rm B_3B3 运输 444 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 3,43, 43,4 | 101010 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 2,12,12,1 | 888 | 444 |
A3\rm A_3A3 | 777 | 444 | 101010 | 555 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 B3\rm B_3B3 的销量已经全部消耗完毕 , 该列就不需要安排向其它产地向 B3\rm B_3B3 销地运输了 , 可以划掉这一列 , 讨论其它行列的运输问题 ;
第 444 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到最小的 , 即 444 ; 对应表格第 333 行第 222 列 , A3\rm A_3A3 产地运往 B2\rm B_2B2 销地的运费 ;
产地分析 : 对于产地 A3\rm A_3A3 来说 , 其生产 999 个 , 已经安排了 000 个 , 还可以再安排 999 个 ;
销地分析 : 对于销地 B2\rm B_2B2 来说需求 666 个 , 已经安排了 000 个 , 还可以再安排 666 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A3\rm A_3A3 向 B2\rm B_2B2 运输 666 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 3,43, 43,4 | 101010 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 2,12,12,1 | 888 | 444 |
A3\rm A_3A3 | 777 | 4,64,64,6 | 101010 | 555 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 B2\rm B_2B2 的销量已经全部消耗完毕 , 该列就不需要安排向其它产地向 B2\rm B_2B2 销地运输了 , 可以划掉这一列 , 讨论其它行列的运输问题 ;
第 555 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到最小的 , 即 555 ; 对应表格第 333 行第 444 列 , A3\rm A_3A3 产地运往 B4\rm B_4B4 销地的运费 ;
产地分析 : 对于产地 A3\rm A_3A3 来说 , 其生产 999 个 , 已经安排了 666 个 , 还可以再安排 333 个 ;
销地分析 : 对于销地 B4\rm B_4B4 来说需求 666 个 , 已经安排了 000 个 , 还可以再安排 666 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A3\rm A_3A3 向 B4\rm B_4B4 运输 333 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 3,43, 43,4 | 101010 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 2,12,12,1 | 888 | 444 |
A3\rm A_3A3 | 777 | 4,64,64,6 | 101010 | 5,35,35,3 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 A3\rm A_3A3 的产量已经全部消耗完毕 , 该行就不需要安排向其它销地运输了 , 可以划掉这一行 , 讨论其它行列的运输问题 ;
第 666 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到最小的 , 即 101010 ; 对应表格第 111 行第 444 列 , A1\rm A_1A1 产地运往 B4\rm B_4B4 销地的运费 ;
产地分析 : 对于产地 A1\rm A_1A1 来说 , 其生产 777 个 , 已经安排了 444 个 , 还可以再安排 333 个 ;
销地分析 : 对于销地 B4\rm B_4B4 来说需求 666 个 , 已经安排了 333 个 , 还可以再安排 333 个 ;
如果要使运费最低 , 优先让运费最低的情况 , 最大量运输 , 这里直接从 A1\rm A_1A1 向 B4\rm B_4B4 运输 333 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 3,43, 43,4 | 10,310,310,3 | 777 |
A2\rm A_2A2 | 1,31, 31,3 | 999 | 2,12,12,1 | 888 | 444 |
A3\rm A_3A3 | 777 | 4,64,64,6 | 101010 | 5,35,35,3 | 999 |
销量 | 333 | 666 | 555 | 666 |
此时 A1\rm A_1A1 的产量已经全部消耗完毕 , 该行就不需要安排向其它销地运输了 , 可以划掉这一行 , 讨论其它行列的运输问题 ;
此时 B4\rm B_4B4 的销量已经全部消耗完毕 , 该列就不需要安排向其它产地向 B4\rm B_4B4 销地运输了 , 可以划掉这一列 , 讨论其它行列的运输问题 ;
至此所有的行列全部划掉 , 所有的产销全部安排完毕 ;
此时找到的解就是运输问题的可行解 , 并且是基可行解 ;
基变量个数分析 : 在上述找基变量的时候 , 有 m\rm mm 行 n\rm nn 列 , 每找到一个基变量 , 或者划掉一行 , 或者划掉一列 , 最后的一个基变量同时花掉了一行一列 , 因此这里有 m+n−1\rm m + n - 1m+n−1 个基变量 ;
2、差额法 ( Vogel ) 推荐方法 ★★
使用 " 最小元素法 " , 属于贪婪算法 , 每次都找运费最小的优先供应 , 每个步骤的方案都是最优 , 局部最优 ,
每步最优不一定能使得全局最优 ;
" Vogel 方法 " 的核心思想就是从运价表中 , 分别计算 各行 , 各列 的 最小运费 和 次最小运费 差额 , 填写到表的 最右列 和 最下行 ;
基于如下运输问题进行分析 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问题 , 表格中的内容是 某产地运往某销地的运费 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 333 | 101010 | 777 | 000 |
A2\rm A_2A2 | 111 | 999 | 222 | 888 | 444 | 111 |
A3\rm A_3A3 | 777 | 444 | 101010 | 555 | 999 | 111 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 555 | 111 | 333 |
列差额 :
第 111 列 列差额 : 最小运费 111 , 次最小运费 333 , 差额是 222 ;
第 222 列 列差额 : 最小运费 444 , 次最小运费 999 , 差额是 555 ;
第 333 列 列差额 : 最小运费 222 , 次最小运费 333 , 差额是 111 ;
第 444 列 列差额 : 最小运费 555 , 次最小运费 888 , 差额是 333 ;
行差额 :
第 111 行 行差额 : 最小运费 333 , 次最小运费 333 , 差额是 000 ;
第 222 行 行差额 : 最小运费 111 , 次最小运费 222 , 差额是 111 ;
第 333 行 行差额 : 最小运费 444 , 次最小运费 555 , 差额是 111 ;
以 第 111 列 列差额 为例进行分析 , 最小运费 111 , 次最小运费 333 , 差额是 222 ; 如果不能使用最小运费 111 , 那么退而求其次 , 使用次最小运费 333 ; 最优方案无法使用 , 考虑次优方案 , 这两个方案的差距就是 列差额 222 , 次优方案比最优方案运费高 , 高 222 ;
第二列的列差额是 555 , 如果不能使用最优方案 , 使用次优方案 , 每个都要增加运费 555 , 这个增加的就太多了 , 应该 优先满足差额较高的行列 优先安排运输 ;
" Vogel 方法 " 将全局的最优考虑了进去 , 不再追求局部最优 , 使用该方法得出的初始基可行解 , 距离最优解更近 , 可以迭代更少次数 ;
第 111 个基变量 :
从所有 没有被划掉 的并且 没有被安排 的的运费中找到差额最大的 , 是 B2\rm B_2B2 的列差额 555 ;
B2\rm B_2B2 列最小运费 : 这里优先给 B2\rm B_2B2 销地的最小运费 444 安排运输 , 避免为其安排次小运费 , 对应表格第 333 行第 222 列 , A3\rm A_3A3 产地运往 B2\rm B_2B2 销地的运费 ;
产地分析 : 对于产地 A3\rm A_3A3 来说 , 其生产 999 个 , 已经安排了 000 个 , 还可以再安排 999 个 ;
销地分析 : 对于销地 B2\rm B_2B2 来说需求 666 个 , 已经安排了 000 个 , 还可以再安排 666 个 ;
最大安排最小运费运输 , 从 A3\rm A_3A3 向 B2\rm B_2B2 运输 666 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 101010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 888 | 444 | 111 |
A3\rm A_3A3 | 777 | 4̸\not 44 , 666 | 101010 | 555 | 999 | 111 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 333 |
此时 B2\rm B_2B2 的销量已经全部消耗完毕 , 该列就不需要安排其它产地向 B2\rm B_2B2 销地运输了 , 可以划掉这一列 , 讨论其它列的运输问题 ;
第 222 个基变量 :
划掉了 B2\rm B_2B2 行 , 这里重新计算行差与列差 ,
B1\rm B_1B1 , B3\rm B_3B3 列最小运费 与 次小运费 没有变化 , 行差额不变 ;
A1\rm A_1A1 , A2\rm A_2A2 行最小运费 与 次小运费 没有变化 , 行差额不变 ;
A3\rm A_3A3 行差额需要重新计算 , 最小运费被划掉了 , 此时最小运费是 555 , 次小运费是 777 , 行差额变为 222 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 101010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 888 | 444 | 111 |
A3\rm A_3A3 | 777 | 4̸\not 44 , 666 | 101010 | 555 | 999 | 222 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 333 |
从所有 没有被划掉 的并且 没有被安排 的的运费中找到差额最大的 , 是 B4\rm B_4B4 的列差额 333 ;
B4\rm B_4B4 列最小运费 : 这里优先给 B4\rm B_4B4 销地的最小运费 555 安排运输 , 避免为其安排次小运费 , 对应表格第 333 行第 444 列 , A3\rm A_3A3 产地运往 B4\rm B_4B4 销地的运费 ;
产地分析 : 对于产地 A3\rm A_3A3 来说 , 其生产 999 个 , 已经安排了 666 个 , 还可以再安排 333 个 ;
销地分析 : 对于销地 B4\rm B_4B4 来说需求 666 个 , 已经安排了 000 个 , 还可以再安排 666 个 ;
最大安排最小运费运输 , 从 A3\rm A_3A3 向 B4\rm B_4B4 运输 333 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 101010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 888 | 444 | 111 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 222 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 333 |
此时 A3\rm A_3A3 的产量已经全部消耗完毕 , 该行就不需要安排其它销地运输了 , 可以划掉这一行 , 讨论其它列的运输问题 ;
第 333 个基变量 :
划掉了 B2\rm B_2B2 行 , 这里重新计算行差与列差 ,
A1\rm A_1A1 , A2\rm A_2A2 行最小运费 与 次小运费 没有变化 , 行差额不变 ;
B1\rm B_1B1 , B3\rm B_3B3 列最小运费 与 次小运费 没有变化 , 列差额不变 ;
B4\rm B_4B4 列差额需要重新计算 , 最小运费被划掉了 , 此时最小运费是 888 , 次小运费是 101010 , 行差额变为 222 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 101010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 888 | 444 | 111 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 222 |
从所有 没有被划掉 的并且 没有被安排 的的运费中找到差额最大的 , 是 B1\rm B_1B1 和 B4\rm B_4B4 的列差额 222 ; 这两个任选一个都可以 ;
B4\rm B_4B4 列最小运费 : 这里优先给 B4\rm B_4B4 销地的最小运费 888 安排运输 , 避免为其安排次小运费 , 对应表格第 222 行第 444 列 , A2\rm A_2A2 产地运往 B4\rm B_4B4 销地的运费 ;
产地分析 : 对于产地 A2\rm A_2A2 来说 , 其生产 444 个 , 已经安排了 666 个 , 还可以再安排 444 个 ;
销地分析 : 对于销地 B4\rm B_4B4 来说需求 666 个 , 已经安排了 333 个 , 还可以再安排 333 个 ;
最大安排最小运费运输 , 从 A2\rm A_2A2 向 B4\rm B_4B4 运输 333 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 8̸\not 88 , 333 | 444 | 111 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
此时 B4\rm B_4B4 的销量已经全部消耗完毕 , 该列就不需要安排其它产地向 B4\rm B_4B4 销地运输了 , 可以划掉这一列 , 讨论其它列的运输问题 ;
第 444 个基变量 :
划掉了 B4\rm B_4B4 行列 , 这里重新计算行差与列差 ,
A1\rm A_1A1 , A2\rm A_2A2 行最小运费 与 次小运费 没有变化 , 行差额不变 ;
B1\rm B_1B1 , B3\rm B_3B3 列最小运费 与 次小运费 没有变化 , 列差额不变 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 111 | 9̸\not 99 | 222 | 8̸\not 88 , 333 | 444 | 111 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
从所有 没有被划掉 的并且 没有被安排 的的运费中找到差额最大的 , 是 B1\rm B_1B1 的列差额 222 ;
B1\rm B_1B1 列最小运费 : 这里优先给 B1\rm B_1B1 销地的最小运费 111 安排运输 , 避免为其安排次小运费 , 对应表格第 222 行第 111 列 , A2\rm A_2A2 产地运往 B1\rm B_1B1 销地的运费 ;
产地分析 : 对于产地 A2\rm A_2A2 来说 , 其生产 444 个 , 已经安排了 333 个 , 还可以再安排 111 个 ;
销地分析 : 对于销地 B1\rm B_1B1 来说需求 333 个 , 已经安排了 000 个 , 还可以再安排 333 个 ;
最大安排最小运费运输 , 从 A2\rm A_2A2 向 B1\rm B_1B1 运输 111 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 1̸\not 11 , 111 | 9̸\not 99 | 2̸\not 22 | 8̸\not 88 , 333 | 444 | 1̸\not 11 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
此时 A2\rm A_2A2 的产量已经全部消耗完毕 , 该行就不需要安排其它销地运输了 , 可以划掉这一行 , 讨论其它列的运输问题 ;
第 555 个基变量 :
划掉了 A2\rm A_2A2 行 , 这里重新计算行差与列差 ,
A1\rm A_1A1 , A2\rm A_2A2 行最小运费 与 次小运费 没有变化 , 行差额不变 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 1̸1\not 1111 | 333 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 1̸\not 11 , 111 | 9̸\not 99 | 2̸\not 22 | 8̸\not 88 , 333 | 444 | 1̸\not 11 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
从所有 没有被划掉 的并且 没有被安排 的的运费中找到差额最大的 , A1\rm A_1A1 的行差额 000 ;
A1\rm A_1A1 列最小运费 : 这里优先给 A1\rm A_1A1 销地的最小运费 333 安排运输 , 避免为其安排次小运费 , 对应表格第 111 行第 111 列 , A1\rm A_1A1 产地运往 B1\rm B_1B1 销地的运费 ; ( 次小运费 = 最小运费 , 任选一个即可 )
产地分析 : 对于产地 A1\rm A_1A1 来说 , 其生产 777 个 , 已经安排了 000 个 , 还可以再安排 777 个 ;
销地分析 : 对于销地 B1\rm B_1B1 来说需求 333 个 , 已经安排了 111 个 , 还可以再安排 222 个 ;
最大安排最小运费运输 , 从 A1\rm A_1A1 向 B1\rm B_1B1 运输 222 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 , 222 | 1̸1\not 1111 | 333 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 1̸\not 11 , 111 | 9̸\not 99 | 2̸\not 22 | 8̸\not 88 , 333 | 444 | 1̸\not 11 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
此时 B1\rm B_1B1 的销量已经全部消耗完毕 , 该列就不需要安排其它产地向 B1\rm B_1B1 销地运输了 , 可以划掉这一列 , 讨论其它列的运输问题 ;
第 666 个基变量 :
此时只剩下最后一个运费没有被安排 , A1\rm A_1A1 产地运往 B3\rm B_3B3 销地的运费 ;
产地分析 : 对于产地 A1\rm A_1A1 来说 , 其生产 777 个 , 已经安排了 222 个 , 还可以再安排 555 个 ;
销地分析 : 对于销地 B3\rm B_3B3 来说需求 555 个 , 已经安排了 000 个 , 还可以再安排 555 个 ;
最大安排最小运费运输 , 从 A1\rm A_1A1 向 B3\rm B_3B3 运输 555 个产品 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | 行差额 | |
---|---|---|---|---|---|---|
A1\rm A_1A1 | 333 , 222 | 1̸1\not 1111 | 333 , 555 | 1̸0\not 1010 | 777 | 000 |
A2\rm A_2A2 | 1̸\not 11 , 111 | 9̸\not 99 | 2̸\not 22 | 8̸\not 88 , 333 | 444 | 1̸\not 11 |
A3\rm A_3A3 | 7̸\not 77 | 4̸\not 44 , 666 | 1̸0\not 1010 | 5̸\not 55 , 333 | 999 | 2̸\not 22 |
销量 | 333 | 666 | 555 | 666 | ||
列差额 | 222 | 5̸\not 55 | 111 | 2̸\not 22 |
此时 B3\rm B_3B3 的销量已经全部消耗完毕 , 该列就不需要安排其它产地向 B3\rm B_3B3 销地运输了 , 可以划掉这一列 , 讨论其它列的运输问题 ;
至此 , 所有的产量与销量分配完毕 ;
上述初始基可行解方案总运费 :
(2×3)+(3×5)+(1×1)+(3×8)+(4×6)+(3×5)=85\rm ( 2 \times 3 ) + ( 3 \times 5 ) + ( 1 \times 1 ) + ( 3 \times 8 ) + ( 4 \times 6 ) + ( 3 \times 5 ) = 85(2×3)+(3×5)+(1×1)+(3×8)+(4×6)+(3×5)=85
最小元素法求出来的初始基可行解的 总运费是 868686 , " Vogel 方法 " 比 " 最小元素法 " 能找出更近的初始基可行解 ;
五、表上作业法 : 最优解判别
表上作业法找初始基可行解 , 两种方法 " 最小元素法 " 和 " Vogel 方法 ( 差额法 ) " , 其中 Vogel 方法 得到的初始基可行解更靠近最优解 ;
下面开始判断该 初始基可行解 是否是 最优解 ;
最优解判别 : 得到一组 基可行解 之后 , 使用 检验数 判定该解是否是最优解 ;
检验数符号 : 变量 xij\rm x_{ij}xij 的检验数记作 λij\rm \lambda_{ij}λij ;
检验数判定原则 : 运输规划的 目标函数求最小值 时 , 所有的 非基变量检验数 λij\rm \lambda_{ij}λij 都非负 , 该基可行解就是最优解 , 该运输方案是最优方案 ;
求检验数的方法 : ① 闭回路法 , ② 位势法 ;
1、闭回路法
闭回路法 :
上述示例中找了一个 A2\rm A_2A2 到 B4\rm B_4B4 的格子对应的非基变量 x24\rm x_{24}x24 找闭回路 , 实际上任意一个非基变量都存在一个闭回路 ;
此时找到了针对最优解的判定方案 , 是针对 非基变量 进行判断 , 对于 任意一个非基变量 , 都可以找到这样的闭回路 ,
出发的格子中 增加运输量 , 然后某个格子需要 减少运输量 , 增加 与 减少 依次交替 , 最终能回到初始的格子, 达到产销平衡 ;
出发的格子使用加号 +++ , 第二个格子使用减号 −-− , 之后的歌词依次使用 加号减号交替 +−+-+− 符号 ;
让其运费做一个 " +−+−⋯+-+-\cdots+−+−⋯ " 运算 , 最终看代数和 ;
如果代数和 大于等于 000 , 说明当前的非基变量格子取 000 就是 最优选择 ;
如果代数和 小于 000 , 说明当前的非基变量格子取 000 不是最优选择 ;
2、闭回路法示例 1
运输规划问题 :
3、初始基可行解
使用最小元素法求得的初始基可行解 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 333 , 444 | 101010 , 333 | 777 |
A2\rm A_2A2 | 111 , 333 | 999 | 222 , 111 | 888 | 444 |
A3\rm A_3A3 | 777 | 444 , 666 | 101010 | 555 , 333 | 999 |
销量 | 333 | 666 | 555 | 666 |
使用 最小元素法, 得到初始基可行解 : {x13=4x14=3x21=3x23=1x32=6x34=3\begin{cases} \rm x_{13} = 4 \\\\ \rm x_{14} = 3 \\\\ \rm x_{21} = 3 \\\\ \rm x_{23} = 1 \\\\ \rm x_{32} = 6 \\\\ \rm x_{34} = 3 \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧x13=4x14=3x21=3x23=1x32=6x34=3
4、计算检验数
计算检验数 :
使用闭回路法 , 逐个计算每个非基变量的检验数 ,
以非基变量为起点 , 出发的格子使用加号 +++ , 第二个格子使用减号 −-− , 之后的歌词依次使用 加号减号交替 +−+-+− 符号 ;
计算上述闭回路的运费代数和 ,
如果代数和 大于等于 000 , 说明当前的非基变量格子取 000 就是 最优选择 ;
如果代数和 小于 000 , 说明当前的非基变量格子取 000 不是最优选择 ;
这里以计算 σ24\rm \sigma_{24}σ24 检验数为例 :
A24+\rm A_{24} +A24+ , A23−\rm A_{23} -A23− , A13+\rm A_{13} +A13+ , A14−\rm A_{14} -A14−
σ24=(1×8)−(1×2)+(1×3)−(1×10)=−1\rm \sigma_{24} = ( 1 \times 8 ) - ( 1 \times 2 ) + ( 1 \times 3 ) - ( 1 \times 10 ) = -1σ24=(1×8)−(1×2)+(1×3)−(1×10)=−1
检验数小于 000 ;
计算出的 非基变量 检验数使用 蓝色括号字体 写在表格中 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 , (1)(1)(1) | 111111 , (2)(2)(2) | 333 , 444 | 101010 , 333 | 777 |
A2\rm A_2A2 | 111 , 333 | 999 , (1)(1)(1) | 222 , 111 | 888 , (−1)(-1)(−1) | 444 |
A3\rm A_3A3 | 777 , (10)(10)(10) | 444 , 666 | 101010 , (12)(12)(12) | 555 , 333 | 999 |
销量 | 333 | 666 | 555 | 666 |
5、调整运量 ( 换基 )
上述检验数中 , σ24\rm \sigma_{24}σ24 为负数 , 需要进行换基 , 该非基变量就是入基变量 ;
该检验数的闭合回路如下 : A24+\rm A_{24} +A24+ , A23−\rm A_{23} -A23− , A13+\rm A_{13} +A13+ , A14−\rm A_{14} -A14− ;
在 −-− 符号的基变量中挑选一个最小的 , 作为出基变量 ;
换基之后的结果如下 :
经过上述计算后的运费表格如下 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 333 , 555 | 101010 , 222 | 777 |
A2\rm A_2A2 | 111 , 333 | 999 | 222 | 888 , 111 | 444 |
A3\rm A_3A3 | 777 | 444 , 666 | 101010 | 555 , 333 | 999 |
销量 | 333 | 666 | 555 | 666 |
计算当前的总运费 :
(3×5)+(10×2)+(1×3)+(8×1)+(4×6)+(3×5)=85\rm ( 3 \times 5 ) + ( 10 \times 2 ) + ( 1 \times 3 ) + ( 8 \times 1 ) + ( 4 \times 6 ) + ( 3 \times 5 ) = 85(3×5)+(10×2)+(1×3)+(8×1)+(4×6)+(3×5)=85
计算检验数验证 , 是最优解 ;
6、闭回路法示例 2
运输规划问题 :
B1\rm B_1B1 | B1\rm B_1B1 | B1\rm B_1B1 | B1\rm B_1B1 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 444 | 444 | 777 |
A1\rm A_1A1 | 777 | 777 | 333 | 888 | 444 |
A1\rm A_1A1 | 111 | 222 | 101010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
可以使用 " 最小元素法 " 或 " Vogel 方法 " 找初始基可行解 , 这里使用 最小元素法 ;
【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 ) 博客中有详细的 " 最小元素法 " 的分析过程 , 这里只进行简要分析 ;
基变量个数 是 m+n−1=4+3−1=6\rm m+ n - 1 = 4 + 3 - 1 = 6m+n−1=4+3−1=6
最小元素法找初始基可行解:
① x31\rm x_{31}x31 运费为 111 最小 , 安排 333 个 , B1\rm B_1B1 销地满足 , 划掉该列 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 111111 | 444 | 444 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 777 | 333 | 888 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 222 | 101010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
② x32\rm x_{32}x32 运费为 222 最小 , 安排 666 个 , B2\rm B_2B2 销地满足 , A3\rm A_3A3 产量也满足 , 这里注意除了最后一个基变量之外 , 不能同时删除一行一列 , 每次只能删除一行 , 或者删除一列 ; 这里选择划掉 B2\rm B_2B2 销地 这一列 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 1̸1\not 1111 | 444 | 444 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 7̸\not 77 | 333 | 888 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 2̸\not 22 , 666 | 101010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
③ x23\rm x_{23}x23 运费为 333 最小 , 安排 444 个 , A3\rm A_3A3 产量满足 , 划掉 A3\rm A_3A3 行 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 1̸1\not 1111 | 444 | 444 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 7̸\not 77 | 3̸\not 33 , 444 | 8̸\not 88 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 2̸\not 22 , 666 | 101010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
④ x13\rm x_{13}x13 运费为 444 最小 , 安排 111 个 , B3\rm B_3B3 销量满足 , 划掉 B3\rm B_3B3 列 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 1̸1\not 1111 | 4̸\not 44 , 111 | 444 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 7̸\not 77 | 3̸\not 33 , 444 | 8̸\not 88 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 2̸\not 22 , 666 | 1̸0\not 1010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
⑤ x14\rm x_{14}x14 运费为 444 最小 , 安排 666 个 , A1\rm A_1A1 产量满足 , 划掉 A1\rm A_1A1 行 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 1̸1\not 1111 | 4̸\not 44 , 111 | 4̸\not 44 , 666 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 7̸\not 77 | 3̸\not 33 , 444 | 8̸\not 88 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 2̸\not 22 , 666 | 1̸0\not 1010 | 666 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
⑥ 剩下最后一个变量 x34\rm x_{34}x34 , 安排 000 个 ; 划掉该行改了 , 所有的运输都安排完毕 ;
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 3̸\not 33 | 1̸1\not 1111 | 4̸\not 44 , 111 | 4̸\not 44 , 666 | 777 |
A2\rm A_2A2 | 7̸\not 77 | 7̸\not 77 | 3̸\not 33 , 444 | 8̸\not 88 | 444 |
A3\rm A_3A3 | 1̸\not 11 , 333 | 2̸\not 22 , 666 | 1̸0\not 1010 | 6̸\not 66 , 000 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
使用最小元素法找到的初始基变量与基可行解 :
B1\rm B_1B1 | B2\rm B_2B2 | B3\rm B_3B3 | B4\rm B_4B4 | 产量 | |
---|---|---|---|---|---|
A1\rm A_1A1 | 333 | 111111 | 444 , 111 | 444 , 666 | 777 |
A2\rm A_2A2 | 777 | 777 | 333 , 444 | 888 | 444 |
A3\rm A_3A3 | 111 , 333 | 222 , 666 | 101010 | 666 , 000 | 999 |
销量 | 333 | 666 | 555 | 666 | 202020 |
计算检验数 判定上述 初始基可行解 是否是 最优解 ;
每个非基变量 , 都要计算一次检验数 ;
1. 计算 σ11\sigma_{11}σ11 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ11=3−1+6−4=4≥0\sigma_{11} = 3 - 1 + 6 - 4 =4 \geq 0σ11=3−1+6−4=4≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 444 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
2. 计算 σ12\sigma_{12}σ12 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ12=11−2+6−4=11≥0\sigma_{12} = 11 - 2 + 6 - 4 =11 \geq 0σ12=11−2+6−4=11≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 111111 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
3. 计算 σ21\sigma_{21}σ21 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ21=7−1+6−4+4−3=9≥0\sigma_{21} = 7 - 1 + 6 - 4 + 4 - 3 =9 \geq 0σ21=7−1+6−4+4−3=9≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 999 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
4. 计算 σ22\sigma_{22}σ22 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ22=7−2+6−4+4−3=8≥0\sigma_{22} = 7 - 2 + 6 - 4 + 4 - 3 =8 \geq 0σ22=7−2+6−4+4−3=8≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 888 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
5. 计算 σ24\sigma_{24}σ24 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ24=8−4+4−3=5≥0\sigma_{24} = 8 - 4 + 4 - 3 =5 \geq 0σ24=8−4+4−3=5≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 555 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
6. 计算 σ33\sigma_{33}σ33 检验数
使用 闭回路法 计算检验数 , 首先要确定闭回路 ; 以非基变量为起点 , 然后构造回路 , 只能在基变量对应的格子位置拐弯 ;
σ33=10−6+4−4=4≥0\sigma_{33} = 10 - 6 + 4 - 4 =4 \geq 0σ33=10−6+4−4=4≥0
该检验数 ≥0\geq 0≥0 , 如果按照这个回路调整运费会增加 , 每调整一个产品都会增加 444 个单位运费 ;
计算检验数时 , 只计算拐弯的基变量的运费 , 经过的基变量运费不计算 ;
经过上述运算 , 所有的非基变量检验数都 ≥0\geq 0≥0 , 当前的基可行解就是最优解 ;
【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★相关推荐
- 【运筹学】表上作业法 ( 最优解判别 | 初始基可行解 | 运费修改可行性方案 | 闭回路法 )
文章目录 一.最优解判别 二.初始基可行解 三.运费修改可行性方案 四.闭回路法 一.最优解判别 在上两篇博客 [运筹学]表上作业法 ( 求初始基可行解 | 最小元素法 ) , [运筹学]表上作业法 ...
- 【运筹学】表上作业法 ( 示例 | 使用 “ 闭回路法 “ 计算检验数判定最优解 )
文章目录 一.运输规划问题 二.使用 " 闭回路法 " 计算检验数判定最优解 一.运输规划问题 运输规划问题 : B1\rm B_1B1 B1\rm B_1B1 B1\rm B ...
- 闭回路法代码MATLAB,闭回路调整法解析.ppt
-闭回路调整法 改进的方法 销地 加工厂 3 11 3 10 1 9 2 8 7 4 10 5 销地 产地 产量 7 4 9 销量 3 6 5 6 问题: 通过伏格尔法得到的初始解列于下表: 销地 产 ...
- MYSQL存储过程中 使用变量 做表名--转
原文地址:http://blog.csdn.net/business122/article/details/7528859 今天写一个对数据库做快照的存储过程,用到了动态表名,突然发现MYSQL不支持 ...
- 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )
文章目录 一.运输规划问题 二.找初始基可行解 一.运输规划问题 运输规划问题 : B1\rm B_1B1 B1\rm B_1B1 B1\rm B_1B1 B1\rm B_1B1 产量 A1\ ...
- 【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )
文章目录 一." 最小元素法 " 分析 二.Vogel 方法 ( 差额法 ) 一." 最小元素法 " 分析 在上一篇博客 [运筹学]表上作业法 ( 求初始基可行 ...
- 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )
文章目录 一.表上作业法 第一步 : 确定初始基可行解 二.最小元素法 一.表上作业法 第一步 : 确定初始基可行解 运输问题如下 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问 ...
- 【运筹学】表上作业法 ( 闭回路示例 )
文章目录 一.闭回路示例 1 二.闭回路示例 2 一.闭回路示例 1 运输规划变量如下 : B1\rm B_1B1 B2\rm B_2B2 B3\rm B_3B3 A1\rm A_1A1 x1 ...
- 【运筹学】运输规划 ( 运输规划基变量个数分析 )
文章目录 一.运输规划基变量个数 二.运输规划问题数学模型基变量数定理 一.运输规划基变量个数 上一篇博客 [运筹学]运输规划 ( 运输规划问题的数学模型 | 运输问题引入 ) 提出了运输规划问题 , ...
最新文章
- Linux之软件卸载 apt-get
- TCP实现服务器与单客户端连接(多线程)
- html中设置父盒子的高度,【CSS】设置浮动元素高度等于父元素
- laravel 除了主页 都是404 webconfig_基于Laravel,开箱即用,这个PHP后台管理系统好看又省心...
- 如何快速定位程序Core?
- elastic 修改map_Amazon Elastic Map Reduce使用Apache Mahout计算建议
- 大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析
- 少年,你知道怎么用一行代码解决分布式事务问题吗?
- DTC精彩回顾—黄东旭《TiDB数据驱动的企业智能化转型新方向》丨PPT视频
- 软件需求说明书(GB856T——88)
- 百度地图WEB服务-正地理编码使用心得
- SNS网店软文推广法
- [软件人生]IT168年会的一点感受——简评专题的内容和说实话的流氓
- mysql: load data与select into outfile
- MySQL自定义中文转拼音函数
- 连载32:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
- 关于选择护肤品功效成分时可以参考一下!!!
- Pascal voc2007安装和pytorch使用
- iPhone 相机操作指南 3.0
- linux中的ctrl+z和ctrl+c以及exit