在上一篇文章中,我们已经讨论了运输问题的基本概念。在本文中,我们将探讨如何使用西北角法来寻找初始基本可行解。
说明: 给定三个供应地 O1、O2 和 O3,以及四个目的地 D1、D2、D3 和 D4。供应地 O1、O2 和 O3 的供应量分别为 300、400 和 500。目的地 D1、D2、D3 和 D4 的需求量分别为 250、350、400 和 200。
解决方案: 根据西北角法,(O1, D1) 必须是起始点,即表格的西北角。表格中每个单元格内的数值都被视为单位运输成本。比较列 D1 的需求量和供应地 O1 的供应量,并将两者中的较小值分配给单元格 (O1, D1),如图所示。
列 D1 的需求已满足,因此整个列 D1 将被划去(剔除)。供应地 O1 剩余的供应量为 300 – 250 = 50。
现在,在剩余的表格中(即排除列 D1),检查西北角位置,即 (O1, D2),并在相应列和行的供应量之间分配最小值。来自 O1 的供应量是 50,小于 D2 的需求量(即 350),因此将 50 分配给单元格 (O1, D2)。由于行 O1 的供应量已耗尽,划去该行。列 D2 剩余的需求量为 350 – 50 = 300。
从剩余的表格来看,西北角单元格是 (O2, D2)。供应地 O2 的供应量(即 400)和列 D2 的需求量(即 300)之间的最小值是 300,因此将 300 分配给单元格 (O2, D2)。列 D2 的需求已满足,因此划去该列,供应地 O2 剩余的供应量为 400 – 300 = 100。
现在,从剩余的表格中找到西北角,即 (O2, D3),比较 O2 的供应量(即 100)和 D3 的需求量(即 400),并将较小值(即 100)分配给单元格 (O2, D3)(原文此处笔误为(O2, D2),但根据上下文及下文剩余需求计算,此处应为 D3)。O2 的供应量已耗尽,因此划去行 O2。列 D3 剩余的需求量为 400 – 100 = 300。
按照同样的方式继续进行,单元格的最终值将是:
注意: 在最后剩余的单元格中,相应列和行的需求量是相等的,即单元格 (O3, D4)。在这种情况下,来自 O3 的供应量和 D4 的需求量都是 200,这被分配给了该单元格。最后,任何行或列都没有剩余量。
现在,只需将分配的数值与相应的单元格数值(即成本)相乘,并将它们相加即可得到基本解,即 (250 3) + (50 1) + (300 6) + (100 5) + (300 3) + (200 2) = 4400。
下面是上述方法的实现代码
C++
CODEBLOCK_a4058606
Java
CODEBLOCK_593dfb66