0-1整数规划解法.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二 0-1型整数规划的一般解法隐枚举法 解0-1型整数规划最容易想到的方法,和一般整数线性规划的情形一样,就是穷举法,即检查变量取值为0或1的每一种组合,比较目标函数值以求得最优解, 这就需要检查变量取值的2n个组合。 对于变量个数n较大(例如n>10),这几乎是不可能的。 而隐枚举法就是在此基础上改进的,通过加入一定的条件,就能较快的求得最优解。 只检查变量取值的组合的一部分,就能求到问题的最优解,这样的方法称为隐枚举法(implicit enumeration),分枝定界法也是一种隐枚举法。其解题关键是寻找可行解,产生过滤条件。 过滤条件:是满足目标函数值优于计算过的可行解目标函数值的约束条件。 下面举例说明求解0-1型整数规划的隐枚举法 例4.6 : 目标函数 max z=3x1-2x2+5x3 约束条件: x1+2x2-x3≤2 (1) x1+4x2+x3≤4 (2) x1+x2≤3 (3) 4x2+x3≤6 (4) x1,x2,x3=0或1 (5) 我们在求最优解时,对于极大化问题,当然希望z≥3,于是增加一个约束条件: 3x1-2x2+5x3≥3 ◎ 称为过滤的条件(filtering constraint)。这样,原问题的 线性约束条件就变成5个。 用全部枚举的方法,3个变量共有23=8个解,原来4个约束条 件,共需32次运算。 现在增加了过滤条件◎,如按下述方法进行,就可减少运算 次数。将5个约束条件按◎~(4)顺序排好。 对每个解,依次代入约束条件左侧,求出数值,看是否适合 不等式条件,如某一条件不适合,同行以下各条件就不必再 检查,因而就减少了运算次数。 至此,z值已不能改进,即得到最优解,解答如前,但计算已简化。 本例计算过程实际只作16次运算。 即求得最优解(x1,x2,x3)=(1,0,1), max z=8 注意: 一般常重新排列xi的顺序使目标函数中xi的系数是递增(不减)的,在上例中, 改写 z=3x1-2x2+5x3=-2x2+3x1+5x3 因为-2,3,5是递增的,变量(x2,x1,x3)也按下述顺序取值:(0,0,0), (0,0,1),(0,1,0),(0,1,1),…, 这样,最优解容易比较早的发现。 再结合过滤条件的改进,更可使计算简化 指派问题与匈牙利法 指派问题的求解步骤: 指派问题与匈牙利法 找独立0元素,常用的步骤为: 指派问题与匈牙利法 指派问题与匈牙利法 4) 变换矩阵(bij)以增加0元素 在没有被直线通过的所有元素中找出最小值,没有被直线通过的所有元素减去这个最小元素;直线交点处的元素加上这个最小值。新系数矩阵的最优解和原问题仍相同。转回第2步。 指派问题与匈牙利法 例7 有一份中文说明书,需译成英、日、德、俄四种文字,分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分派任务,可使总时间最少? 指派问题与匈牙利法 解:1)变换系数矩阵,增加0元素。 指派问题与匈牙利法 3)作最少的直线覆盖所有0元素 指派问题与匈牙利法 指派问题与匈牙利法 练习 已知五人分别完成五项工作耗费如下表,求最优指派方案。 指派问题与匈牙利法 解:1)变换系数矩阵,增加0元素。 指派问题与匈牙利法 指派问题与匈牙利法 指派问题与匈牙利法 指派问题与匈牙利法 指派问题与匈牙利法 指派问题与匈牙利法 2. 不平衡的指派问题 指派问题与匈牙利法 3. 一个人可做几件事的指派问题 指派问题与匈牙利法 4. 某事一定不能由某人做的指派问题 指派问题与匈牙利法 解: 1) 这是不平衡的指派问题,首先转换为标准型,再用匈牙利法求解。 2) 由于任务数多于人数,所以假定一名虚拟人,设为戊。因为工作E必须完成,故设戊完成E的时间为M(M为非常大的数),其余效率系数为0,则标准型的效率矩阵表示为: 指派问题与匈牙利法 用匈牙利法求出最优指派方案为: * Page * * 解题时先通过试探的方法找一个可行解,容易看出(x1,x2,x3)=(1,0,0),满足(1)~(4)条件,算出相应的目标函数值z=3。 在计算过程中,若遇到z值已超过条件◎右边的值,应改变条件◎,使右边值为迄今为止最大者, 然后继续作。 例如,当检查点(0,0,1)时,因z=5(>3), 所以改进过滤条件,用3x1-2x2+5x3≥5 ◎′代替◎,继续进行。 这种对过滤条件的改进,更可以减少计算量。 再改进过滤条件,用3x1-2x2+5x3≥8◎″代替◎′,

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档