最优化实例和matlab源程序资料.docx
- 文档编号:25674644
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:17
- 大小:52.42KB
最优化实例和matlab源程序资料.docx
《最优化实例和matlab源程序资料.docx》由会员分享,可在线阅读,更多相关《最优化实例和matlab源程序资料.docx(17页珍藏版)》请在冰豆网上搜索。
最优化实例和matlab源程序资料
最优化平时作业
一、目标规划
1、题目:
见书中例题P110例4
2、解题方法:
利用Lingo求解
3、具体步骤
(1).对应于第一优先等级,建立线性规划问题:
model:
min=-d1;
5*x1+10*x2<=60;
x1-2*x2+d1_-d1=0;
end
运行结果:
-d1=0
(2)对应于第二优先等级,将-d1=0作为约束条件,建立线性规划问题:
min=d2_;
5*x1+10*x2<=60;
x1-2*x2+d1_-d1=0;
4*x1+4*x2+d2_-d2=36;
-d1=0;
end
运行结果:
d2=0;
(3).对应于第三优先等级,将-d1=0,-d1=0作为约束条件,建立线性规划问题:
min=d3_;
5*x1+10*x2<=60;
x1-2*x2+d1_-d1=0;
4*x1+4*x2+d2_-d2=36;
6x1+8*x2+d3_-d3=48;
-d1=0;
d2=0;
end
运行结果:
d3=0;
X14.800000
X22.400000
二、动态规划之0-1背包问题
1、题目:
给定n种物品和一背包。
物品i的重量是Wi,其价值为Vi,背包的容量是c,问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大。
2、解题方法与思路:
利用java求解,.思想方法是回溯思想
3、需求分析
对于给定n种物品和一背包。
在容量最大值固定的情况下,要求装入的物品价值最大化
4、java源程序及运行结果
BackTrace.java
*Tochangethistemplate,chooseTools|TemplateManager
*andopenthetemplateintheeditor.
*/
packagesunfa;
importjava.util.Date;
publicclassBackTrace{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
doublew[]={2,2,6,5,4};
doublev[]={6,3,5,4,6};
intn=5;
doublec=10;
knapsack(v,w,c);
System.out.println(bestp);
}
//比较两个元素大小的类
privatestaticclassElementimplementsComparable{
intid;
doubled;
privateElement(intidd,doubledd){
id=idd;
d=dd;
}
publicintcompareTo(Objectx){
doublexd=((Element)x).d;
if(d if(d==xd)return0; return1; } publicbooleanequals(Objectx){ returnd==((Element)x).d; } } staticdoublec;//背包容量 staticintn;//物品数 staticdouble[]w;//物品重量数组 staticdouble[]p;//物品价值数组 staticdoublecw;//当前重量 staticdoublecp;//当前价值 staticdoublebestp;//当前最优值 staticint[]x;//解 staticint[]sortX;//排好序之后的解 staticint[]bestX;//最有解 staticDatedate=null;//@jve: decl-index=0: publicstaticdoubleknapsack(double[]pp,double[]ww,doublecc){ c=cc; n=pp.length-1; cw=0.0; cp=0.0; bestp=0.0; Element[]q=newElement[n]; //q为单位重量价值数组 for(inti=1;i<=n;i++) q[i-1]=newElement(i,pp[i]/ww[i]); MergeSort.mergeSort(q); p=newdouble[n+1]; w=newdouble[n+1]; x=newint[n+1]; sortX=newint[n+1]; bestX=newint[n+1]; for(inti=1;i<=n;i++){ p[i]=pp[q[n-i].id]; w[i]=ww[q[n-i].id]; sortX[i]=q[n-i].id; } backtrack (1);//回溯搜索 returnbestp; } privatestaticvoidbacktrack(inti){ if(i>=n){ if(cp>bestp){ bestp=cp; for(intj=1;j<=n;j++){ bestX[j]=x[j]; } } return; } //搜索子树 if(cw+w[i]<=c){ //进入左子树 x[sortX[i]]=1; cw+=w[i]; cp+=p[i]; backtrack(i+1); cw-=w[i]; cp-=p[i]; } if(bound(i+1)>bestp) x[sortX[i]]=0; backtrack(i+1);//进入右子树 } //计算上界 privatestaticdoublebound(inti){ doublecleft=c-cw; doublebound=cp; //以物品重量价值递减顺序装入物品 while(i<=n&&w[i]<=cleft){ cleft-=w[i]; bound+=p[i];i++; } //装满背包 if(i<=n) bound+=p[i]/w[i]*cleft; returnbound; } publicstaticStringgetX(){ Stringsolution=String.valueOf(bestX[1]); for(inti=2;i solution+=","; solution+=String.valueOf(bestX[i]); } returnsolution; } publicstaticdoublegetBestValue(){ returnbestp; } } 三、最短路径问题: 给定距离矩阵,求第一点到其它点的最短距离 1、题目: 给定下列矩阵,求第一点到其余各点的最短路径 2、解题方法: 利用matlab求解 3、具体步骤: 源程序及运行结果 clear; clc; M=10000; a(1,: )=[0,50,M,40,25,10]; a(2,: )=[zeros(1,2),15,20,M,25]; a(3,: )=[zeros(1,3),10,20,M]; a(4,: )=[zeros(1,4),10,25]; a(5,: )=[zeros(1,5),55]; a(6,: )=zeros(1,6); a=a+a'; pb(1: length(a))=0;pb (1)=1;d(1: length(a))=M;d (1)=0;temp=1; whilesum(pb) tb=find(pb==0); d(tb)=min(d(tb),d(temp)+a(temp,tb)); tmpb=find(d(tb)==min(d(tb))); temp=tb(tmpb (1)); pb(temp)=1; end 运行输出,第一个点到其它各点的最短路径长度,即: d=03545352510 四、关键路径问题 1.题目要求: 某工程由下表作业组成,计算出其关键路径。 作业 计划完成时间 紧前工作 A 5 / B 10 / C 11 / D 4 B E 4 A F 15 CD G 21 BE H 35 BE I 25 BE J 15 F,G,I K 20 FG 2.解题方法: 用lingo求解 3.LINGO源程序 sets: event/1..8/: et,lt; active(event,event)/ ! ABCDE0FGHI0JK; 1,21,31,43,42,53,54,65,65,85,76,77,86,8 /: d,tf,ff; endsets data: d=510114401521352501520; enddata n=@size(event); et (1)=0; @for(event(k)|k#gt#1: et(k)=@max(active(i,k): et(i)+d(i,k)); ); lt(n)=et(n); @for(event(k)|k#lt#n: lt(k)=@min(active(k,j): et(j)-d(k,j)); ); @for(active(i,j): tf(i,j)=lt(j)-et(i)-d(i,j); ff(i,j)=et(j)-et(i)-d(i,j); ); 即项目的总工期为51天,作业在(1,3),(3,5),(5,6)和(6,8)位于关键路径上。 五、存储问题 1.题目要求: 某电器公司的生产流水线需要某种零件,该零件需要靠订货得到.为此,该公司考虑到了如下费用结构: (1)批量订货的订货费12000元/次; (2)每个零件的单位成本为10元/件; (3)每个零件的存贮费用为0.3元/(件·月); (4)每个零件的缺货损失为1.1元/(件·月)。 公司应如何安排这些零件的订货时间与订货规模,使得全部费用最少? 设该零件的每月需求量为800件. (1)试求今年该公司对零件的最佳订货存贮策略及费用; (2)若明年对该零件的需求将提高一倍,则需零件的订货批量应比今年增加多少? 订货次数以为多少? 解: 取一年为单位时间,由假设,订货费CD=12000元/次,存贮费Cp=3.6元/(件·年),需求率D=96000件/年,代入相关的公式得到: 2.LINGO源程序 (1)MODEL: C_D=12000; D=96000; C_P=3.6; Q=(2*C_D*D/C_P)^0.5; T=Q/D; n=1/T; TC=0.5*C_P*Q+C_D*D/Q; END 全年的订货次数为 次 (2) sets: times/1..2/: n,Q,TC; endsets data: n=3,4; C_D=12000; D=96000; C_P=3.6; enddata @for(times: n=D/Q; TC=0.5*C_P*Q+C_D*D/Q; ); END 结果输出: 全年组织4次订货更好一些,每季度订货一次,每次订货24000件。 程序: (3) MODEL: sets: order/1..99/: TC,EOQ; endsets @for(order(i): EOQ(i)=D/i; TC(i)=0.5*C_P*EOQ(i)+C_D*D/EOQ(i); ); TC_min=@min(order: TC); Q=@sum(order(i): EOQ(i)*(TC_min#eq#TC(i))); N=D/Q; data: C_D=12000; D=96000; C_P=3.6; enddata END 结果显示: 一年组织4次订货(每季度1次),每次的订货量为24000件,最优费用为91200元 六、矩阵对策给定下列矩阵,求最优决策 1、题目: 见书中P337例7 2、解题方法与思路: 转化为线性规划问题,再用lingo求解 3、具体步骤: 源程序及运行结果 (1)求X(lingo源程序) min=x5; 9*x1+2*x2+5*x3+10*x4-x5>=0; 8*x1+4*x2+8*x3+7*x4-x5>=0; 11*x1+6*x2+7*x3+9*x4-x5>=0; 8*x1+3*x2+8*x3+6*x4-x5>=0; x1+x2+x3+x4=0; end (2)求Y(lingo源程序) max=x5; 9*x1+8*x2+11*x3+8*x4-x5>=0; 2*x1+4*x2+6*x3+3*x4-x5>=0; 5*x1+8*x2+7*x3+8*x4-x5>=0; 10*x1+7*x2+9*x3+6*x4-x5>=0; x1+x2+x3+x4=0; end 运行输出: 对策值V=8 七、排队论 1、解题步骤: 第1步调查并收集和处理数据,记录客户到达时刻、等待时间和服务时间.假定客户到达的间隔时间服从指数分布(均值为10分钟);每个客户的服务时间服从均匀分布U[10,15]。 第2步构造模拟模型.输人因素: 客户的到达间隔时间和服务时间;排队规则: 先到先服务;一个服务机构。 第3步模拟实验。 设置模拟时钟及总的运行时间T,如8小时等。 推进原则按下次事件推进或均匀间隔推进。 2、用MATLAB编制程序如下: forn=1: 10 arrive=zeros(1,n); fori=2: n arrive(i)=arrive(i-1)+exprnd(0.1); end wait=zeros(1,n); fori=1: n if(i==1) wait(i)=0; else servetime=unifrnd(10,15); if(arrive(i-1)+servetime+wait(i-1)>arrive(i)) wait(i)=arrive(i-1)+servetime+wait(i-1)-arrive(i); else wait(i)=0; end end end meantime=mean(wait) end 运行结果 meantime= 0 meantime= 7.2542 meantime= 12.1298 meantime= 20.0985 meantime= 26.8833 meantime= 32.5758 meantime= 37.2478 meantime= 43.6372 meantime= 51.4519 meantime= 59.4032 >>计算的一组结果如下表: 客户数目 0 1 2 3 4 平均等待时间 0 5.5753 14.1838 18.9329 28.0946 客户数目 5 6 7 8 9 平均等待时间 28.1320 38.2700 40.8833 50.5942 59.3735
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优化 实例 matlab 源程序 资料