承接前文,我们继续学习表上作业法的第二步 —— 最优解的判断。
表上作业法的求解工作在运输表上进行,运输问题解的每一个分量,都唯一对应其在运输表中的一个格子。它是一种迭代法,迭代步骤为:
先按某种规则找出一个初始解(初始调运方案),得出运输问题的一个基本可行解后,就可将基变量的值 x i j x_{ij} xij 填入运输表相应的格子内,并将这种格子称为填有数字格(可以含 0 ),非基变量对应格不填,称为空格。
接着对现有的解作最优性判别,若不是最优解,就在运输表上对其进行改进,得出一个新解;再判别,再改进;直至得到运输问题的最优解为止。
通过最小元素法或者伏格尔法得到了运输问题的初始解后,需要看它是不是最优解。判别的方法是计算空格(非基变量)的检验数。因为运输问题的目标函数是要求最小,故所有检验数都非负时达到最优解。有两种常用的办法:闭回路法和位势法(对偶变量法)。
要判别运输问题的某个解是否为最优解,可依照一般单纯形法,检验这个解的各非基变量(对应于运输表中的空格)的检验数 σ i j \sigma_{ij} σij 。
为求某个空格的检验数,先要找出它在运输表上唯一对应的闭回路。在给出的调运方案的计算表上,从每一个空格处找闭回路。
它是以某空格为起点,用水平或垂直线向前画,每碰到一数字格判断转 90 度是否遇到数字格,若能遇到数字格,则转 90 度后继续前进,直到数字格构成的折线能回到起始空格为止。
这个闭回路的顶点,除这个空格外,其他均为填有数字的格(基变量的格)。空格处通常记为第一个顶点,又称为奇数次顶点。由水平线段和竖直线段依次连接这些顶点构成一个封闭多边形。常见有如下形式:
可以证明,每一个空格都唯一存在这样的一条闭回路。位于闭回路的一组变量,它们对应的运输问题约束条件的系数列向量线性相关,因而在运输问题基可行解的迭代过程中,不允许出现全部顶点由填有数字格构成。
这就是说,在确定运输问题的基可行解时,除要求非零变量的个数为 ( m + n − 1 ) (m+n-1) (m+n−1) 外,还要求运输表中填有数字的格不构成闭回路。
某个空格的检验数 σ i j = ( \sigma_{ij}=( σij=( 闭回路上奇数次顶点的运价之和 ) − ( )-( )−( 闭回路上偶数次顶点的运价之和 ) ) ) 。若所有空格的检验数还存在负值时,表明此方案不是最优解。
用闭回路法判断一个运输方案是否为最优方案,需要找出所有空格的闭回路,并计算其检验数。当运输问题的产地和销地很多时,空格的数目很大,计算检验数的工作十分繁重,而位势法相对简便得多。
对于如下产销平衡运输问题,若 u 1 , u 2 , … , u m u_1,u_2,\dots,u_m u1,u2,…,um 分别表示前 m m m 个约束等式相应的对偶变量, v 1 , v 2 , … , v n v_1,v_2,\dots,v_n v1,v2,…,vn 分别表示后 n n n 个等式的对偶变量,由线性规划的对偶理论可知, C B B − 1 = ( u 1 , u 2 , … , u m ; v 1 , v 2 , … , v n ) \pmb{C_BB^{-1}}=(u_1,u_2,\dots,u_m;v_1,v_2,\dots,v_n) CBB−1=(u1,u2,…,um;v1,v2,…,vn) 。
记 u 1 , u 2 , … , u m u_1,u_2,\dots,u_m u1,u2,…,um 分别表示每行的位势, v 1 , v 2 , … , v n v_1,v_2,\dots,v_n v1,v2,…,vn 分别表示每列的位势,有对偶变量向量 Y = ( u 1 , u 2 , … , u m ; v 1 , v 2 , … , v n ) \pmb{Y}=(u_1,u_2,\dots,u_m;v_1,v_2,\dots,v_n) Y=(u1,u2,…,um;v1,v2,…,vn) 每个决策变量 x i j x_{ij} xij 的检验数 σ i j \sigma_{ij} σij 为 c i j − C B B − 1 P i j \pmb{c_{ij}-C_BB^{-1}P_{ij}} cij−CBB−1Pij ,在运输问题中,每个决策变量的系数列向量 P i j \pmb{P_{ij}} Pij 中只有两个元素为 1 ,其余均为 0 ,故 σ i j = c i j − ( u i + v j ) \sigma_{ij}=c_{ij}-(u_i+v_j) σij=cij−(ui+vj) 。
基变量的检验数为零,有基变量对应的 c i j − ( u i + v j ) = 0 c_{ij}-(u_i+v_j)=0 cij−(ui+vj)=0 ,可列出 ( m + n − 1 ) (m+n-1) (m+n−1) 个方程。令其中任意 u i u_i ui 或 v j v_j vj 取值为零,可求出基变量的对偶变量 u i , v j u_i,v_j ui,vj 的值。根据这些值,再去计算非基变量的检验数 c i j − ( u i + v j ) c_{ij}-(u_i+v_j) cij−(ui+vj) 。
若所有非基变量检验数还有负的,说明未得到最优解,可以进行改进。
到这里,就还剩下一个对当前解的改进了以及一些特殊情况了,我们放在后面来说。