实验5 整数规划分支定界 的编程实现.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:4 大小:38KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验5 整数规划分支定界 的编程实现.doc

实验5整数规划分支定界的编程实现.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验5整数规划求解的分支定界法的编程实现成绩专业班级信息123学号201212030330姓名战应顺报告日期.实验类型:●验证性实验○综合性实验○设计性实验实验目的:熟练整数规划求解的分支定界法。实验内容:整数规划求解的分支定界法2个(题目自选1个混合整数规划、1个0-1整数规划)实验原理整数规划求解的分支定界法,首先确定目标函数的一个初始上下界,然后通过逐步分支使上界减小,下界增大,直到两者相等时,就求出了最优值和最优解。实验步骤1要求上机实验前先编写出程序代码2编辑录入程序3调试程序并记录调试过程中出现的问题及修改程序的过程4经反复调试后,运行程序并验证程序运行是否正确。5记录运行时的输入和输出。预习编写程序代码:实验报告:根据实验情况和结果撰写并递交实验报告。实验总结:参考程序MaxZ=3x1+2x22x1+3x2<=14.54x1+x2<=16.5x1,x2>=0且为整数建立函数ILp.m文件function[x,y]=ILp(f,G,h,Geq,heq,lb,ub,x,id,options)%整数线性规划分支定界法,可求解纯整数规划和混合整数规划。%y=minf’*xs.t.G*x<=hGeq*x=heqx为全整数或混合整数列向量%用法%[x,y]=ILp(f,G,h,Geq,heq,lb,ub,x,id,options)%参数说明%lb:解的下界列向量(Default:-int)%ub:解的上界列向量(Default:int)%x:迭代初值列向量%id:整数变量指标列向量,1-整数,0-实数(Default:1)globalupperoptcx0AbAeqbeqIDoptions;ifnargin<10,options=optimset({});options.Display='off';options.LargeScale='off';endifnargin<9,id=ones(size(f));endifnargin<8,x=[];endifnargin<7|isempty(ub),ub=inf*ones(size(f));endifnargin<6|isempty(lb),lb=zeros(size(f));endifnargin<5,heq=[];endifnargin<4,Geq=[];endupper=inf;c=f;x0=x;A=G;b=h;Aeq=Geq;beq=heq;ID=id;ftemp=ILP(lb(:),ub(:));x=opt;y=upper;%下面是子函数functionftemp=ILP(vlb,vub)globalupperoptcx0AbAeqbeqIDoptions;[x,ftemp,how]=linprog(c,A,b,Aeq,beq,vlb,vub,x0,options);ifhow<=0return;end;ifftemp-upper>0.00005%inordertoavoiderrorreturn;end;ifmax(abs(x.*ID-round(x.*ID)))<0.00005ifupper-ftemp>0.00005%inordertoavoiderroropt=x';upper=ftemp;return;elseopt=[opt;x'];return;end;end;notintx=find(abs(x-round(x))>=0.00005);%inordertoavoiderrorintx=fix(x);tempvlb=vlb;tempvub=vub;ifvub(notintx(1,1),1)>=intx(notintx(1,1),1)+1;tempvlb(notintx(1,1),1)=intx(notintx(1,1),1)+1;ftemp=IntLP(tempvlb,vub);end;ifvlb(notintx(1,1),1)<=intx(notintx(1,1),1)tempvub(notintx(1,1),1)=intx(notintx(1,1),1);ftemp=IntLP(vlb,tempvub);end;在Matlab命令窗口输入:f=[3,2];A=[2,3;4,1];b=[14.5;16.5];Aeq=[];beq=[];lb=[0,0];ub=[];[xn,yn]=ILp(f,A,b,Aeq,beq,lb,ub,[1,1],1,[])xn=1.0e-015*0.11100yn=3.3307e-016在Matlab命令窗口