这篇文章介绍两种TP问题的初始化算法:Northwest-Corner和Minimum-Cell-Cost算法
还是用前一篇文章中的案例作为例子:三个Supply结点,其供应量为:
仓库 | 库存(Supply) |
---|---|
1. 堪萨斯 | 150 |
2. 奥马哈 | 175 |
3. 得梅因 | 275 |
Total | 600 |
三个Demand结点,其需求量为:
面粉厂 | 需求(Demand) |
---|---|
A. 芝加哥 | 200 |
B. 圣路易斯 | 100 |
C. 辛辛那提 | 300 |
Total | 600 |
路径的单位花销:
A.芝加哥 | B.圣路易斯 | C.辛辛那提 | |
1. 堪萨斯 | $6 | $8 | $10 |
2. 奥马哈 | $7 | $11 | $11 |
3. 得梅因 | $4 | $5 | $12 |
根据上面的已知量,初始化TP表结构:
Northwest-Corner-Method
正如算法名所说,Northwest-Corner算法就是先分配最左上角的那个单元格,然后依次分配其他的空单元格,最终完成一个初始解。在这里例子里,我们先给单元格1A进行分配,分配的数量要在满足supply和demand约束条件下的最大值,也就是200和150的最小值,因此对于单元格1A,我们给它分配150;
接着我们需要给1A的相邻单元格进行分配,这里就是2A或者1B,但是因为1A的分配值已经达到了最大的Supply值150,1B无法分配任何值,所以只能对2A进行分配;对于2A,在Supply约束上,分配数量不能超过175,而在Demand约束上,则不能超过50(因为1A已经占用了150),所以只能给2A分配50;
同样的,第三次分配的可选单元格是2B,在Supply约束上,分配数量不能超过175-50=125,而在Demand约束上,则不能超过100,所以给2B分配数量是100;第四次分配是给2C分配25,第五次分配是给3C分配275;五次分配后,所有的Demand和Supply约束都已达到,那么就产生了一个可行解。
下面的图展示了算法的分配过程:
初始解:
x 1 A = 150 x 2 A = 50 x 2 B = 100 x 2 C = 25 x 3 C = 275 \begin{aligned} x_{1A}&=150 \\ x_{2A}&=50 \\ x_{2B}&=100 \\ x_{2C}&=25 \\ x_{3C}&=275 \end{aligned} x