最优化实例和matlab源程序Word格式文档下载.docx

上传人:b****6 文档编号:16020502 上传时间:2022-11-17 格式:DOCX 页数:11 大小:46.37KB
下载 相关 举报
最优化实例和matlab源程序Word格式文档下载.docx_第1页
第1页 / 共11页
最优化实例和matlab源程序Word格式文档下载.docx_第2页
第2页 / 共11页
最优化实例和matlab源程序Word格式文档下载.docx_第3页
第3页 / 共11页
最优化实例和matlab源程序Word格式文档下载.docx_第4页
第4页 / 共11页
最优化实例和matlab源程序Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

最优化实例和matlab源程序Word格式文档下载.docx

《最优化实例和matlab源程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最优化实例和matlab源程序Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

最优化实例和matlab源程序Word格式文档下载.docx

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:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1