整数规划IP.ppt

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

第5章 整数规划(IP) 整数规划的模型 分枝定界法 割平面法 0-1整数规划 指派问题 5.1 整数规划的模型 5.2 分枝定界解法 2、例题 例2、用分枝定界法求解整数规划问题(单纯形法) 5.3 割平面解法 5.4 0-1 型整数规划 bintprog函数——0-1整数规划 f = [-9; -5; -6; -4]; A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1]; b = [9; 1; 0; 0]; [x, z] = bintprog(f,A,b) 5.5 指派问题 例1: 指派问题的计算机解法 整数规划问题的求解可以使用Lingo等专用软件。对于一般的整数规划问题,无法直接利用Matlab的函数,必须利用Matlab编程实现分枝定界解法和割平面解法。但对于指派问题等特殊的整数规划问题或约束矩阵是幺模矩阵时,有时可以直接利用Matlab的函数linprog。 例: 求解下列指派问题,已知指派矩阵为 解:编写Matlab程序如下: c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5; 8 4 2 3 5;9 10 6 9 10]; c=c(:); %把矩阵c转化为向量 a=zeros(10,25); for i=1:5 %实现循环运算 a(i,(i-1)*5+1:5*i)=1; a(5+i,i:5:25)=1; end %此循环把指派问题转化为线性规划问题 b=ones(10,1); [x,y]=linprog(c,[],[],a,b,zeros(25,1),ones(25,1)); X=reshape(x,5,5) opt=y 求得最优指派方案为 ,最优值为21。 练习:用分枝定界法求解整数规划问题 (图解法) 练习1:用分枝定界法求解整数规划问题 (单纯形法) 练习3:求解指派问题 -2 -4 -9 -7 第一步:变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素,即 (1) 从(cij)的每行元素都减去该行的最小元素; (2) 再从所得新系数矩阵的每列元素中减去该列的最小元素。 -4 -2 ◎ ? ◎ ? ? ◎ ◎ 第二步:进行试指派,以寻求最优解。 在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。找独立0元素,常用的步骤为: (1)从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎ 。然后划去◎ 所在列(行)的其它0元素,记作? ;这表示这列所代表的任务已指派完,不必再考虑别人了。 (2)给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎ 所在行的0元素,记作? . (3)反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为止。 ◎ ? ◎ ? ? ◎ ◎ (4)若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,则从剩有0元素最少的行(列)开始,比较这行各0元素所在列中0元素的数目,选择0元素少的那列的这个0元素加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为止。 (5)若◎ 元素的数目m 等于矩阵的阶数n,那么这指派问题的最优解已得到。 ◎ 元素的数目m 等于矩阵的阶数n,那么这指派问题的最优值: 4+4+9+11. 例2、 有一份中文说明书,需译成英、日、德、俄四种文字,分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分派任务,可使总时间最少? 任务 人员 A B C D 甲 6 7 11 2 乙 4 5 9 8 丙 3 1 10 4 丁 5 9 8 2 求解过程如下: 第一步,变换系数矩阵: -5 第二步,试指派: ◎ ◎ ◎ ? ? 找到 3 个独立零元素 但 m = 3 n = 4 ◎ ◎ ◎ ? ? √ √ √ 独立零元素的个数m等于最少直线数l,即l=m=3n=4; 第三步:作最少的直线覆盖所有0元素。 (1)对没有◎的行打√号; (2)对已打√号的行中所有含?元素的列打√号; (3)再对打有√号的列中含◎ 元素的行打√号; (4)重复(2),(3)直到得不出新的打√号的行、列为止; (5)对

文档评论(0)

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

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

1亿VIP精品文档

相关文档