- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运筹学-整数规划(快二)(名校讲义)
第十六讲 整数规划(二) §1 匈牙利法 §2 蒙特卡洛法(随机取样法) §1 匈牙利法 (1) 匈牙利法主要解决指派问题,指派问题是一种特殊的“0 ? 1”规划。 例如指派授课问题,现有A、B、C、D四门课程,需由甲、乙、丙、丁四人讲授,并且规定: 每人只讲且必须讲1门课。 每门课必须且只需1人讲。 四人分别讲每门课的费用示于表2-3中: ? §1 匈牙利法 (2) 表2-3 授课费用表 课 费用 人 A B C D 甲 乙 丙 丁 2 10 9 7 15 4 14 8 13 14 16 11 4 15 13 9 求何人讲何门课才能使总费用最低? §1 匈牙利法 (3) 该例便是指派问题的典型实例,该类问题的典型数学模型为: =1 i=1,…,m =1 j=1,…,m xij= min z = §1 匈牙利法 (4) 其中,cij为效能矩阵(或费用矩阵)元素,表示第i人 去完成第j任务时的费用。共有m个人去完成m件工作。 求解该问题可采用匈牙利法,其主要思路和步骤如下: 1.在费用矩阵中,任一行(列)减去或加上1个常数,其最优基础解集不变,只改变费用函数值。 从费用矩阵中的i行每个元素减去ai(i=1,…,m),从j列中每个元素减去bj(j=1,…,m),则新目标函数改变为: min?z = - - §1 匈牙利法 (5) = - - 显而易见,变化后的目标函数表达式只相差一个常数,则规划的最优解集不可能改变。 2.用上述方法变换,使费用矩阵每行每列都至少出现1个零,且能达到全分配时,即可令零元素所对应的变量xij=1(当然分配时,必须使每行每列有且仅有1个xij为1)。于是可获得费用函数值z=0,这必是此次的最优分配,否则,只会使z≥0。 例如,由表1所示的授课例子中,经过变换可得最后结果为: §1 匈牙利法 (6) 当达到右边费用矩阵时,就已达到全分配,用Δ表示之,即,最优解集为: x13=1 (甲讲C门课) x22=1 (乙讲B门课) x34=1 (丙讲D门课) x41=1 (丁讲A门课) §1 匈牙利法 (7) 此时对应的最后规划模型目标函数必为零,但原始规划目标函数最优值为变换中历次从行(列)中减去(或加上的)常数之代数和。该题变换中共减去28,故本例最优费用值为28。 3.从前所述,指派问题的关键是如何将原规划的费用矩阵变换成全分配矩阵,现不加证明的阐述其变换步骤(仍结合前例说明)。 1) 修改费用矩阵,使矩阵的每一行和第一列至少出现1个零元素,处理方法即为每行(每列)都减去该行(列)的最小元素。 §1 匈牙利法 (8) §5 匈牙利法 (9) 2) 试图制订一个完全分配方案,该方案只与表中零元素相对应。从第1行开始,依次检查各行,直到找出只有一个未标记的零元素的一行为止。如果在零元素上有一个符号Δ或×,则称零元素已标记。符号Δ表示分配Δ所在行的那一位教师担任Δ所在列的那一门课程。对未做标记的零元素标Δ后,应对同一列其它的零元素画×。 §1 匈牙利法 (10) 现在依次检查每列中只含一个未标记的零元素,并给未标记的零元素标Δ。对同一行其它的零元素画×(如果有的话)。 如果有多行多列同时有2个或以上的未标记零元素,则可将其中的任意行或列中一个未标零元素标Δ,并将同行和同列的其他零元素画×。 §1 匈牙利法 (11) 因为本例此时不可能制定出只包含零元素的完全分配方案,于是画出最少数目的水平线和垂直线,使它们穿过每行每列的零元素至少一次。其画线步骤如下: ①检查所有尚未分配(即未标记Δ)的行,并记上√。 √ §1 匈牙利法 (12) ②检查那些尚未检查过的,而在已检查过的行中有零元素的列,并记上√。 ③检查那些尚未检查过的,而在已检查过的列中有标记△的行,并记上√。 √ √ √ §1 匈牙利法 (13) ④重复步骤②和③,直到不能进一步检查为止。本例中,第1轮检
文档评论(0)