整数规划解法-匈牙利 算法部分_第1页
整数规划解法-匈牙利 算法部分_第2页
整数规划解法-匈牙利 算法部分_第3页
整数规划解法-匈牙利 算法部分_第4页
整数规划解法-匈牙利 算法部分_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,4.5整数规划的解法,分支定界法割平面法匈牙利法,.,2,4.5.1整数规划解法分枝定界法,步骤:1、寻找替代问题并求解2、分枝与定界3、剪枝,.,3,1、基本思路:整数规划的最优解不会优于相应的线性规划的最优解。对于极大值问题,相应线性规划的最大值成为整数规划目标函数的上界。,(B)为(A)的松弛问题。,(1)替代问题的确定,.,4,(2)替代问题的求解,采用相应的方法(如图解法)求解出替代问题的最优解,观察其是否满足整数解的要求。如其最优解就为整数,则结束;如含有分数,则需要进行分支定界操作。,.,5,(3)分支与定界增加约束,如替代问题的解不符合整数条件,则需要对原问题进行分支。分支方法:假设替代问题的解为i,i+1之间的一个数,则分成两支:一支增加约束xji,另一支增加约束xji+1;对上述两个问题进行求解:不考虑整数问题时,求解对应的线性规划问题,观察其最优解是否是整数,如不是,则继续分支定界,直到得到全部整数解为止。,.,6,maxZ=40X1+90X2,例:,.,7,解:先解该整数规划对应的松弛问题,选X1分枝,将4,5之间的非整数部分舍去,.,8,选(2)继续分枝,问题2,问题3,.,9,分支定界过程,.,10,4.5.2整数规划解法2割平面法,割平面法的基本思想:在整数规划问题的松弛问题中依次引进线性约束条件(称Gomory约束,高莫雷约束或割平面),使问题的可行域逐步缩小。但每次切割时,只割去问题的部分非整数解,而不切割任何整数的可行解,直到使问题的目标函数值达到最优的整数点成为缩小后可行域的一个顶点,这样就可以用求解线性规划问题的方法找出这个最优解。,.,11,4.5.3整数规划的解法匈牙利法应用于分配问题或指派问题,分配问题也称指派问题,是一种特殊的整数规划问题。假定有m项任务分配给m个人去完成,并指定每人完成其中一项,每项只交给其中一个人去完成,应如何分配使总的效率为最高。,.,12,1、指派问题一般模型的引出,例:有一份说明书,要分别译成英、日、德、俄四种文字,交甲、乙、丙、丁四个人去完成。因各人专长不同,他们完成翻译不同文字所需的时间(h)如表所示。问:如何分配任务使效率最高(所需总时间最短)?,从人的角度看,从任务角度看,.,13,指派问题的一般模型,假设:aij表示指派问题的效率矩阵xij表示决策变量,决策变量的取值:,.,14,指派问题的一般数学模型,指派问题的一般模型,.,15,2、指派问题的求解方法,单纯形法表上作业法匈牙利法,.,16,(1)指派问题的求解匈牙利法,核心思路:基于这样一个事实:如果效率矩阵的所有元素aij0,而其中存在一组位于不同行、不同列的零元素,则只要令对应于这些零元素的xij=1(分配任务),其余的xij=0,则目标函数z必然会取得最小(0)。,只需令:x11=1,x23=1,x32=1,x44=1,即第一项各种分配给甲,二工作丙,三乙,四丁。总工作时间最少。,效率矩阵,.,17,问题,要求:效率矩阵中存在零元素,同时存在不在同一行、同一列的零元素。实际的效率矩阵中,是不可能存在0元素的,那么如何获得这种特殊的效率矩阵?如何让效率矩阵中产生零元素;如何让产生的零元素位于不同行和不同列。,.,18,(2)零元素的产生方法:匈牙利法的基本定理1,如果从分配问题效率矩阵aij的每一行元素中分别减去(或加上)一个常数ui(被称为该行的位势),从每一列分别减去(或加上)一个常数vj(称为该列的位势),得到一个新的效率矩阵bij,若其中则bij的最优解等价于aij的最优解(说明,经过变换后,有零的新效率矩阵取得最优解时,原效率矩阵也同时取得最优解),.,19,(3)独立零元素的判断方法:匈牙利法的基本定理2,若矩阵A的元素可分成“0”与非“0”两部分,则覆盖“0”元素的最少直线数等于位于不同行、不同列的“0”元素的最大个数。,.,20,若矩阵A的元素可分成“0”与非“0”两部分,则覆盖“0”元素的最少直线数等于位于不同行、不同列的“0”元素的最大个数。将确定一个效率矩阵中最大独立零元素的个数,转化为寻找覆盖所有零元素所需的最少直线数。,.,21,匈牙利法的计算步骤,基本步骤:在效率矩阵中产生零元素判断独立的零元素个数是否等于任务数或人数?如是,则对效率矩阵中独立零元素所处的位置进行指派(对应的决策变量为1),完成如否,则要继续产生足够的独立零元素。通过实例来说明匈牙利法求解指派问题的过程。,.,22,例:,有一份说明书,要分别译成英、日、德、俄四种文字,交甲、乙、丙、丁四个人去完成。因各人专长不同,他们完成翻译不同文字所需的时间(h)如表所示。问:如何分配任务使效率最高?,.,23,效率矩阵,.,24,步骤一:零元素的产生。方法:找出效率矩阵每行的最小元素,并分别从每行中减去它。,min,实际含义:从事情的角度来考虑,表示此事分配给此人效率最高。,.,25,步骤二:继续产生零元素方法:再找出矩阵每列的最小元素,再分别从各列中减去它。,min0050,实际含义:从人的角度来考虑,表示某人做此事效率最高。,.,26,步骤三:判断零元素是否位于不同行、不同列?,经过上述两步变换后,矩阵的每行每列至少都有了一个零元素。确定能否找出m个位于不同行不同列的零元素的集合(本例中m=4),直观法:m很小时,直接判断得到;非直观法:m很大时,根据一定规则寻找。,.,27,直观法,只有3个0元素位于不同行、不同列,.,28,非直观法-步骤1(试指派过程),(1)从第一行开始,若该行只有一个零元素,就对这个零元素打上()号。同时,对打()号零元素所在列画一条直线,表示此列已经确定(人员确定),不能再从事其他行的工作(任务)。若该行没有零元素或有两个以上零元素(已划去的零元素不计在内),则转下一行,按照上述方法依次进行到最后一行;,.,29,例:从行开始的独立零元素的寻找与判断,(),(),从行开始标定独立零元素时,只能找到两个独立的零元素。,.,30,非直观法-步骤2,(2)在行寻找的基础上,从第一列开始,若该列只有一个零元素就对这个零元素打上()号(同样不考虑已划去的零元素),对打()号零元素所在行画一条直线(任务分配完毕,不能再分配给其他人)。若该列没有零元素或有两个以上零元素,则转下一列,依次进行到最后一列;,.,31,例:从列开始的独立零元素的寻找与判断,(),在行标定后的基础上,从第一列开始标定独立零元素时,只能找到一独立的零元素。,.,32,问题,只能对三个零元素进行标定(代表独立的零元素只有三个),后续如何操作?,.,33,非直观法-步骤3(第一种情形),(3)重复(1)、(2)两个步骤,可能出现三种情况:效率矩阵每行都有一个打()号的零元素,很显然,按上述步骤得到的打()号的零元素都位于不同行不同列,只要令对应打()号零元素对应的决策变量xij=1就找到了问题的最优解;,.,34,第一种情形,x11=1,x22=1,x33=1,x44=1。任务一甲;二乙;三丙;四丁,任务一任务二任务三任务四,甲乙丙丁,.,35,非直观法-4(第二种情形),打()号的零元素个数小于m,但未被划去的零元素之间存在闭回路(全以0为拐点),这时可顺着闭回路的走向,对每个间隔的零元素打一()号,然后对所有打()号的零元素,或所在行,或所在列画一条直线(一般会出现多种方案)。如:,.,36,第二种情形,(),(),只能给两个零元素打括号,还有四个零元素不能打上括号。剩下的未被划去和未打括号的零元素存在闭回路。,(),(),.,37,x13=1,x22=1,x31=1,x44=1,结论1,.,38,结论2,(),(),x14=1,x22=1,x31=1,x43=1,.,39,非直观法-5(第三种情形),矩阵中所有零元素或被划去,或打上()号,但打()号的零元素个数小于m,如:,打括号的零元素3m=4。证明0元素产生的还不够,还应继续产生。,.,40,步骤四:继续创造零元素。方法:为设法使每一行都有一个打()号的零元素,需要继续按定理1对矩阵进行变换。,(1)从矩阵未被直线覆盖的数字中找出一个最小的数k;(2)对矩阵的每行,当该行有直线覆盖时,令ui=0,无直线覆盖的,令ui=k;(3)对矩阵每列,有直线覆盖的列,令vj=-k,对无直线覆盖的列,令vj=0;(4)从原矩阵的每个元素aij中分别减去ui和vj,得到一个新的矩阵(aij-ui-vj),保证新矩阵中,原打括号的0元素不变,同时产生新的零元素。,.,41,步骤五:回到第三步,反复进行,一直到矩阵的每一行都有一个打()号的零元素为止,即找到了最优分配方案。,.,42,最优分配方案为:甲将说明书译成俄文,乙译成日文,丙译成英文,丁译成德文,全部所需时间为4+4+9+11=28小时。,.,43,回顾:指派问题的计算过程,效率矩阵,.,44,4,11,4,2,步骤一:产生每行的零元素。方法:从每行中找出最小的元素,与对应的每行元素相减,min,每行减去对应的最小元素,.,45,步骤二:产生位于每列的零元素方法:再找出矩阵每列的最小元素,再分别从各列中减去。,min0050,每列减去对应的最小元素,保证每行、每列都至少有一个0元素。,.,46,步骤三:判断零元素是否位于不同行、不同列。方法:首先从行开始试指派,只有一个零元素时,对零元素打括号,并对所在列画直线。而有多个零元素,或零元素已被画去,则转下一行;行分析完毕后,然后从列开始试指派,对每列只有一个零元素时,打括号,并画去其所在的行。,(),(),行试指派过程,列试指派过程,(),.,47,步骤四:继续创造零元素。方法:从未被画去的元素中,找到一个最小的元素k。(1)对行的操作:选择行位势ui,如果行被直线覆盖,则ui=0;如果未被覆盖,ui=k;(2)列的操作:列位势vj,如果列被直线覆盖,vj=-k;如果未被覆盖,vj=0。(3)产生新的效率矩阵:bij=aij-ui-vj,1、最小元素k=2;2、ui依次为2、2、0和2;3、vj依次取为-2、-2、0和0.。,ui,2,2,0,2,vj,-2,-2,0,0,bij=aij-ui-vj,.,48,步骤五:继续判断零元素是否位于不同行、不同列。方法:首先从行开始试指派,只有一个零元素时,对零元素打括号,并对所在列画直线。而有多个零元素,或零元素已被画去,则转下一行;行分析完毕后,然后从列开始试指派,对每列只有一个零元素时,打括号,并画去其所在的行。,(),(),(),(),最终结果,.,49,步骤六:获得最后结果。方法:对于打括号的零元素处进行指派,即可获得最短时间。,x13=1(工作一丙)x22=1(工作二乙)x34=1(工作三丁)x41=1(工作四甲),最短时间为:9+4+11+4=28h。,指派结果,.,50,4.5.4极大化的指派问题,对于目标为求极大的指派问题,先要对效率矩阵进行处理:,(1)找出效率矩阵中的最大值,分别用它去减阵中每一元素,得到新矩阵;,(2)对新得到的矩阵用原匈牙利法求解。,.,51,.,52,例、有4种机械要分别安装在4个工地,它们在4个工地的工作效率不同,问应如何指派,可使4台机械发挥的总效益最大?,.,53,解:,原效益矩阵中maxCij=Cij=43所以bij=43Cij(i,j=1,2,3,4),.,54,4.5.5人数和任务数不相等,例、4项工作分配给6个人完成,有人可不做,.,55,解:虚设两项假想的任务,.,56,(0),(0),(0),(0),(0),(0),人员安排:1,2;3;4,5休息;6总的时间为:2+1+3+2=8,.,57,(0),(0),(0),(0),(0),(0),人员安排:1,2;3;4,5休息;6总的时间为:2+1+3+2=8,.,58,例、,4人完成5项任务,每人可完成12项,.,59,解:因每个人可担任一至二项任务,因此将4人看作8人,再虚设3项任务,化为平衡指派问题。,.,60,最优解:甲无乙C,D丙B,E丁AminZ=129,.,61,例、,4人完成5项任务,其中一人完成两项,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论