问题描述
Problem. 已知运输问题的产销数量与单位运价表如下。试用表上作业法给出最优调运方案和最小运费。
产地 的产量分别为;销地 的销量分别为。单位运价如下表所示:
|
\diagbox{产地}{销地} | | | | | 产量 |
| --- | --- | --- | --- | --- | --- |
|
| 9 | 8 | 12 | 13 | 18 |
| | 10 | 10 | 12 | 14 | 24 |
| | 8 | 9 | 11 | 12 | 6 |
| | 10 | 10 | 11 | 12 | 12 |
|
销量 | 6 | 14 | 35 | 5 | |
| |
\caption{运输问题的产销平衡表与单位运价}
建立数学模型
设 为从产地 运往销地 的运量(单位与产量相同), 为对应单位运价。
Step. 线性规划模型:
Note. 产销平衡验证:
第一步:用最小元素法确定初始基可行解
Step. 最小元素法的基本思想:
就近优先安排——每次从当前未划去的运价表中找出最小运价,尽可能多地给 分配运量(取 当前剩余产量与剩余销量),然后划去已耗尽的行或列,重复直到全部分配完毕。
分配过程的逐步演示
第①步:
全表最小运价为(也有,并列时任选其一,这里先选)。
x{12} = \min{a1,, b_2} = \min{18,, 14} = \mathbf{14}.
B2 列需求被完全满足,划去 B2 列;A_1 剩余产量为 18-14=4。
第②步:
剩余表中最小运价为。
行产量和 列需求同时被满足——这是产生退化的关键时刻。按惯例划去 行,保留 列(此时 已无剩余需求)。
第③步:
剩余表(去掉 行、 列)中最小运价为。
x{43} = \min{a4,, b_3} = \min{12,, 35} = \mathbf{12}.
A4 行产量被满足,划去 A4 行;B_3 剩余需求 35-12=23。
第④步:
剩余表中最小运价为(与 并列,选)。
x_{13} = \min{4,, 23} = \mathbf{4}.
A1 剩余产量被耗尽,划去 A1 行;B_3 剩余需求 23-4=19。
第⑤步:
仅剩 行。。
x_{23} = \min{24,, 19} = \mathbf{19}.
B3 列需求满足,划去 B3 列;A_2 剩余产量 24-19=5。
第⑥步:
仅剩 一格。
至此全部产销均已满足,分配过程结束。
初始方案与退化的处理
Note. 退化判断:
共得到 个基变量:。
但是平衡运输问题要求 个基变量。
原因:第②步中 行和 列同时被划去,导致少算一个基变量。
处理方法:补一个运量为 的退化基变量。这里在被划去的 列里、 行选 作为退化基变量(也可以选其他位置,例如,结果等价)。
\renewcommand{\arraystretch}{1.8}
|
\diagbox{产地}{销地} | | | | | 产量 |
| --- | --- | --- | --- | --- | --- |
|
| \cell{9}{\cellval{[0]}} | \cell{8}{\cellval{14}} | \cell{12}{\cellval{4}} | \cell{13}{} | 18 |
|
销量 | 6 | 14 | 35 | 5 | |
| |
\caption{初始基可行解(最小元素法),方括号 [0] 为退化基变量}
初始总运费:
第二步:用位势法计算检验数(第一次检验)
位势法原理
Step. 位势法(u-v 法):
为每行 设位势,为每列 设位势,要求对所有基变量格 满足
共 个方程, 个未知数,自由度为,所以可先令(任意指定一个),其余依次求出。
对所有非基变量格,计算检验数
若所有,则当前解最优;若存在,则当前解非最优,需要调整。
计算位势
基变量集合:。
\paragraph{从 出发:}
得位势向量:
计算非基变量的检验数
对每个非基变量格逐一计算:
汇总到检验数表中:
\renewcommand{\arraystretch}{1.3}
|
| | | | |
| --- | --- | --- | --- | --- |
|
| 基 | 基 | 基 | |
| | | | 基 | 基 |
| | 基 | | | |
| | | | 基 | |
| |
\caption{第一次迭代的检验数表}
Note. 存在三个负检验数,当前解不是最优解,需要调整。
按"取最负"原则任选一个负检验数对应的格作为入基变量。这里我们选 进基。
第三步:找闭回路并调整(第一次迭代)
闭回路的寻找
Step. 闭回路构造规则:
以入基格 为起点,沿水平/垂直方向跳跃,只允许在基变量格处转弯,最终回到起点形成一个闭多边形。每个顶点交替标记,起点为。
从 出发寻找闭回路:
沿第 行向左,可到的基变量格只有。
沿第 列向上,基变量格有。选。
沿第 行向右,基变量格只有。
沿第 列回到起点,闭合。
闭回路:
图见 PDF。
闭回路示意:
确定调整量
调整量取闭回路上""号位置基变量值的最小者:
出基变量为达到最小值的(它将变为)。
执行调整
沿闭回路: 号位置加, 号位置减。
其余基变量不变:。
调整后的总运费:
\renewcommand{\arraystretch}{1.8}
|
\diagbox{产地}{销地} | | | | | 产量 |
| --- | --- | --- | --- | --- | --- |
|
| \cell{9}{\cellval{[0]}} | \cell{8}{\cellval{14}} | \cell{12}{\cellval{4}} | \cell{13}{} | 18 |
|
销量 | 6 | 14 | 35 | 5 | |
| |
\caption{第一次调整后的方案,}
第四步:第二次检验(最优性验证)
重新计算位势
新的基变量集合:。
仍取:
位势更新为:
(与上一次相比,只有 由 变为。)
重新计算检验数
\renewcommand{\arraystretch}{1.3}
|
| | | | |
| --- | --- | --- | --- | --- |
|
| 基 | 基 | 基 | |
| | | | 基 | |
| | 基 | | | |
| | | | 基 | 基 |
| |
\caption{第二次迭代的检验数表}
Result. 所有非基变量的检验数,当前解已达到最优!
另外存在,说明该问题有多个最优解(沿这些零检验数对应格的闭回路调整可得到其它最优方案,但总运费不变)。
最终最优解
Result. 最优调运方案:
\renewcommand{\arraystretch}{1.3}
| \toprule
路线 | 运量 | 单价 | 运费 |
| --- | --- | --- | --- |
| \midrule
| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| \midrule
\multicolumn{3}{r|}{合计} | |
| \bottomrule |
最小总运费:
\renewcommand{\arraystretch}{1.8}
|
\diagbox{产地}{销地} | | | | | 产量 |
| --- | --- | --- | --- | --- | --- |
|
| \cell{9}{} | \cell{8}{\cellval{14}} | \cell{12}{\cellval{4}} | \cell{13}{} | 18 |
|
销量 | 6 | 14 | 35 | 5 | |
| |
\caption{最优运输方案一览}
求解流程小结
Step. 表上作业法求解运输问题的完整流程:
产销平衡检验:,平衡。
最小元素法求初始解:逐次选取最小运价格分配,,初始运费。
处理退化:补退化基变量,使基变量数达。
位势法计算检验数:得最负检验数,非最优。
找闭回路并调整:闭回路,, 出基, 入基。新方案。
再次检验:所有,达到最优。最小运费,且因存在,最优解非唯一。
Download the original write-up here.