7 整数规划问题的.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7 整数规划问题的

整数线性规划数学模型的一般形式为: 整数线性规划问题可以分为下列几种类型: ?二、整数规划的例子 三、解的特点 §7-2 分支定界法 7.2.1 思路与解题步骤(只解松弛问题) 1、在全部可行性域上解松弛问题 若松弛问题最优解为整数解,则其也是整数规划的最优解 2、分枝过程 若松弛问题最优解中某个 xk=bk 不是整数,令 ? bk ? 为 bk 的整数部分 构造两个新的约束条件 xk? ? bk ? 和 xk? ? bk ?+1,分别加于原松弛问题,形成两个新的整数规划 3、求解分枝的松弛问题 — 定界过程 设两个分枝的松弛问题分别为问题 1 和问题 2 ,它们的最优解有如下情况 表7.2.1 分枝问题解可能出现的情况 作业点评: 分枝问题的松弛解 注意: 对二维问题用图解法,对三维问题用分支定界法; 在对LP借分支时,若有两个以上变量的值都为非整,可任选其一进行分枝所选变量不同,分枝不同,结果不同; 分枝定界法同样适合于混合整数规划问题,分枝只对要求整数的变量进行 LP问题的解: 唯一解 无界解(松弛问题无界) 无可行解(松弛问题无可行或所有分枝问题无可行) 多重最优(两个或多个子问题同时最优) 模型中:Xij 为第 i 个工人分配去做第 j 项任务; aij 为第 i 个工人为完成第 j 项任务时的工时消耗; {aij}m?m 称为效率矩阵 二、匈牙利法 1、基本思想: (1)匈牙利法基于任务分配问题的标准型,应满足三个条件: 目标函数要求min; 效率矩阵{aij}为方阵; 效率阵中所有元素aij≥0且为常数 第一步:变换效率矩阵,使每行每列至少有一个零 行变换:找出每行最小元素,从该行各元素中减去之 列变换:找出每列最小元素,从该列各元素中减去之 (2)逐列检查,若该列只有一个未标记的零,对其加( )标记,将( )标记元素同行同列上其它的零打上*标记。若该列没有或有二个以上未标记的零,暂不标记,转下一列检查,直到所有列检查完; 基本步骤: 3、不规范形式的转化 要求所有aij ?0 若某些 aij 0 ,则利用定理 1 进行变换,使所有 bij ? 0 目标函数为min型 对于max型目标函数,将效率矩阵中所有 aij 反号,则等效于求min型问题;再利用定理 1 进行变换,使所有 bij ? 0,则可采用上述算法 2、人数和事数不等的指派问题 3、一个人可做几件事的指派问题 定理 1(构造等效矩阵) 如果从效率矩阵{aij}m?m中每行元素分别减去一个常数 ui,从每列元素分别减去一个常数 vj ,所得新的效率矩阵{bij}m?m的任务分配问题的最优解等价于原问题的最优解。证明: 定理 2 若方阵中一部分元素为零,一部分元素非零,则覆盖方阵内所有零元素的最少直线数等于位于不同行、不同列的零元素的最多个数。 证明:略 (3)基本思路: 根据定理 1 变换效率矩阵,使矩阵中有足够多的零。若矩阵中存在 m 个不同行不同列的零,就找到了最优解 若覆盖变换后的效率矩阵零元素的直线少于m 条,就尚未找到最优解,设法进一步变换矩阵,增加新的零 (2)匈牙利定理 引例:有四个熟练工人,他们都是多面手,有四项任务要他们完成。若规定每人必须完成且只完成一项任务,而每人完成每项任务的工时耗费如下表,问如何分配任务使完成四项任务的总工时耗费最少? 2、计算步骤 第二步(最优解检验)检查覆盖所有零元素的直线是否为m条 划线规则 (1)逐行检查,若该行只有一个未标记的零,对其加( )标记,将 ( )标记元素同行同列上其它的零打上*标记。若该行没有或有二个以上未标记的零,暂不标记,转下一行检查,直到所有行检查完; (3)重复1、2后,可能出现三种情况: a、每行都有一个 (0),显然已找到最优解,令对应(0)位置的 xij=1; b、仍有零元素未标记,此时,一定存在某些行和列同时有多个零,称为僵局状态(m较大时可能出现),因为无法采用 1、 2 中的方法继续标记。 c、所有零都已标记,但标有( )的零的个数少于m; (4)打破僵局。令未标记零对应的同行同列上其它未标记零的个数为该零的指数,选指数最小的先标记 ( ),划去同行同列其他0元素(标注*);采用这种方法直至所有零都被标记,或出现 情况 a,或 情况 c 。 (5)出现c情况的处理方法(划线过程)行表示人,列表示任务 对没有标记 ( ) 的行打?(没有安排任务) 对打? 行上所有其它零元素对应的列打 ?(安排任务) 再对打 ? 列上有 ( ) 标记的零元素对应的行打 ? 重复上面三步骤,直至无法继续 对没有打 ? 的行划横线(已经安排任务),对所有打 ? 的列划垂线(已经安排任务) ? ? ? 划线后会出现两种情况: (1) 标记(

文档评论(0)

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

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

1亿VIP精品文档

相关文档