最优化方法课程实验报告.docx

上传人:b****8 文档编号:9965031 上传时间:2023-05-22 格式:DOCX 页数:78 大小:400.87KB
下载 相关 举报
最优化方法课程实验报告.docx_第1页
第1页 / 共78页
最优化方法课程实验报告.docx_第2页
第2页 / 共78页
最优化方法课程实验报告.docx_第3页
第3页 / 共78页
最优化方法课程实验报告.docx_第4页
第4页 / 共78页
最优化方法课程实验报告.docx_第5页
第5页 / 共78页
最优化方法课程实验报告.docx_第6页
第6页 / 共78页
最优化方法课程实验报告.docx_第7页
第7页 / 共78页
最优化方法课程实验报告.docx_第8页
第8页 / 共78页
最优化方法课程实验报告.docx_第9页
第9页 / 共78页
最优化方法课程实验报告.docx_第10页
第10页 / 共78页
最优化方法课程实验报告.docx_第11页
第11页 / 共78页
最优化方法课程实验报告.docx_第12页
第12页 / 共78页
最优化方法课程实验报告.docx_第13页
第13页 / 共78页
最优化方法课程实验报告.docx_第14页
第14页 / 共78页
最优化方法课程实验报告.docx_第15页
第15页 / 共78页
最优化方法课程实验报告.docx_第16页
第16页 / 共78页
最优化方法课程实验报告.docx_第17页
第17页 / 共78页
最优化方法课程实验报告.docx_第18页
第18页 / 共78页
最优化方法课程实验报告.docx_第19页
第19页 / 共78页
最优化方法课程实验报告.docx_第20页
第20页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最优化方法课程实验报告.docx

《最优化方法课程实验报告.docx》由会员分享,可在线阅读,更多相关《最优化方法课程实验报告.docx(78页珍藏版)》请在冰点文库上搜索。

最优化方法课程实验报告.docx

最优化方法课程实验报告

项目一一维搜索算法

(一)

[实验目的]

编写加步探索法、对分法、Newton法的程序。

[实验准备]

1•掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤;

2.掌握对分法的思想及迭代步骤;

3.掌握Newton法的思想及迭代步骤。

[实验内容及步骤]

编程解决以下问题:

1.用加步探索法确定一维最优化问题

min(t)=t3-2t1

to

的搜索区间,要求选取to=O,h0冷厂=2.

加步探索法算法的计算步骤:

(1)选取初始点to[0,:

)(或1【0,tmax]),计算5二'(to).给出初始步长ho.0,

加步系数〉1,令k=0o

(2)比较目标函数值.令tk[tkhk,计算\1二魚J,若;:

kd<\,转⑶,否

则转⑷。

⑶加大探索步长•令hk1=〉hk,同时,令t=tk,tk=tk1,k=k/,转⑵。

(4)反向探索.若k=0,转换探索方向,令hk=-hk,tf1,转

(2)o否则,停止迭

代,令a=min{t,tk1},b=max{t,tk1}。

加步探索法算法的计算框图

程序清单

加步探索法算法程序见附录1

实验结果

运行结果为:

L

■T:

\ProgramFilesfx8b)\Mli

该问题的根的搜索空间是,[0.31

Pressanyheytocontinuc_

2.用对分法求解

min(t)二t(t2)

已知初始单谷区间[a,b]"-3,5],要求按精度;=0.3,;=0.001分别计算.

对分法迭代的计算步骤:

(1)确定初始搜索区间[a,b],要求飞厂:

0,:

'(b)0。

1

(2)计算[a,b]的中点c(ab).

2

(3)若‘(c):

:

:

0,则a=c,转⑷;若‘(c)=0,则t^c,转⑸;若'(c)0,则

b=c,转⑷.

⑷若|a-b卜:

;,则t^2(ab),转⑸;否则转

(2).

⑸打印t*,结束

对分法的计算框图

程序清单

对分法程序见附录2

实验结果

运行结果为

3.用Newton法求解

min「⑴二t3-2t1已知初始单谷区间[a,b]二【°,1】,要求精度;=0.01.

Newton法的计算步骤

(1)确定初始搜索区间

[a,b],要求

'(a):

0,

'(b).0

 

⑵选定to

⑶计算t=t°-「'(t。

)/「"(to)

⑷若|t-tol-;,则to=t,转(3);否则转(5)

⑸打印匕建),结束.

Newton法的计算框图

程序清单

Newton法程序见附录3

实验结果

运行结果为:

'13regramFiles(K8&]\Micro^oftVisualStudia\M'/Propsets

|求解的结果是;=0.劭砧P丄匕时f=-0.0886621

Pressanvtocontinue

项目二一维搜索算法

(二)

[实验目的]

编写黄金分割法、抛物线插值法的程序。

[实验准备]

1.掌握黄金分割法的思想及迭代步骤;

2.掌握抛物线插值法的思想及迭代步骤。

[实验内容及步骤]

编程解决以下问题:

1.用黄金分割法求解

min(t)=t(t2)

已知初始单谷区间[a,b]=[-3,5],要求精度•;:

=0.001.

黄金分割法迭代步骤:

(1)确定:

(t)的初始搜索区间[a,b].

(2)计算t^a0.382(b-a)

(3)计算t|=a0.618(b-a)

*t+to

(4)若|ti-t2F;,则打印t12,结束;否则转⑸.

2

(5)判别是否满足_2:

若满足,则置a=t2,2=£,2=1

然后转⑶;否则,置

b二,1讥,1二2,2「「(b-a),2二住2)

然后转⑷.

黄金分割法的计算框图:

程序清单

黄金分割法程序见附录4

实验结果

运行结果为:

▼'D:

\ProgramFiles(x86)\MicrosoftVisualStudio\MyProject5\zuiyou\Debug\ziyuan.exe*

to功厂迭代次数为0]迭代结里为root=0-056函数值逬似为:

f=0.115136

Pressanvkeytocontinue.

2.用抛物线插值法求解

minf(x)=8x3-2x2-7x3

已知初始单谷区间[a,b]=[°,2].

:

=0.001

抛物线插值法的计算步骤:

(1)(t)<(to),所以相对to来说t是好点,故划掉区间[t°,t2],保留[ti,to]为新区

间,故置t2=to,(t2)":

(to),to二t,(t)="to),ti保持不变;

(2):

(t)(to),所以相对t来说to是好点,故划掉区间[t^t],保留[t,t2]为新区间,

故置t^t,(t)匚:

(tj,to与t2保持不变;

程序清单

抛物线插值法程序见附录5

实验结果

运行结果为:

■'D:

\ProgrannFiles(xS6)\MicrosoftVisualStudio\MyProject5\zu

迭代第黑

近似?

R:

0>630061

函数植近似为:

-0-203424^essanykeytocantinue

项目三常用无约束最优化方法

(一)

[实验目的]

编写最速下降法、Newton法(修正Newton法)的程序[实验准备]

1.掌握最速下降法的思想及迭代步骤。

2.掌握Newton法的思想及迭代步骤;

3.掌握修正Newton法的思想及迭代步骤。

[实验内容及步骤]

编程解决以下问题:

1.用最速下降法求

minf(X)25x;,X°=[2,2]T,二0.01

最速下降法计算步骤

(1)取初始点X(0),容许误差(精度);0,令k=0

(2)计算p(k)-八f(X(k))

(3)检验p(k)空;?

若是迭代终止,取X"=X(k),否则转4°

(4)求最优步长k:

minf(X(k)•'p(k))=f(X(k)•'kp(k))(—维搜索)

>:

-0

令X(k1)=x(k)「kP⑹,令k-k1,转2°

最速下降法的计算框图

 

 

程序清单

最速下降法程序见附录6

实验结果

运行结果为:

 

2.用Newton法求

minf(X)=60「10人「4x2Xx|-x1x2初始点X0=[0,0]丁,;=0・01.

 

Newton

法的计算步骤

(1)

给定初始点x),及精度;•°,令k=0;

 

(2)

(3)

'f(X)亠-,停止,极小点为x(k),否则转步骤(3);计算了2f(X(k))F令S(k)=—[H(X(k))],Vf(X(k));

令x(f=x(k)+s(k),k=k+1,转步骤

(2)。

程序清单

Newton法程序见附录7

实验结果

运行结果为

Anvkeytccantinus

3.用修正Newton求

minf(X)=4(X11)22(x2一1)2为x?

10初始点X0=[0,0]丁,疋r。

01.

修正Newton的计算步骤

(1)给定初始点x®,及精度;V,令k=0;

(2)若'丿I,停止,极小点为x(k),否则转步骤(3);

(3)计算FPF',令s(k—[H(X(k))e(X(k));

使得f(X(k「kSk()=)minfXk(J:

_0

 

程序清单

修正Newton程序见附录8

实验结果

运行结果为

项目四常用无约束最优化方法

(二)

实验目的

编写共轭梯度法、变尺度法(DFP法和BFGS法)程序。

实验准备

1.掌握共轭方向法的思路及迭代过程;

2.掌握共轭梯度法的思想及迭代步骤;

3.掌握DFP法和BFGS法的思想及迭代步骤。

实验内容及步骤

编程解决以下问题:

1.用共轭梯度法求得min(x「4x;),取初始点X。

二【1,1「,;=0.01.

共轭梯度法算法步骤

(4)。

程序清单

共轭梯度法程序见附录9

实验结果

运行结果为

D:

\ProgramFiles(x86J\MicrosciftVisualStudio\MyProjerts\zu|y°ebug\z>yn

请输入函数的元数值”2请输入初始值:

1

1

Ml=-«i_0Pf1flW2,5(2=-H.ap2=»_aiawwi

(a.b]-1-4.SeRHBB^lV5MHHHI

pl=0•E凶电M■说F*KeHHH0.t=0.-17-1238

Ml—0H@S0@@@*m2=0■BBQaO0Pi>i=O<000898.p2=-0.0B3B05U^bJ»[-4B5Se000UJ580OB8]

^1-0.066600,p2—B・60QBO5.t-0・020810

Mtt^zDx1"-0■000800>x2—8・000860

厳终的凿數値为曾-SB@00BPreasanykeytocuniti.nu.cH

■22

2.用共轭梯度法求minf(X)=2Xi•X2-皿2,自定初始点,;=0.01.

程序清单

共轭梯度法程序见附录9

实验结果

运行结果为

 

3.用DFP法求minf(X)=4(Xi-5)(X2-6),初始点X。

珂8,9]丁,=°.°1

DFP法的具体迭代步骤如下

(1)给定初始点一:

迭代精度己,维数n

(2)置0tk,单位矩阵,计算席炉

(3)计算搜索方向-

(4)进行一维搜索求1,使

/M叫卅評)亠呻気0护)

得迭代新点-/-■'-■:

-

(5)检验是否满足迭代终止条件H‘11?

若满足,停止迭代,输出最优解

-二,-:

>'■:

;否则进行下一步。

(6)检查迭代次数,若k=n,则置..'',转向步骤

(2);若k

步。

(7)计算:

DFP法的计算框图

程序清单

DFP法程序见附录10

实验结果

运行结果为:

DFF^

函錚=4(Xl-5>^2t*2.的极小点为if=0砥荐根小点为自变量取值为|

xd=5

x2=6

卩尸耳貝盂Rrnub:

Ftijnnrif:

~im[iiE_

项目五常用约束最优化方法

[实验目的]

编写外点罚函数法、外点罚函数法的程序

[实验准备]

1•掌握外点罚函数法的思想及迭代步骤;

2.掌握内点罚函数法的思想及迭代步骤。

[实验内容及步骤]

编程解决以下问题:

1.用外点罚函数法编程计算

minf(X)二-x2,

Q(X)=InX2A0,

st.丿h(X)=捲+x2—1=0,

精度;=101

外点法的计算步骤:

(1)给定初始点X(0),初始罚因子■⑴,

放大系数c>1;允许误差e>0,设置k=1;

(2)以x(k-1)作为搜索初始点,求解无约束规划问题

minf(xp■P(x),令x(k)为所求极小点。

(3)当P(x(k)):

:

e,则停止计算,得到点x(k);否则,令’(kT)=c'(k),返回

(2)执行。

程序清单

外点罚函数法程序见附录11

实验结果

实验结果为

2.用内点罚函数法编程计算

 

3

min3(x11)

X2

st.

Xi-■1一0,x2—0.

 

初始点取为X。

心4r,

初始障碍因子取Ui=10缩小系数取c=0.1.

 

内点罚步骤

 

障碍参数⑴,缩小系数b•(0,1),置k=1;

(2)以x(k①为初始点,求解下列规划问题

令x(k)为所求极小点

minf(x)(k)B(x)

s.t.xS

(3)如果(k)B(x(k)):

e,则停止计算,得到结果x(k),

(4)否则令(k1)=b(k),置k=k+1,返回

(2)。

内点罚计算框图

程序清单

内点罚函数法程序见附录12

实验结果

运行结果为

附录1

#include#include#defineMAX20480doublefun(doublex){

returnx*x*x-2*x+1;

}

doubleMax_Num(doublea,doubleb)

{

if(a>b)

returna;

else

returnb;

}

doubleMin_Num(doublea,doubleb){

if(a

returna;

else

returnb;

}

voidStepAdding_Search(double&a,double&b)

{

doublet[MAX]={0};

doubleh[MAX]={0};

doublef[MAX]={0};

doubleresult=0;

doublep=2;

t[0]=0;

h[0]=1;

f[0]=fun(t[0]);

for(intk=0;k

{

t[k+1]=t[k]+h[k];

f[k+1]=fun(t[k+1]);

if(f[k+1]vf[k])

{

h[k+1]=p*h[k];

result=t[k];

t[k]=t[k+1];

f[k]=f[k+1];

}

elseif(k==0)

{

h[k]=-h[k];

result=t[k+1];

}

else{

a=Min_Num(result,t[k+1]);b=Max_Num(result,t[k+1]);

}

}

}

intmain()

{

doublea=0.0;

doubleb=0.0;

StepAdding_Search(a,b);

「vva

COUt«"该问题的根的搜索空间是

return0;

}

附录2

#include

#include

#defineeps0.001

doublefun(doublex)

{

returnx*x+2*x;

}

doublediff_fun(doublex)

{

return2*x+2;

}

doubledichotomy(doublea,doubleb)

{

doublec=0.0;

if((diff_fun(a)<0)&&(diff_fun(b)>0))

{

while(true)

{

c=(a+b)/2;

if(diff_fun(c)<0)

{

a=c;

if(fabs((a-b))

{

return(a+b)/2;

}

}

elseif(diff_fun(c)==0)

{

returnc;

}

else

{

b=c;

if(fabs((a-b))

{

return(a+b)/2;

}}}}}

intmain()

{

doublea=-3.0;

doubleb=5.0;

doubleresult=dichotomy(a,b);

coutvv"求解的结果是:

"vvresultvvendl;

return0;

}

附录3

#includeviostream.h>

#includevmath.h>

#defineeps0.01

doublefun(doublex)

{

returnx*x*x-2*x+1;

}

doublediff_fun(doublex)

{

return3*x*x-2;

}

doublediff_2_fun(doublex)

{

return6*x;

}

doublenewton(doublea,doubleb)

{

doubleresult=(a+b)/2;

doublet=0.0;

while(true)

{

t=result-(diff_fun(result)/diff_2_fun(result));

if(fabs((t-result))veps)

{

returnresult;

}

else

{

result=t;

}

}

}

intmain()

{

doublea=0.0;

doubleb=3.0;

doublex=newton(a,b);

coutvv"求解的结果是x="vvxvvendl;

coutvv"此时f(x)="vvfun(x)vvendl;

return0;

}

附录4

#includeviostream>

#includevmath.h>

usingnamespacestd;

doublefun(doublet)

{

return(t*t+2*t);

}

voidGoldensection(double(*pfun)(doublet))

{

intmaxflag=1000,k=1;

doublea=-3,b=5,err=0.001,t,t1,t2;

do

{

t1=a+0.618*(b-a);

t2=b-0.618*(b-a);

if(t1=t2){a=t2;b=t1;}

else{if(t1vt2){a=t2;}

else{b=t1;}}

k++;

}while(fabs(a-b)>err&&kvmaxflag);

if(k>=maxflag)

coutvvendlvv"黄金分割法迭代失败!

迭代次数为k="vvkvvendl;else

{

t=(a+b)/2;

coutvvendlvv"黄金分割法迭代成功!

迭代次数为k="vvk-1vvendl;

:

f(root)="vvfun(t)vvendl;}

coutvv"迭代结果:

近似根为root="vvtvvendl;coutvv"函数值近似为

}

intmain()

{

Goldensection(fun);

return0;

}

附录5

#include

#include

usingnamespacestd;

doublefun(doublex)

{

return(8*x*x*x-2*x*x-7*x+3);

}

doublemax(doublea,doubleb)

{

if(a>b)returna;

elsereturnb;

}

doublemin(doublea,doubleb)

{

if(a>b)returnb;

elsereturna;

}

voidParainterpolation(double(*pfun)(doublex)){

doublea=0,b=2,err=0.001,x=0,x0=1,f,f0;

do

{

x=((x0*x0-b*b)*fun(a)+(b*b-a*a)*fun(x0)+(a*a-x0*x0)*fun(b))/(2*((x0-b)*fun(a)+(b-a)*fun(x0)+(a-x0)*f

un(b)));

f0=fun(x0);

f=fun(x);

if(f=f0){a=min(x,x0);b=max(x,x0);x0=(a+b)/2;}

else{

if((fun(x)-f0)*(x-x0)>0)

{

b=max(x,x0);x0=min(x,x0);

}

else

{

a=min(x,x0);x0=max(x,x0);

}

}

}while(fabs(x-x0)>err);

x=(x+x0)/2;

coutvv"迭代结果:

"wendl;

"]X*[|jER=[|JdIO】x*[o]耳乙=【0】dh]b*pwE|+[|Jx=[|Jx!

[o]6¥piue|+[o]x=[o]x!

(e161x)epLue|=piue|}(00乙=>辭头(【116JL]6+[o]6¥[o]6)lJbs)9|!

i|M!

|pus»;noo!

o=!

h】d-=[|Jb!

[o]d-=[o]6堆17】e+【0】x*[乙]e+[|jx*[订耳乙)=[|Jd乂【£]e+【|Jx*[乙]e+[o]x*[o]耳乙)=[0】d!

[i]e«uio(++!

!

9>!

0=!

)JOj!

|pu9»H:

[g]e、[朋、[£旧、⑵e、[圧[ole:

诲翌阴诲國Y嗨逖羽舆..»inoo

!

|pu9»11[g]e+sx[i7]e+以[£旧+乙xjxNe+乙xrx[订盼|,x^x[o]e=(x)j华莎沁..»inoo!

u=[|,]x!

iu=[o]x!

u«uio!

iu«uio!

|PU9»uu\:

旬阴[|JxTo]xu»inoo

0VVUQ!

|PU9»H9固耿Y嗨舆u»inoo:

0=!

iuitu'iu'A'o'[乙]b'[乙]dsiqnopl9】E'【£]x'piUE|©iqnop!

|pus»;noolPU9»u番孫马吴自畐搦W窖搦$蚩劉丄堪窖u»inoo

}OuiblupioA{!

sujn;sj!

(^bus)/21UB|-=s!

s9|qnop!

((21de)/v\od+(21[oK[o]B)Mod)-=2iue|

堆lJx*[|Jx*©[|jE)/v\od+[o]x*[o]x*(y[o】E)Mod)=MH:

3iue|£|,iue|令iqnop}([s]b°|qnop'[乙]d°|qnop'[乙]x°|qnop)wpiUE|令|qnop9pnQU!

#9pnQU!

#9沓朗

{:

0ujn;sj!

(unj)uo!

;e|odj9;u!

ejec|

}OujBiuM

{!

|pu9»(x)un»,,:

■沏必旬滋国..»inoo!

|pu9»x»H:

制沏必„»inoo

g【o]=-P【o】;

g【i]=-P【i];

i++;

coutvv'

I******************************************I

'vvendl;

 

coutvv"第"vvivv"次迭代结果:

"vvendl;

cout<<"p的模为:

"vvsqrt(g[0]*g[0]+g[1]*g[1])vvendl;

coutvv'x的值"vvx[0]

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2