最优化实例和matlab源程序Word格式文档下载.docx
- 文档编号:16020502
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:11
- 大小:46.37KB
最优化实例和matlab源程序Word格式文档下载.docx
《最优化实例和matlab源程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最优化实例和matlab源程序Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
X14.800000
X22.400000
二、动态规划之0-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<
xd)return-1;
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++){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<
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;
//进入右子树
//计算上界
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;
bestX.length;
i++){solution+="
"
;
solution+=String.valueOf(bestX[i]);
returnsolution;
publicstaticdoublegetBestValue(){
三、最短路径问题:
给定距离矩阵,求第一点到其它点的最短距离
给定下列矩阵,求第一点到其余各点的最短路径
50
40
25
10
15
20
55
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)<
length(a)
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;
运行输出,第一个点到其它各点的最短路径长度,即:
d=03545352510
四、关键路径问题
1.题目要求:
某工程由下表作业组成,计算出其关键路径。
作业
计划完成时间
紧前工作
A
5
/
B
C
11
D
4
E
F
CD
G
21
BE
H
35
I
J
F,G,I
K
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件/年,代入相关的公式得到:
(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
1n=3.7947全年的订货次数为T次
(2)sets:
times/1..2/:
n,Q,TC;
endsetsdata:
n=3,4;
enddata
@for(times:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优化 实例 matlab 源程序