【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )
文章目录
- 一、" 最小元素法 " 分析
- 二、Vogel 方法 ( 差额法 )
一、" 最小元素法 " 分析
在上一篇博客 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 ) 中 , 按照 " 最小元素法 " 找到了初始基可行解 ,
使用 " 最小元素法 " , 属于贪婪算法 , 每次都找运费最小的优先供应 , 每个步骤的方案都是最优 , 局部最优 ,
每步最优不一定能使得全局最优 ;
二、Vogel 方法 ( 差额法 )
" Vogel 方法 " 的核心思想就是从运价表中 , 分别计算 各行 , 各列 的 最小运费 和 次最小运费 差额 , 填写到表的 最右列 和 最下行 ;
基于如下运输问题进行分析 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问题 , 表格中的内容是 某产地运往某销地的运费 ;
| 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 个产品 ;
| 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 ;
| 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 个产品 ;
| 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 ;
| 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 个产品 ;
| 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 列最小运费 与 次小运费 没有变化 , 列差额不变 ;
| 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 个产品 ;
| 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 行最小运费 与 次小运费 没有变化 , 行差额不变 ;
| 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 个产品 ;
| 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 个产品 ;
| 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 方法 )的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【运筹学】表上作业法 ( 求初始基可行解
- 下一篇: 【运筹学】表上作业法 ( 最优解判别 |