2、?目标函数的确定前面已经提到,在解决指派问题时要给出一个效应矩阵,矩阵中元素的内容随着所追求目标函数的不同而变化。在上例中,所追求的目标是船舶停泊总时间为最小,因此矩阵中的元素就是每个泊位装卸每条船的停泊时间。 当目标发生变化时,矩阵的内容也应随之而变化。如当追求船舶停泊总吨天为最小时,矩阵中的元素应该时每条船靠不同泊位时的停泊吨天(即定额重量乘船舶搜天);当追求延期罚款为最小是,矩阵中的元素应该时每条船靠不同泊位时的延期罚款;当追求的目标是速遣奖最多时,矩阵中的元素是奖金或罚款;当所追求的目标是昼夜装卸货物数量为最大时,矩阵中的内容是昼夜装卸效率等等。*3、指派中经常出现情况的处理 前述算法是典型情况下的求解方法,即空闲泊位数与待泊船舶数相等,几个泊位同时开始空闲,所追求的目标函数为最小值,系数矩阵中元素都是正数等等。而在港口的生产活动中却不常会有这样“正正好”的机会。 因此,下面将向大家介绍在一些非理想情况下如何用匈牙利法来解指派问题。*(1)目标函数值为最大时的解法 由于匈牙利法是追求的目标函数为最小值时的解法,故必须使追求最大化问题转化为追求最小化问题。 M为一个足够大的常数。一般在解题时取中最大元素即可。此时=0就符合匈牙利法的条件了。 方法是:设M为一个足够大的常数,用这个常数减去矩阵中所有元素,得到新的矩阵。一般在解题时M取矩阵中最大元素即可。 * 沿用上面的表,假如追求速遣奖总额为最大,则要将系数矩阵进行变换。从原来矩阵中找出最大元素108,用这个数减去矩阵中所有元素,得到新的矩阵。*(2)?当n个泊位不是同时开始空闲时的解法 在这种情况下,可以把船舶等待泊位开始空闲的时间看成是船舶在这个泊位上停泊时间的一部分。因此,只要增加系数矩阵中元素的数值后,就可以用匈牙利法求解。 具体方法是:以最先开始空闲的泊位为准,其他泊位的停泊时间上再加上各泊位比最先开始空闲的泊位晚开始空闲的小时数。 例如:在上例中,假如各泊位开始空闲的时间分别是 A 10月20日16点+40 B 10月19日24点+24 C 10月19日12点+12 D 10月18日24点 E 10月20日6点+30*(3)当泊位数与船舶数不相等时的解法 对这类问题,要进行调整,然后再用匈牙利法。 调整方法:增加假想的行(列),使船舶数与泊位数相等。 当目标函数为最小值时,增加的元素为0 当目标函数为最大值时,增加的元素为原系数矩阵中的最大元素 算例7:有5个空闲泊位,而等待的船舶只有4艘,泊位停泊时间为: 为了求总停泊时间和最小,可以增加一列假想的列,该列元素取0。*(4)当矩阵元素正负同时存在时的解法 在实际工作中,经常可以遇到这样的情况,即某些泊位装卸可以获速遣奖,而某些泊位装卸可能要付出延期罚款,这时,在系数矩阵中就会出现正数与负数,而匈牙利法要求系数矩阵中每个元素都是非负数,因此,必须对这一矩阵进行变换。 变换方法:同求最大值时一样,即从矩阵中找出最大的元素,用这个数去减矩阵中所有元素,构成新的矩阵。*算例2:*解答:以2船为准,计算出:1船比2船晚到2h,3船比2船晚到30h,4船比2船晚到8h,5船比2船晚到18h则效率矩阵可变换为:60+26450+3076+871+186264808489-6267+27060+3082+875+186970909093-6950+25537+3072+865+185255678083-5241+23848+3057+867+184338786585-3840+24625+3068+864+184246557682-4202