1、运输问题 分派问题一、特殊的最小费用流运输问题运输问题是一个特殊的最小费用流问题,它不考虑弧的容量限制,仅考虑弧上流的费用. 为建立问题的数学模型. 我们首先令表示发点 可供的产品数量 ;iai ),1(mi表示收点 所需的产品数量 ;jbj nj表示从发点 到收点 的单位产品运输费用;iwij表示从发点 分配给收点 的产品数量.jx于是我们可以写出运输问题的线性规划形式如下: 0),1(.min,ijjijiijijxnbmatsxw 对于如何解上述线性规划问题,我们介绍下列方法. 它的理论依据见课本 P217,这里只给出求解方法. 为了计算简便,能一目了然,将课本中图的表示形式改为表的表示
2、形式. 具体算法步骤如下:1、确定原始规划的一个可行解 (为了减少计算量,可用ijx最小元素法或左上角法确定原始规划的可行解);2、对于原始问题的可行解 ,由 计算出ij ijjiij wvu0对偶规划的一个解 ;,jivu3、最优方案判别(对于对偶规划的解 ,计算检验数,ji当检验数全非负时,此方案为最优方案,否则转 4)jiijijvuw4、非最优方案的闭回路调整(令 ,即选择0|min,ijijjstw入基. 对应于表中找空格 的回路,并选择其流量 (等于该stx ),(ts 回路上偶点的最小值), 使这个回路上的流量通过(奇点)加 、(偶点) 减 以达到去掉一条弧的目的,从而得到一个新
3、的被改进的原始可行解 ,转第 2 步)ijx说明:对原始可行解中 的个数需 个,若没有达到,ijx1nm以某个空格为 增加一个 .0ij例 已知三个产地 A1,A2,A3,四个销地 B1,B2,B3,B4 的产销量及单位运价如表所示,求使总费用最小的运输方案.B1 B2 B3 B4 产量A1 2 2 3 7 500A2 4 3 5 9 600A3 1 6 7 8 300销量 300 200 500 400 1400表 1解 第 1 步 用最小元素法求初始方案:1.1 在表 1 中选取最小数 C31=1, 由 A3 运到 B1 的需求300,在表 2 中填写 300,此时 A3 无剩余 B1满足
4、,因而划去 A3 所在的行,B 1 所在的列.1.2 在表 1 未被划去的部份中选取最小数 C12=2,这时 B2只需 200,则在 C12 中填入 200,A1 余 300,划去第二列.1.3 在表 1 的剩余部份选取最小数 C13=3,将 A1 中剩余的300 填入表 2 的 C13,这时 A1 无剩,划去第一行.1.4 在表 1 的剩余部份选取最小数 C23=5,这时 B3还需要200,因此在表 2 的 C23 中填入 200,划去 B3 所在的列.1.5 最后剩 C24,因此在表 2 的 C24 中填入 400. 因为此时数中只有 5 个但有可行解的基本方案必须有 6 个数字格,因此可
5、任选一个空格为数字格,加入一个 0.第 2 步 经 上述步骤 后得到问题的初始方案,对初始方案的基变量(数字格 ) 求出 ,使 (在表格的每一行设ijxjivu, 0jiijvuw一个变量 ,每一列设一个变量 ,称 , 为位势变量,其数量iu为 m+n 个,根据数字格由 计算出 , 的数值. 一般取jiijij,然后求出其余位势变量的值.求出位势变量值得表 201B1 B2 B3 B4 产量 iuA1 0 200 300 500 0A2 200 400 600 2A3 300 300 -1销量 300 200 500 400 1400jv2 2 3 7表 2第 3 步 进行最优解判别:根据 计
6、算空格的检验数jiijijvuw,1,024,022114 ,5333由于空格(2,2)的检验 数为-1,所以不是最 优方案.第 4 步 闭回路调整:选空格为调入格(选择检验数为负数且最小的空格),得其闭回路为(2,2)(2,3) (1.3)(1,2),偶点的最小数 200,每个偶点减 200,每个奇点加 200,为了保证数字格为 m+n-1,任选空格(1,2,)或(2,3)为数字格,得表 3B1 B2 B3 B4 产量 iuA1 0 500 500 0A2 200 0 400 600 2A3 300 300 -1销量 300 200 500 400 1400jv2 1 3 7表 3回到第 2
7、 步,得它们的对偶解如表中给出,得它们的检验数分别为 0,1,0,6,1,2,所以表 3 是最优 方案(此答案不唯一).二、二分网络的最大权对集分派问题一般地说,有 n 项任务,要分配 n 个人员去完成该项任务,每个人员只能去完成一项任务,已知第 人员去完成第 项任务ij需要( 有) 单位时间 (效益),要求一个分配方案,使 总时间(效益)ija最少( 大) 。若第 人员不能完成第 项任务,令jija设 否 则 项 任 务个 人 员 去 完 成 第表 示 分 配 第01jixij根据所给条件可得分配问题的数学模型为: )3(012,)1(,.min1或ijijijnijijxnxtsaz 其中
8、(1) 组约 束条件表示一个人 员只能被分配一项工作;(2) 组约束条件表示一项工作只能一个人员去完成.这是一类特殊的线性规划问题,它是整数规划中的 01 规划的特例,也是运输问题的特例,当然可以用整数规划给出运输问题的解法,但是分配问题有它的特点,利用它的特点可有更简单的解法匈牙利解法.课本中的匈牙利解法是作文字叙述,且是求最大权对集. 这里给出矩阵形式求最小权对集。定义 矩阵 nnnaa 212112称为效益矩阵,其中元素 表示第 个人员完成第 项任务的0ij ij时间.定义 把任 务的一种分配方法称 为一个匹配,即人与任务的一个匹配. 当要分配 n 个人员去完成该 n 项任务时,最大的匹
9、配数是 n,匈牙利解法实质上就是求花费时间(或费用)最小的最大匹配.定理 1 如果从效益矩阵的每一行元素中分别减去(或加上)一个常数 ,从每一列元素中分别减去(或加上)一个常数 得到iu jv一个新的效益矩阵 ,其中每个元素 ,则 对应的ijb jiijijuabib分配问题与 对应的分配问题同解.ija定义 位于效益矩 阵 中不同行和不同列的 0 元素,称为独立的 0 元素.定理 2 效益矩阵中独立 0 元素的最多个数等于能覆盖所有0 元素的最少直线数.匈牙利方法的步骤:第一步 将效益矩阵 A 每个元素减去其所在行的最小元素,在所得矩阵中,每个元素再减去其所在列的最小元素,得新的效益矩阵 B
10、第二步 找 n 个独立的“0” 元素(1) 从第一行开始,如果该行没有 0 元素,转下一行;如果该行仅有一个 0 元素,把该 0 元素标*号(表示对这项任务给该人员去完成) ,并 删去它所在的列的其他 0 元素,将 0 元素修改为“ ”0(表示这一列的任务已分配完了,不必再考虑其他人选了),转下一行;如果该行有两个以上的 0 元素,暂时不考虑,转下一行;直到最后一行.(2) 从第一列开始,如果该列没有 0 元素,转下一列;如果该列仅有一个 0 元素,把该 0 元素标*号,并删去它所在的行的其他 0 元素,将 0 元素改为“ ”,转下一列;如果该列有两个以上的0 元素,暂时不考虑,转下一列;直到
11、最后一列.(3) 重复 执行(1) 、(2),如果在效益矩阵的元素中,除了 0*和外,不存在其他的 0 元素,则转转到(5) ,否则转为(4).(4) 效益矩阵中还有没有被删去的 0 元素,且同行 (列)的 0元素至少有两个.这可用不同的方案去试探. 从剩有 0 元素最少的行( 或列 )开始,选择 本行 (列)中 0 所在的列(行)0 元素少的那个0 元素标“ *”,并删去他所在行 (列)的其他 0 元素,可反复进行,直到所有的 0 元素都被标“*” 或被改为 为止.(5) 如果在效益矩阵中带“ *”的 0 元素的个数等于 n(最大匹配) ,则 将效益矩阵中 带“*”的 0 元素改为 1,其他
12、元素都改为 0,得到该问题的解矩阵;否则转到第三步.第三步 没有找到 n 个独立的 0 元素,则做以下步骤,以增加效益矩阵中的 0 元素.1、找最少直线覆盖效益矩阵中的所有 0 元素:(1) 对没有 0*的行打 ;(2) 对打的行上所有有 0 元素的列打;(3) 对打的列上所有有 0*元素的行打;(4) 重复(2)、(3)步直到过程结束;(5) 对没有打的行画横线,所有打 的列画垂线,找到了覆盖所有 0 元素的最少直线.2、增加 0 元素(1) 在效益矩 阵中没有被覆盖的元素中找最小元素 ;(2) 对没有被直 线覆盖的行减去最小元素 ,对被覆盖的列,加上最小元素 ;(3)再一次回到第二步,找
13、n 个独立的 0 元素.例 给出效益矩阵 91873649502求出最大匹配。解 第一步 用定理 1 给效率矩阵“制造” 0 元素: 2401235967107562379421873649502 ijij ba第二步 找 n 个独立的“0” 元素 0*10235967*1023596710235*9671023596*7找到最大匹配,得到解矩阵01例 求解下面的分配问题 54100*3285410*3285410*3285410*3282 329*0*043629034625410*38 得解矩阵为 01极大化分配问题以上讨论仅限于目标函数为极小化的分配问题,对于目标函数为极大化的分配问题
14、)3(012,)1(,.max1或ijijijnijijxntsxaz 可以令 ),2,( njiaMijij 其中 M 是足够大的正整数(如选 中最大元素作为 M 即可). 将ija问题转化为 )3(012,)1(,.min1或ijijijnijijxnxtsz 此时 ,可用匈牙利法求解0ija例 P231 解 1 0*120*102*0212013最大权对集是(1,6),(2,5),(3,8),(4,7), 最大权为 2+3+2+2=9从例中可知,一个图的最大权对集不唯一,但最大权是唯一的.在实际问题中,我们还会碰到人数小于工作数或工作数小于人数的分配问题,称这类问题为不平衡分配问题. 对于不平衡问题,可以依照运输问题中的处理方法化为平衡分配问题,再按匈牙利算法求解.例 求下图所示网络图的最大权对集 3 2 4 5 3 3 4 2 解 010*0*210*3210321最大权对集(1,6), (2,7),(3,5),最大 权为 3+4+3=10作业:P 234 16,20