搜档网
当前位置:搜档网 › 最优化实验报告

最优化实验报告

最优化实验报告
最优化实验报告

《数值最优化算法与理论》

课程实验报告

姓名:周飞飞(201210020231)

张琳婧(201210020228)

班级:信息与计算科学2班

指导教师:刘陶文

2014年11月27日

《数值最优化算法与理论》课程实验报告

课程名称数值最优化算法与理论班级信息与计算科学2班小组成员

周飞飞(201210020231)

张琳婧(201210020228)

实验课题拟Newton法(BFGS算法)及FR共轭梯度法求解无约束问题实验目的

通过上机实验掌握最优化的实用算法的结构及性能,并用这些

算法解决实际的最优化问题,掌握一些实用的编程技巧。

实验要求选用你喜欢的无约束优化的某种梯度法(最速下降法,Newton 法,拟牛顿法,共轭梯度法)通过编程,上机实验对所提供的测试问题进行测试、运行,然后提供实验报告。在实验报告中指出你选用的算法、参数设置、终止准则、线性搜索以及实验结果,附加你的实验心得。

实验内容使用非精确Wolf-Powell线性搜索实现拟牛顿法(BFGS算法)及FR共轭梯度法求解无约束问题,并通过Matlab软件实现算法,观察分析实验过程,对比实验结果来进一步理解两种方法的原理及优点与缺陷。

目录

1、实验原理--------------------------------------------------------------- 1

2、实验内容--------------------------------------------------------------- 4

3、实验结果与分析--------------------------------------------------------- 8

4、实验心得-------------------------------------------------------------- 12 附录------------------------------------------------------------------- 13

一、实验原理

无约束问题

是连续可微的

这里函数R R f R x x f n

n

→∈:),(min

下降算法是求解无约束优化问题的一类最基本的算法。 其一般步骤为:(已知近似最优解k x ) 1.首先,计算下降方向k d 满足:0)(k α满足:)()(k k k k x f d x f <+α 3.计算新的近似最优解:k k k k d x x α+=+1

这次实验所运用的拟牛顿法及FR 共轭梯度法主要是在下降算法的基础上,求解下降方向的方法上有所不同。

(一)拟牛顿法

(1)拟牛顿法的简述

拟牛顿法(Quasi-Newton Methods)是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne 国家实验室的物理学家W. C. Davidon 所提出来。Davidon 设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher 和M. J. D. Powell 证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。

拟牛顿法和最速下降法(Steepest Descent Methods)一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法(Newton's Method)更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。 (2)拟牛顿法的思想

拟牛顿法是对牛顿法的一种改善 保持其优点:快速收敛性

克服其缺陷:需计算Hessian 矩阵且要求其正定 方法:构造对称正定矩阵k B 或k H 使其满足

1

-22)( )(k k k k x f H x f B ?≈?≈或

计算搜索方向:

)

Newton ( )(- :)Newton ( )(-k 1-方向拟或方向拟k k k k k x f H d x f B d ?=?=

构造k B 的要求如下:

.

)3(Newton , ,0 )2(Newton Newton )( )1(2易于计算方向为下降方向;使得产生的拟对称正定方向;方向近似使得产生的拟k k k k B B k x f B ≥??≈

(3)拟牛顿法的BFGS 算法

BFGS 修正公式:(1.1) 1k

T k T

k

k k k T k k T k k k k k s y y y s B s B s s B B B +-=+

该公式由:Broyden-Fletcher-Goldfarb-Shanno 提出,是迄今为止最好的拟牛顿修

正公式。

BFGS 算法:

.

3 ,1: 6;(1.1 . , ,||)(|| , 5;

4;

(4.16) 0)( 3; . , ,||)(|| 2;

0 .0,, 1111k 1k 00转步令步)计算否则由公式终止算法则得解若令步由线性搜索计算步长步得解解线性方程组

步否则转下一步算法终止则得解若步令精度初始对称正定矩阵给定初始点步+=≤?+==?+≤?=>∈++++k k B x x f d x x d x f d B x x f k B R x k k k k k k k k k k k n εααεε

(二)非线性共轭梯度法(FR 算法) (1)共轭梯度法的简述

共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hessian 矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 共轭梯度法最早是由Hestenes 和Stiefle (1952)提出来的,用于解正定系数矩阵的线性方程组,在这个基础上,Fletcher 和Reeves (1964)首先提出了解非线性最优化问题的共轭梯度法。由于共轭梯度法不需要矩阵存储,且有较快的收敛速度和二次终止性等优点,现在共轭梯度法已经广泛地应用与实际问题中。 共轭梯度法是一个典型的共轭方向法,它的每一个搜索方向是互相共轭的,而这些搜索方向d 仅仅是负梯度方向与上一次迭代的搜索方向的组合,因此,存储量少,计算方便 。 (2)共轭梯度法的思想

Fletcher-Reeves 共轭梯度法,简称FR 法。

共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜素,求出目标函数的极小点。根据共轭方向基本性质,这种方法具有二次终止性。

给定初始点n R x ∈0,取初始搜索方向)(00x f d -?=,在后面的迭代中取负梯度方

向和前一搜索方向的线性组合作为搜索方向即1,)(1≥+-?=-k d x f d k k k k β,其中

k β是待定参数,适当选取k β,使得01=-k T

k Qd d 。

FR 共轭梯度法,搜索方向的计算公式为:

(2.1) 1 ,)(-0 ),(- 1-0???≥+?=?=k d x f k x f d k FR

k k k β (3)FR 共轭梯度法算法

2

1-2

FR

||

(||||(||))k k k

x f x f ??=β

由Fletcher-Reeves(1964)提出。 FR 算法:

2,1:.,(2.1) 54;33 .,||)(||2;

0: ),(-.0,1FR 111k 1k 000转步令其中确定由步;

令步由线性搜索计算步长步;

否则转步算法终止,则得解若步令令精度给定初始点步+==+=≤?=?=>∈++++k k d d x x x x f k x f d R x k k k k k k k k n ββααεε

(三)Wolfe-Powell 线搜索

)(使得

取线性搜索:给定常数1.3-----------------)()()()()(01

1/2,0 Powell -Wolfe 2T 1211????≥+??+≤+><<<

T

k k k k k k

T k k k k k k k d x f d d x f d x f x f d x f σαασαασσσ

Armijo 型线性搜索的条件是Wolfe-Powell 型线性搜索中的第一个条件。Wolfe-Powell 型线性搜索中的第二个条件的作用在于限制过小的步长,减少了求解时的计算量。同时运用非精确Wolfe-Powell 线性搜索保证了拟牛顿法(BFDS

算法)中的k B 矩阵对称正定。 Wolfe-Powell 线搜索算法:

{}{}

.

2.1:.1.3,1,0),(:

3.

3.1.3:2.

0:.1.3,2,1,0|).1,0(,0:1.

;11.31:0)()(1)()1()(1)()()()0(1转步令的最大值)中第一个不等式成立中使得(是集合令步转步长令;否则,则终止计算,并得步长)中的第二个不等式,满足(若步令最大值的第一个不等式成立的)中中使得(是集合令,给定常数步否则转下一步),则取满足(若步+=?=-+===?±±=∈>==+-i i j i i i k i k j i k i k i k i k i k k i k i k k k αβραααρβαααβραρρβαα

二、实验内容

拟牛顿法程序:

for i=1:nn %%%1-nn 函数依次进入运算

(1)初值准备

nprob=numer(i);

[n,m,xk,filename]=initf(nprob);%%%%%%%% 读初始数据 xk=factor*xk; bk=eye(n); k=0;

tic; %计时开始

fk=objfcn(n,m,xk,nprob); fnum=1;

gk=grdfcn(n,m,xk,nprob); gnum=1;

delta=norm(gk,2);

(2)迭代开始

while k<1000 %%%%%%%%%迭代上限1000

if delta<=teminate %%ate te x f k

min )(≤? break;

Else

(3)确定下降方向)(k d

dk=-linsolve(bk+muk*eye(n),gk);%%%%求解下降方向 gk1=gk;fk1=fk;gkdk=gk'*dk;

if gk'*dk>=-1.0e-14%当dk 不是充分下降时采用负梯度为搜索方向 dk=-gk; end

(4)确定步长k α

%%%%%%%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell 搜索计算步长

[alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell 搜索计算步长

(5)计算1+k x

fnum=fnum+wfnum; gnum=gnum+wgnum;

xk1=xk;xk=xk1+alphak*dk; fk=objfcn(n,m,xk,nprob); gk=grdfcn(n,m,xk,nprob);

if norm(gk,2)<=teminate

k=k+1;

break;

end

B

(6)由BFGS修正公式得

k

1

%%%%%%%%%%%%%%%%% Bk update

sk=xk-xk1;bks2=sk'*bk*sk;yk=gk-gk1;

yksk=yk'*sk;

if yksk>0

bks1=bk*sk*sk'*bk;

yks=yk*yk'/yksk;bk1=bk;

bk=bk1-bk1*sk*sk'*bk1/(sk'*bk1*sk)+yk*yk'/(yk'*sk);

end

end

k=k+1;

End

(7)无约束问题运算结束后记录所花费时间

time=toc;%终止计时

if time<=0.000001

t(i,s)=0.0001;

else

t(i,s)=time;%%%将每个无约束问题求解时间记录

End

(8)输出无约束问题的运行结果

fprintf('\n\t%s\t\t\t%2d\t\t\t%5d\t\t\t\t%5d\t\t\t%5d\t\t\t%4f\n',fil ename,n,k,fnum,gnum,time);%%%%结果输出

End

FR共轭梯度法

for i=1:nn

(1)初值准备

nprob=numer(i);

[n,m,xk,filename]=initf(nprob);%%%%%%%% 读初始数据

xk=factor*xk;

bk=eye(n);

k=0;

tic; %计时开始

fk=objfcn(n,m,xk,nprob);

fnum=1;

gk=grdfcn(n,m,xk,nprob);

gnum=1;

delta=norm(gk,2);

dk=-gk;

(2)迭代开始

while k<1000 %%%%%%%%%迭代上限1000

if delta<=teminate

break;

else

gk1=gk;fk1=fk;

α

(3)确定步长

k

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

[alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob);

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

(4)计算1+k x

fnum=fnum+wfnum;

gnum=gnum+wgnum;

xk1=xk;xk=xk1+alphak*dk;

d

(5)确定下降方向)(k

fk=objfcn(n,m,xk,nprob);

gk=grdfcn(n,m,xk,nprob);

temk1=norm(gk1,2);

temk=norm(gk,2);

dk1=dk;

bk=temk^2/temk1^2;

dk=-gk+bk*dk1;

end

k=k+1;

delta=norm(gk,2);

End

(6)无约束问题运算结束后记录所花费时间

time=toc;%终止计时

if time<=0.000001

t(i,s)=0.0001;

else

t(i,s)=time;

End

(8)输出无约束问题的运行结果

fprintf('\n\t%s\t\t\t%2d\t\t\t%5d\t\t\t\t%5d\t\t\t%5d\t\t\t%4f\n',fil

ename,n,k,fnum,gnum,time); End

非精确Wolf-powell 线性搜索

function [alphak1,fk2,gk2,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk,gk,nprob)

rho1=0.8;rho2=0.6;sigma1=0.01;sigma2=0.6;%6.0,01.0,6.0,8.0211====σσρρ

fk1=fk;gk1=gk; wfnum=0;wgnum=0;

%step 0 alphak1=1;

fk2=objfcn(n,m,xk+alphak1*dk,nprob);wfnum=wfnum+1; gk2=grdfcn(n,m,xk+alphak1*dk,nprob);wgnum=wgnum+1; if fk2-fk1<=sigma1*alphak1*gk1'*dk if gk2'*dk>=sigma2*gk1'*dk return; end %step 0 else

%step 1%%%%%%%%%%%%%%%%%%%%% i=-8; while 1 if i~=0

alphak1=rho1^i;

fk2=objfcn(n,m,xk+alphak1*dk,nprob);wfnum=wfnum+1; end

if fk2-fk1<=sigma1*alphak1*gk1'*dk i=i-1;

fk2=objfcn(n,m,xk+rho1^i*dk,nprob); if fk2-fk1>sigma1*rho1^i*gk1'*dk %alphak=alphak1 break; end else i=i+1; end end

%alphak1=rho1^i

%step 1%%%%%%%%%%%%%%%%%%%%%%%

j=0; while 1

alphak1=rho2^j*alphak1; if alphak1==0 break; end

gk2=grdfcn(n,m,xk+alphak1*dk,nprob);wgnum=wgnum+1; if gk2'*dk>=sigma2*gk1'*dk %alphak=alphak1; break; end j=j+1; end

End

(1)参数设置:

Wolf-powell 搜索中的6.0,01.0,6.0,8.0211====σσρρ;

拟牛顿法及共轭梯度法中相关参数:teminate=1.0e-6;factor=0.1 numer=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,18,19,20,21, 22,23,24,25,26,28,29,30,31,32,33,34]; (2)终止准则:

Wolf-powell 算法终止:当搜索到步长)(i k α满足(3.1)的第二个不等式时终止程序;

拟牛顿法及共轭梯度法算法终止:

当ε≤?)()(k x f 时,此处60.1min -==e ate te ε,迭代次数1000

三、实验结果及分析

运行Matlab 程序(见附录)得如下结果:

***************************拟牛顿法results*************************** Problem Dim. Iter. fnum gnum time

******************************************************************** rose 2 327 362 330 1.701463 froth 2 202 228 204 0.201636 badscp 2 1000 1081 1002 0.911348

badscb 2 156 219 159 0.170202 beale 2 394 395 395 0.338338 jensam 2 81 109 84 0.098432 helix 3 131 212 136 0.160998 bard 3 1000 1052 1003 2.357615 gauss 3 771 772 772 1.112494 gulf 3 1000 1001 1001 1.130130 box 3 262 263 263 0.276804 sing 4 1000 1028 1003 0.877423 wood 4 245 365 254 0.236166 kowosb 4 1000 1001 1001 1.025711 bd 4 1000 3127579 11754 601.421517 bigss 6 1000 1014 1002 6.634311 osb2 11 1000 1050 1004 4.903811 watson 100 1000 1172 1009 32.726229 rosex 100 427 1651 495 4.125570 singx 20 1000 1028 1003 2.215915 pen1 10 1000 1001 1001 3.435982 pen2 10 1000 1001 1001 2.011244 vardim 10 84 148 86 0.197684 trig 10 62 63 63 0.178239 bv 10 1000 1001 1001 1.587811

IE 100 60 61 61 3.226137

trid 10 31 180 46 0.185056

band 10 28 241 46 0.243491

lin 10 87 88 88 0.295781

lin1 10 4 56 6 0.093807

lin0 10 4 52 6 0.043293

*************************FR共轭梯度results************************* Problem Dim. Iter. fnum gnum time

******************************************************************** rose 2 219 7165 439 1.464882

froth 2 234 9462 469 1.806027

badscp 2 1000 96436 2001 15.215235

badscb 2 1000 135547 2007 15.917961

beale 2 255 6252 503 0.921001

jensam 2 97 3736 195 0.667411

helix 3 251 8532 503 1.418059

bard 3 362 7269 719 3.800870

gauss 3 221 4034 412 0.826613

gulf 3 1 13 3 0.003870

box 3 1000 41907 1994 7.366457

sing 4 1000 30599 2001 3.308938

wood 4 1000 56767 2001 5.802187

kowosb 4 1000 39371 1987 6.781742

bd 4 1000 2357531 8409 317.418211 bigss 6 1000 28339 1998 4.479351 osb2 11 1000 39071 2001 16.598379 watson 100 1000 63667 2001 351.867009 rosex 100 439 15429 879 5.235774 singx 20 1000 29525 2001 7.609801 pen1 10 460 11699 536 8.503069 pen2 10 634 15400 1255 3.928670 vardim 10 138 4896 277 0.771366 trig 10 34 179 51 0.070117 bv 10 905 21683 1811 4.307150 IE 100 107 1124 203 12.088222 trid 10 1000 28795 2001 3.960488 band 10 1000 71783 12370 13.859478 lin 10 44 243 67 0.102122 lin1 10 84 5070 169 0.782205 lin0 10 1000 2975480 10278 321.160871

运行时间分布图对比:

结果分析:总体上可明显看出拟牛顿法比FR共轭梯度法效率要高。虽然对某一特定的无约束问题,可能会出现用拟牛顿法反而没有FR共轭梯度法节约时间,计算量小,迭代次数少的情况。从得出的数据上看,由于34个不同的问题,除个别问题外,拟牛顿法运行时间基本保持在很短的水平,故得出的图像较为平坦,波动较小;而共轭梯度法在处理不同问题时所用的时间较不稳定,且有些问题耗费时间明显较多,故图像浮动较大。故可以得出结论,较FR共轭梯度法,拟牛顿法在解决无约束问题上效率更高,稳定性更好。

四、实验心得

在平时上课时有很多求解无约束问题的方法只知道一些大概,许多算法上的细节上缺乏深入的理解,通过这次实验在这方面知识上得到了补充,同时在Matlab软件应用上也有了一定的进步。

实验的准备期,通过翻阅课本及网上资源的查找,我逐渐理解了最速下降法、牛顿法、拟牛顿法及共轭梯度法在算法上的区别,各个算法的性质,存在的优点和缺陷。了解到这些方法之间并不是独立的,牛顿法可以说是在最速下降法上的升华,拟牛顿法又是在克服牛顿法的缺陷的基础上建立的,共轭梯度法则是介于最速下降法和牛顿法之间的一种方法。解决无约束问题的算法百样,但是我们现所学的都是基于下降算法的方法,无论是最速下降法,拟牛顿法,或是共轭梯度法,都是主要解决如何寻找更优更快的下降方向,及如何更加合理地取得步长,这一共同点使我在理解算法上得到了很大的帮助。

Matlab软件实现过程,由于Matlab软件是这学期夏季学期学习了,虽然一些基本语法还记得,但是在编写程序上还是存在困难,经常遇到报错的情况,通过多次的调试才得以运行。不过正是这个算法转化为程序语言的过程,让我较之

前能更熟练得运用Matlab软件,也更加注意算法中的一些细节。

附录:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%

%%%%拟牛顿法及FR共轭梯度法 program using Wolfe-Powell

search %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%

clc;

muk=10;teminate=1.0e-6;factor=0.1;

numer=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,18,19,20,21,22 ,23,24,25,26,28,29,30,31,32,33,34];

no=size(numer);

nn=no(:,2);

s=1;

fprintf('\n\t***************************拟牛顿法

results***************************\n');

fprintf('\tProblem\t\tDim.\t\tIter.\t\t\tfnum\t\tgnum\t\t time\n');

fprintf('\t********************************************** **********************\n');

for i=1:nn

nprob=numer(i);

[n,m,xk,filename]=initf(nprob);%%%%%%%% 读初始数据

xk=factor*xk;

bk=eye(n);

k=0;

tic; %计时开始

fk=objfcn(n,m,xk,nprob);

fnum=1;

gk=grdfcn(n,m,xk,nprob);

gnum=1;

delta=norm(gk,2);

while k<1000 %%%%%%%%%迭代上限1000

if delta<=teminate

break;

else

dk=-linsolve(bk+muk*eye(n),gk);

gk1=gk;fk1=fk;gkdk=gk'*dk;

if gk'*dk>=-1.0e-14 %当dk不是充分下降时采用负梯度为搜索方向

dk=-gk;

end

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

[alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob );

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

fnum=fnum+wfnum;

gnum=gnum+wgnum;

xk1=xk;xk=xk1+alphak*dk;

fk=objfcn(n,m,xk,nprob);

gk=grdfcn(n,m,xk,nprob);

if norm(gk,2)<=teminate

k=k+1;

break;

end

%%%%%%%%%%%%%%%%% Bk update

sk=xk-xk1;bks2=sk'*bk*sk;yk=gk-gk1;

yksk=yk'*sk;

if yksk>0

bks1=bk*sk*sk'*bk;

yks=yk*yk'/yksk;bk1=bk;

bk=bk1-bk1*sk*sk'*bk1/(sk'*bk1*sk)+yk*yk'/(yk'*sk);

end

end

k=k+1;

end

time=toc;%终止计时

if time<=0.000001

t(i,s)=0.0001;

else

t(i,s)=time;

end

fprintf('\n\t%s\t\t%2d\t\t%5d\t\t\t%5d\t\t%5d\t\t%4f\n',f ilename,n,k,fnum,gnum,time);

end

s=2;

fprintf('\n\t*************************FR共轭梯度法

results*************************\n');

fprintf('\tProblem\t\tDim.\t\tIter.\t\t\tfnum\t\tgnum\t\t time\n');

fprintf('\t********************************************** **********************\n');

for i=1:nn

nprob=numer(i);

[n,m,xk,filename]=initf(nprob);%%%%%%%% 读初始数据

xk=factor*xk;

bk=eye(n);

k=0;

tic; %计时开始

fk=objfcn(n,m,xk,nprob);

fnum=1;

gk=grdfcn(n,m,xk,nprob);

gnum=1;

delta=norm(gk,2);

dk=-gk;

while k<1000 %%%%%%%%%迭代上限1000

if delta<=teminate

break;

else

gk1=gk;fk1=fk;

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

[alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob );

%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长

fnum=fnum+wfnum;

gnum=gnum+wgnum;

xk1=xk;xk=xk1+alphak*dk;

fk=objfcn(n,m,xk,nprob);

gk=grdfcn(n,m,xk,nprob);

temk1=norm(gk1,2);

temk=norm(gk,2);

dk1=dk;

bk=temk^2/temk1^2;

dk=-gk+bk*dk1;

end

k=k+1;

delta=norm(gk,2);

end

time=toc;%终止计时

if time<=0.000001

t(i,s)=0.0001;

else

t(i,s)=time;

end

fprintf('\n\t%s\t\t%2d\t\t%5d\t\t\t%5d\t\t%5d\t\t%4f\n',f ilename,n,k,fnum,gnum,time);

end

% clc;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%作图开始

ZT=0.01;

Tau=10;

Mp=size(t,1);%测试问题数目%

Ms=size(t,2);%求解方法数目%

r=zeros(Mp,Ms);

for i=1:Mp

mintp=min(t(i,1:Ms));%在所有求解器中对每一测试问题提取最小CPU时间%

if mintp==0

mintp=0.001;

end

for s=1:Ms

r(i,s)=t(i,s)/mintp;

end

end

rho=zeros(Ms);

hold on;

for s=1:Ms

numbers=zeros(1,(Tau)/ZT);

for tau=0.00001:ZT:Tau

for i=1:Mp

if r(i,s)<=tau

k=ceil((tau-1)/ZT);

numbers(k)=numbers(k)+1;

end

end

end

switch s

case 1 % 拟牛顿法

tau=1.00001:ZT:Tau;

k=ceil((tau-1)/ZT);

plot(tau,numbers(k)/Mp,':b');

case 2 % FR共轭梯度法

tau=1.00001:ZT:Tau;

k=ceil((tau-1)/ZT);

plot(tau,numbers(k)/Mp,'-.m');

end

set(gca,'xTick',[1:1:10]);

set(gca,'yTick',[0:0.1:1]);

end

title('distrubtion function');

xlim = get(gca,'XLim');

ylim = get(gca,'YLim');

h = xlabel('\tau');

set(h,'Position',[xlim(2)+(xlim(2)-xlim(1))*0.05,ylim(1)] );

text(xlim(1)-0.4,ylim(2)+0.02,'p','rotation',0);

legend('拟牛顿法','FR共轭梯度法',4)

hold off; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%作图结束

最优化实验报告

最优化方法 课程设计报告班级:________________ 姓名: ______ 学号: __________ 成绩: 2017年 5月 21 日

目录 一、摘要 (1) 二、单纯形算法 (2) 1.1 单纯形算法的基本思路 (2) 1.2 算法流程图 (3) 1.3 用matlab编写源程序 (4) 二、黄金分割法 (7) 2.1 黄金分割法的基本思路 (7) 2.2 算法流程图 (8) 2.3 用matlab编写源程序 (9) 2.4 黄金分割法应用举例 (11) 三、最速下降法 (11) 3.1 最速下降法的基本思路 (11) 3.2 算法流程图 (13) 3.3 用matlab编写源程序 (13) 3.4 最速下降法应用举例 (13) 四、惩罚函数法 (17) 4.1 惩罚函数法的基本思路 (17) 4.2 算法流程图 (18) 4.3 用matlab编写源程序 (18) 4.4 惩罚函数法应用举例 (19) 五、自我总结 (20) 六、参考文献 (20)

一、摘要 运筹学是一门以人机系统的组织、管理为对象,应用数学和计算机等工具来研究各类有限资源的合理规划使用并提供优化决策方案的科学。通过对数据的调查、收集和统计分析,以及具体模型的建立。收集和统计上述拟定之模型所需要的各种基础数据,并最终将数据整理形成分析和解决问题的具体模型。 最优化理论和方法日益受到重视,已经渗透到生产、管理、商业、军事、决策等各个领域,而最优化模型与方法广泛应用于工业、农业、交通运输、商业、国防、建筑、通信、政府机关等各个部门及各个领域。伴随着计算机技术的高速发展,最优化理论与方法的迅速进步为解决实际最优化问题的软件也在飞速发展。其中,MATLAB软件已经成为最优化领域应用最广的软件之一。有了MATLAB 这个强大的计算平台,既可以利用MATLAB优化工具箱(OptimizationToolbox)中的函数,又可以通过算法变成实现相应的最优化计算。 关键词:优化、线性规划、黄金分割法、最速下降法、惩罚函数法

最优化方法实验报告(1)

最优化方法实验报告Numerical Linear Algebra And Its Applications 学生所在学院:理学院 学生所在班级:计算数学10-1 学生姓名:甘纯 指导教师:单锐 教务处 2013年5月

实验一 实验名称:熟悉matlab基本功能 实验时间: 2013年05月10日星期三实验成绩: 一、实验目的: 在本次实验中,通过亲临使用MATLAB,对该软件做一全面了解并掌握重点内容。 二、实验内容: 1. 全面了解MATLAB系统 2. 实验常用工具的具体操作和功能 实验二 实验名称:一维搜索方法的MATLAB实现 实验时间: 2013年05月10日星期三实验成绩: 一、实验目的: 通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。 二、实验背景: (一)0.618法(黄金分割法),它是一种基于区间收缩的极小点搜索

算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理 黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 2、算法步骤 用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下: (1)选定初始区间11[,]a b 及精度0ε>,计算试探点: 11110.382*()a b a λ=+- 11110.618*()a b a μ=+-。 (2)若k k b a ε-<,则停止计算。否则当()()k k f f λμ>时转步骤(3)。 当()()k k f f λμ≤转步骤(4)。 (3)置 11111110.382*()k k k k k k k k k k a b b a b a λλμμ+++++++=??=?? =??=+-?转步骤(5)

整数规划实验报告例文

整数规划实验报告例文 篇一:实验报告整数规划 一、实验名称:整数规划问题和动态规划问题 二、实验目的: 熟练使用Spreadsheet建立整数规划、动态规划模型,利用excel建立数学模型,掌握求解过程,并能对实验结果进行分析及评价 三、实验设备 计算机、Excel 四、实验内容 (一)整数规划 1、0-1整数规划 其中,D11=F2;D12=F3;D13=F4;D14=F5; B11=SUMPRODUCT($B$9:$E$9,B2:E2); B12=SUMPRODUCT($B$9:$E$9,B3:E3); B13=SUMPRODUCT($B$9:$E$9,B4:E4); B14=SUMPRODUCT($B$9:$E$9,B5:E5); H8==SUMPRODUCT($B$9:$E$9,B6:E6); 用规划求解工具求解:目标单元格为$H$8,求最大值,可变单元格为$B$9:$E$9,约束条件为 $B$11:$B$14<=$D$11:$D$14;$B$9:$E$9=二进制。在【选项】

果,实现最大利润为140. 2、整数规划 其中,D11=D2;D12=D3; B11=SUMPRODUCT($B$8:$C$8,B2:C2);B12=SUMPRODUCT($B$8:$ C$8,B3:C3); F7=SUMPRODUCT($B$8:$C$8,B4:C4); 用规划求解工具求解:设置目标单元格为F7,求最大值,可变单元格为$B$8:$C$8,约束条件为 $B$11:$B$12<=$D$11:$D$12;$B$8:$C$8=整数。在【选项】菜单中选择“采用线性模型”“假定非负”。即可进行求解得结果,实现最大利润为14. 3、指派问题 人数跟任务数相等: 其中, F11=SUM(B11:E11);F12=SUM(B12:E12);F13=SUM(B13:E13);F14=SU M(B14:E14); B15=SUM(B11:B14);C15=SUM(B11:B14);D15=SUM(B11:B14);E15=SU M(B11:B14); H11,H12,H13,H14,B17,C17,D17,E17单元格值均设为1. 用规划求解工具求解:设置目标单元格为$B$8,求最小值,可变单元格为$B$11:$E$14,约束条件为$B$11:$E$14=二进制; $B$15:$E$15=$B$17:$E$17;$F$11:$F$14=$H$11:$H$14. 在【选

最优化实验报告(单纯形法的matlab程序,lingo程序)

实验一:线性规划单纯形算法 一、实验目的 通过实验熟悉单纯形法的原理,掌握Matlab 循环语句的应用,提高编程的能力和技巧。 二、实验用仪器设备、器材或软件环境 Windows Xp 操作系统 ,Matlab6.5,计算机 三、算法 对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始 基本可行解。设初始基为B,然后执行如下步骤: (1).解B Bx b =,求得1 B x B b -=,0,N B B x f c x ==令计算目标函数值 1(1,2,...,)i m B b i -=i 以b 记的第个分量 (2).计算单纯形乘子w , B wB C =,得到1 B w C B -=,对于非基变量,计算判别数 1i i i B i i z c c B p c σ-=-=-,令 max{}k i i i R z c σ∈=-,R 为非基变量集合 若判别数0k σ≤ ,则得到一个最优基本可行解,运算结束;否则,转到下一步 (3).解k k By p =,得到 1 k k y B p -=;若0k y ≤,即k y 的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4). (4).确定下标r,使 { } :0 min ,0 t r rk tk tk b b tk y y t y y >=>且r B x 为离基变量。 k x 为进基变量,用k p 替换r B p ,得到新的基矩阵B ,返回步骤(1)。 对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。对于极大化问题,应令 min{}k k j j z c z c -=-

四、计算框图 是 否 是 否 开始 初始可行解B 令1,0,B N B B x B b b x f c x -==== 计算单纯形乘子1 B w c B -=,计算判别数,i j j wp c j R σ=-∈(非基变量) 令max{,}k j j R σσ=∈ 0?k σ≤ 得到最优解 解方程k k By p =,得到1k k y B p -=。 0?k y ≤ 不存在有限最优解 确定下标r ,是 { }:0 min ,0 t r rk tk tk b b tk y y t y y >=>且 k x 为进基变量,用 k p 替换r B p ,得到新的基矩阵B

学生科学实验效果最优化的基石实验报告设计

学生科学实验效果最优化的基石实验报告设计 自然科学是以实验为基础的学科。实验是人们研究和认识自然的重要方法。因此,在自然科学的教学中,实验也是重要的教学方法之一。通过实验,不仅可以提供学生对科学现象的感性认识,更可以让学生获得初步的实验技能和观察分析问题的能力。 小学科学实验教学的设计是运用系统论的思想和方法,以学习理论、教学理论为基础,计划和安排实验教学的各个环节、要素,以实现教学效果最优化为目的的活动。通过多年来的实验教学实践与思考,我们可以让学生像科学家那样,亲历科学探究的过程,这有利于充分发挥学生的主体作用,让学生积极主动参与到观察、实验等学习活动中去,亲自感知实验所产生的各种现象和变化,提高自行获取知识的能力,而其中比较重要的一个环节就是学生实验报告的设计与记录。在学生实验的过程中,一份好的实验报告设计,就像是一盏明灯,能给学生指引实验的目标、方向,能提供给学生形成结论的分析数据,进而培养学生科学实验的基本素养,使学生的科学实验效果达到最优化。 一、观察实验报告的填写,有利于学生在实验中观察,进一步培养学生实验的责任心和有序观察能力。 教科版四下《油菜花开了》解剖花的实验中,我设计了如下实验报告,在教学中取得了很好的效果。 《解剖花》实验人

花的名称 实验方法:用镊子把花的各部分,从外向里一层层撕下,整齐排列并贴在相应的名称左边,数一数,填在相应的空格上。 个萼片 个花瓣 个雄蕊 个雌蕊 在班级(1)上课时我没有设计实验报告,就按照书本上的要求,先介绍解剖花的方法、花的结构,然后让学生按照书本要求独立解剖油菜花。在实验过程中,学生非常认真,且相当活跃,但检查结果时,学生雌雄蕊不分,萼片、花瓣不分,桌上、地上掉落的都是花瓣,实验效果之不佳显而易见。 后来,我根据班级(1)出现的情况,设计了如上实验报告,实验的效果就相当出色。在这个实验报告中,我并没有限制学生解剖何种花,但学生可以根据实验要求很清楚地完成解剖的任务。充分体现了以教师为主导、学生为主体的课堂教学思想;而且在实验的过程中,桌上有了这份实验报告,便时刻提醒着学生做实验究竟是何目的,做实验时必须仔细观察什么,做实验的观察步骤是什么。在解剖花的过程中,动作快的同学还可在老师的同意下,多取一两张实验报告单,多解剖几种花,因此既避免了学生在一旁闲着无所事事而打闹的局面,又进一步提高了这些学生的科学素质。至于个别有困难的学生,教师可在巡视的过程中

最优化方法课程实验报告

项目一 一维搜索算法(一) [实验目的] 编写加步探索法、对分法、Newton 法的程序。 [实验准备] 1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。 [实验容及步骤] 编程解决以下问题: 1.用加步探索法确定一维最优化问题 1 2)(min 30 +-=≥t t t t ? 的搜索区间,要求选取2,1,000===αh t . 加步探索法算法的计算步骤: (1)选取初始点 ]) 0[)(0[max 00t t t ,或,∈?∞+∈,计算 )(00t ??=.给出初始步长0 >h , 加步系数1α>,令0=k 。 (2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ??,若k k ??<+1,转(3),否则转(4)。 (3) 加大探索步长.令 k k h h α=+1,同时,令,k t t =,1+=k k t t 1k k =+,转(2)。 (4) 反向探索.若0=k ,转换探索方向,令,k k h h -=1+=k t t ,转(2)。否则,停止迭代,令 11min{}max{}k k a t t b t t ++==,,,。 加步探索法算法的计算框图

程序清单 加步探索法算法程序见附录1 实验结果 运行结果为: 2.用对分法求解 )2()(min +=t t t ?, 已知初始单谷区间]5,3[],[-=b a ,要求按精度3.0=ε,001.0=ε分别计算. 对分法迭代的计算步骤: (1)确定初始搜索区间],[b a ,要求'()0'()0a b ??<>,。 (2) 计算],[b a 的中点)(2 1 b a c +=. (3) 若0)(<'c ?,则c a = ,转(4);若0)(='c ?,则c t =* ,转(5);若0)(>'c ?,则c b = ,转(4). (4) 若ε<-||b a ,则)(2 1* b a t +=,转(5);否则转(2). (5) 打印* t ,结束 对分法的计算框图

最优化方法(黄金分割与进退法)实验报告

一维搜索方法的MATLAB 实现 姓名: 班级:信息与计算科学 学号: 实验时间: 2014/6/21 一、实验目的: 通过上机利用Matlab 数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab 软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。 二、实验背景: 黄金分割法 它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理 黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断 的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 2、算法步骤 用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下: (1)选定初始区间11[,]a b 及精度0ε>,计算试探点: 11110.382*()a b a λ=+- 11110.618*()a b a μ=+-。 (2)若k k b a ε-<,则停止计算。否则当()()k k f f λμ>时转步骤(3)。 当 ()()k k f f λμ≤转步骤(4)。 (3) 11111110.382*()k k k k k k k k k k a b b a b a λλμμ+++++++=??=?? =??=+-?转步骤(5)

(4) 转步骤(5) (5)令1k k =+,转步骤(2)。 算法的MATLAB 实现 function xmin=golden(f,a,b,e) k=0; x1=a+0.382*(b-a); x2=a+0.618*(b-a); while b-a>e f1=subs(f,x1); f2=subs(f,x2); if f1>f2 a=x1; x1=x2; f1=f2; x2=a+0.618*(b-a); else b=x2; x2=x1; f2=f1; x1=a+0.382*(b-a); end k=k+1; end xmin=(a+b)/2; fmin=subs(f,xmin)

最优化计算方法课后习题答案----高等教育出版社。施光燕

习题二包括题目:P36页5(1)(4) 5(4)

习题三 包括题目:P61页1(1)(2); 3; 5; 6; 14;15(1) 1(1)(2)的解如下 3题的解如下

5,6题 14题解如下 14. 设22121212()(6)(233)f x x x x x x x =+++---, 求点在(4,6)T -处的牛顿方向。 解:已知 (1) (4,6)T x =-,由题意得 121212212121212(6)2(233)(3)()2(6)2(233)(3)x x x x x x x f x x x x x x x x +++-----?? ?= ?+++-----?? ∴ (1)1344()56g f x -?? =?= ??? 21212122211212122(3)22(3)(3)2(233)()22(3)(3)2(233)22(3)x x x x x x x f x x x x x x x x +--+--------? ??= ? +--------+--?? ∴ (1)2(1)1656()()564G x f x --?? =?= ?-?? (1)1 1/8007/400()7/4001/200G x --?? = ?--?? ∴ (1)(1)11141/100()574/100d G x g -?? =-= ?-?? 15(1)解如下 15. 用DFP 方法求下列问题的极小点 (1)22 121212min 353x x x x x x ++++ 解:取 (0) (1,1)T x =,0H I =时,DFP 法的第一步与最速下降法相同 2112352()156x x f x x x ++???= ?++??, (0)(1,1)T x =,(0) 10()12f x ???= ??? (1)0.07800.2936x -??= ?-??, (1) 1.3760() 1.1516f x ???= ?-?? 以下作第二次迭代 (1)(0) 1 1.07801.2936x x δ-??=-= ?-??, (1)(0) 18.6240()()13.1516f x f x γ-??=?-?= ?-?? 0110 111011101 T T T T H H H H H γγδδδγγγ=+-

最优化方法课程实验报告

. . 项目一 一维搜索算法(一) [实验目的] 编写加步探索法、对分法、Newton 法的程序。 [实验准备] 1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。 [实验容及步骤] 编程解决以下问题: 1.用加步探索法确定一维最优化问题 1 2)(min 30 +-=≥t t t t ? 的搜索区间,要求选取2,1,000===αh t . 加步探索法算法的计算步骤: (1)选取初始点])0[)(0[max 00t t t ,或,∈?∞+∈,计算)(00 t ??=.给出初始步长0 >h , 加步系数1α>,令0=k 。 (2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ??,若k k ??<+1,转(3),否则转(4)。 (3) 加大探索步长.令k k h h α=+1,同时,令,k t t =,1+=k k t t 1k k =+,转(2)。 (4) 反向探索.若0=k ,转换探索方向,令,k k h h -=1+=k t t ,转(2)。否则,停止迭代, 令 11min{}max{}k k a t t b t t ++==,,,。 加步探索法算法的计算框图

. . 程序清单 加步探索法算法程序见附录1 实验结果 运行结果为: 2.用对分法求解 )2()(min +=t t t ?, 已知初始单谷区间]5,3[],[-=b a ,要求按精度3.0=ε,001.0=ε分别计算. 对分法迭代的计算步骤: (1)确定初始搜索区间],[b a ,要求'()0'()0a b ??<>,。 (2) 计算],[b a 的中点)(2 1 b a c += . (3) 若0)(<'c ?,则c a = ,转(4);若0)(='c ?,则c t =* ,转(5);若0)(>'c ?,则c b = ,转(4). (4) 若ε<-||b a ,则)(2 1* b a t +=,转(5);否则转(2).

《最优化方法》复习题(含答案)

x zD 天津大学《最优化方法》复习题(含答案) 第一章 概述(包括凸规划) 判断与填空题 arg max f(x)二 arg min 以儿 “ max(x): x D 二 R n 』=-min(x): x D 二 R n ; 设f : D 5 R n > R.若x : R n ,对于一切R n 恒有f(x”)^f(x),则称x”为 设f : D 5 R n >R.若x ” ? D ,存在x ”的某邻域N ;(x”),使得对一切 x ?N .(x)恒有f(x”)::: f (x),则称x”为最优化问题 min f (x)的严格局部最 优解? 给定一个最优化问题,那么它的最优值是一个定值 ? V 非空集合D R n 为凸集当且仅当 D 中任意两点连线段上任一点属于 D . V 非空集合D R n 为凸集当且仅当D 中任意有限个点的凸组合仍属于 D . V 任意两个凸集的并集为凸集? 函数f:D R n >R 为凸集D 上的凸函数当且仅当 -f 为D 上的凹函数? V 设f : D R n >R 为凸集D 上的可微凸函数,X :D ?则对-D ,有 f (x) - f(x )乞 f (x )T (X —X )? 若c(x)是凹函数,则 D={x^R n C(x)启0}是凸集。 V f(x)的算法A 产生的迭代序列,假设算法 A 为下降算法, 则对-k ? 5,1, 2,…匚恒有 ________________ f(x k1)乞 f(x k ) ______________ ? 算法迭代时的终止准则(写出三种) : ___________________________________________________ 凸规划的全体极小点组成的集合是凸集。 V 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

最优化方法(试题+答案)

一、 填空题 1 . 若 ()()??? ? ??+???? ?????? ??=212121 312112)(x x x x x x x f ,则 =?)(x f ,=?)(2x f . 2.设f 连续可微且0)(≠?x f ,若向量d 满足 ,则它是f 在x 处的一个下降方向。 3.向量T ) 3,2,1(关于3阶单位方阵的所有线性无关的共轭向量 有 . 4. 设R R f n →:二次可微,则f 在x 处的牛顿方向为 . 5.举出一个具有二次终止性的无约束二次规划算 法: . 6.以下约束优化问题: )(01)(..)(min 212121 ≥-==+-==x x x g x x x h t s x x f 的K-K-T 条件为: . 7.以下约束优化问题: 1 ..)(min 212 2 21=++=x x t s x x x f 的外点罚函数为(取罚参数为μ) . 二、证明题(7分+8分) 1.设1,2,1,:m i R R g n i =→和m m i R R h n i ,1,:1+=→都是线性函数,证明下 面的约束问题: } ,,1{, 0)(},1{, 0)(..)(min 1112 m m E j x h m I i x g t s x x f j i n k k +=∈==∈≥=∑= 是凸规划问题。

2.设R R f →2 :连续可微,n i R a ∈,R h i ∈,m i ,2,1=,考察如下的约束条件问题: } ,1{,0} 2,1{,0..) (min 11m m E i b x a m I i b x a t s x f i T i i T i +=∈=-=∈≥- 设d 是问题 1 ||||,0,0..)(min ≤∈=∈≥?d E i d a I i d a t s d x f T i T i T 的解,求证:d 是f 在x 处的一个可行方向。 三、计算题(每小题12分) 1.取初始点T x )1,1() 0(=.采用精确线性搜索的最速下降法求解下面的无约束优化问题 (迭代2步): 2 2212)(m in x x x f += 2.采用精确搜索的BFGS 算法求解下面的无约束问题: 212 2212 1)(min x x x x x f -+= 3.用有效集法求解下面的二次规划问题: . 0,001..42)(min 21212 12 221≥≥≥+----+=x x x x t s x x x x x f 4.用可行方向算法(Zoutend ij k算法或Frank Wol fe算法)求解下面的问题(初值设为)0,0() 0(=x ,计算到)2(x 即可): . 0,033..22 1)(min 212112 22121≥≥≤+-+-= x x x x t s x x x x x x f

最优化实验报告

最优化方法 课程设计报告 班级:________________ 姓名: ______ 学号: __________ 成绩: 2017年 5月 21 日 目录 一、摘要 (1)

二、单纯形算法 (2) 1.1 单纯形算法的基本思路 (2) 1.2 算法流程图 (3) 1.3 用matlab编写源程序 (3) 二、黄金分割法 (7) 2.1 黄金分割法的基本思路 (7) 2.2 算法流程图 (8) 2.3 用matlab编写源程序 (9) 2.4 黄金分割法应用举例 (10) 三、最速下降法 (10) 3.1 最速下降法的基本思路 (10) 3.2 算法流程图 (12) 3.3 用matlab编写源程序 (12) 3.4 最速下降法应用举例 (13) 四、惩罚函数法 (16) 4.1 惩罚函数法的基本思路 (16) 4.2 算法流程图 (17) 4.3 用matlab编写源程序 (17) 4.4 惩罚函数法应用举例 (19) 五、自我总结 (19) 六、参考文献 (19)

一、摘要 运筹学是一门以人机系统的组织、管理为对象,应用数学和计算机等工具来研究各类有限资源的合理规划使用并提供优化决策方案的科学。通过对数据的调查、收集和统计分析,以及具体模型的建立。收集和统计上述拟定之模型所需要的各种基础数据,并最终将数据整理形成分析和解决问题的具体模型。 最优化理论和方法日益受到重视,已经渗透到生产、管理、商业、军事、决策等各个领域,而最优化模型与方法广泛应用于工业、农业、交通运输、商业、国防、建筑、通信、政府机关等各个部门及各个领域。伴随着计算机技术的高速发展,最优化理论与方法的迅速进步为解决实际最优化问题的软件也在飞速发展。其中,MATLAB软件已经成为最优化领域应用最广的软件之一。有了MATLAB这个强大的计算平台,既可以利用MATLAB优化工具箱(OptimizationToolbox)中的函数,又可以通过算法变成实现相应的最优化计算。 关键词:优化、线性规划、黄金分割法、最速下降法、惩罚函数 法

遗传算法实验报告

遗传算法实验报告 专业:自动化姓名:张俊峰学号:13351067 摘要:遗传算法,是基于达尔文进化理论发展起来的一种应用广泛、高效的随机搜索与优化方法。本实验利用遗传算法来实现求函数最大值的优化问题,其中的步骤包括初始化群体、个体评价、选择运算、交叉运算、变异运算、终止条件判断。该算法具有覆盖面大、减少进入局部最优解的风险、自主性等特点。此外,遗传算法不是采用确定性原则而是采用概率的变迁规则来指导搜索方向,具有动态自适应的优点。 关键词:串集最优化评估迭代变异 一:实验目的 熟悉和掌握遗传算法的运行机制和求解的基本方法。 遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。其求解过程是个最优化的过程。一般遗传算法的主要步骤如下: (1)随机产生一个确定长度的特征字符串组成的初始种群。。 (2)对该字符春种群迭代地执行下面的步骤a和步骤b,直到满足停止准则为止: a计算种群中每个个体字符串的适应值; b应用复制、交叉和变异等遗传算子产生下一代种群。 (3)把在后代中表现的最好的个体字符串指定为遗传算法的执行结果,即为问题的一 个解。 二:实验要求 已知函数y=f(x 1,x 2 ,x 3 ,x 4 )=1/(x 1 2+x 2 2+x 3 2+x 4 2+1),其中-5≤x 1 ,x 2 ,x 3 ,x 4 ≤5, 用遗传算法求y的最大值。三:实验环境

操作系统:Microsoft Windows 7 软件:Microsoft Visual studio 2010 四:实验原理与步骤 1、遗传算法的思想 生物的进化是以集团为主体的。与此相对应,遗传算法的运算对象是由M个个体所组成的集合,称为群体。与生物一代一代的自然进化过程相类似,遗传算法的运算过程也是一个反复迭代过程,第t代群体极为P(t),进过一代遗传和进化后,得到第t+1代群体,他们也是由多个个体组成的集合,记做P(t+1)。这个群体不断地经过遗传和进化操作,并且每次都按照有优胜劣汰的规则将适应度较高的个体更多地遗传到下一代,这样最终在群体中将会得到一个优良的个体X,它所对应的表现性X将达到或接近于问题的最优解。 2、算法实现步骤 ①、产生初始种群:产生初始种群的方法通常有两种:一种是完全随机的方法产生的,适合于对问题的解无任何先验知识的情况;另一种是将某些先验知识转变为必须满足的一组要求,然后在满足这些要求的解中再随机地选择样本,t=0,随机产生n个个体形成一个初始群体P(t),该群体代表优化问题的一些可能解的集合; ②适应度评价函数:按编码规则,将群体P(t)中的每一个个体的基因码所对应的自变量取值代入目标函数,算出其函数值f,i=1,2,…,n,f越大,表示该个体有较高的适应度,更适合于f所定义的生存环境,适应度f为群体进化提供了依据; ③选择:按一定概率从群体P(t)中选出m个个体,作为双亲用于繁殖后代,产生新的个体加入下一个群体P(t+1)中。此处选用轮盘算法,也就是比例选择算法,个体被选择的概率与其适应度成正比。 ④交叉(重组):对于选中的用于繁殖的每一个个体,选择一种交叉方法,产生新的个体;此处采取生成随机数决定交叉的个体与交叉的位置。 ⑤变异:以一定的概率Pm从群体P(t+1)中随机选择若干个个体,对于选中的个体随机选择某个位置,进行变异; ⑥对产生新一代的群体返回步骤③再进行评价,交叉、变异如此循环往复,使群体中个体的适应度和平均适应度不断提高,直至最优个体的适应度达到某一限值或最优个体的适应度和群体的平均适应度不再提高,则迭代过程收敛,算法结束。 五:实验结果 实验结果的显示取决于判断算法终止的条件,这里可以有两种选择:1、在程序中设定迭代的次数;2在程序中设定适应值。本实验是在程序中实验者输入需要迭代的次数来判断程序终结的。

最优化算法实验报告(附Matlab程序)

最优化方法(Matlab)实验报告 ——Fibonacci 法 一、实验目的: 用MATLAB 程序实现一维搜索中用Fibonacc 法求解一元单峰函数的极小值问题。二、实验原理: (一)、构造Fibonacci 数列:设数列{}k F ,满足条件: 1、011F F == 2、11 k k k F F F +-=+则称数列{}k F 为Fibonacci 数列。(二)、迭代过程: 首先由下面的迭代公式确定出迭代点: 1 1 1 (),1,...,1(),1,...,1n k k k k k n k n k k k k k n k F a b a k n F F u a b a k n F λ---+--+=+ -=-=+ -=-易验证,用上述迭代公式进行迭代时,第k 次迭代的区间长度缩短比率恰好为 1 n k n k F F --+。故可设迭代次数为n ,因此有11121211221111223231 ()()......()()n n n n n n n n n F F F F F F b a b a b a b a b a F F F F F F F ------= -=?-==?-=-若设精度为L ,则有第n 次迭代得区间长度111 ()n n n b a L b a L F -≤-≤,即 就是 111 ()n b a L F -≤,由此便可确定出迭代次数n 。

假设第k 次迭代时已确定出区间[,]k k a b 以及试探点,[,]k k k k u a b λ∈并且k k u λ<。计算试探点处的函数值,有以下两种可能:(1)若()()k k f f u λ>,则令 111111111,,()() () k k k k k k k k n k k k k k n k a b b f f F a b a F λλμλμμ++++--++++-=====+-计算1()k f μ+的值。(2)()()k k f f u λ≤,则令 111121111,,()() () k k k k k k k k n k k k k k n k a a b f f F a b a F μμλμλλ++++--++++-=====+-计算1()k f λ+的值。 又因为第一次迭代确定出了两个迭代点,以后每迭代一次,新增加一个迭代点,这样在迭代n-1后便计算完了n 个迭代点。因此第n 次迭代中,选用第n-1次的迭代点以及辨别常数δ构造n λ和n μ: 1 1n n n n λλμλδ --==+再用同样的方法进行判断:(1)、若()n f λ>()n f μ则令 1 n n n n a b b λ-==(2)、若()n f λ<=()n f μ则令 1n n n n a a b μ-==这样便可确定出最优解的存在区间[,]n n a b 。

最优化方法(试题+答案)

一、 填空题 1.若()()??? ? ??+???? ?????? ??=212121 312112)(x x x x x x x f , 则=?)(x f ,=?)(2x f . 2.设f 连续可微且0)(≠?x f ,若向量d 满足 ,则它是f 在x 处的一个下降方向。 3.向量T )3,2,1(关于3阶单位方阵的所有线性无关的共轭向量有 . 4. 设R R f n →:二次可微,则f 在x 处的牛顿方向为 . 5.举出一个具有二次终止性的无约束二次规划算法: . 6.以下约束优化问题: )(01)(..)(min 212121 ≥-==+-==x x x g x x x h t s x x f 的K-K-T 条件为: . 7.以下约束优化问题: 1 ..)(min 212 2 21=++=x x t s x x x f 的外点罚函数为(取罚参数为μ) . 二、证明题(7分+8分) 1.设1,2,1,:m i R R g n i =→和m m i R R h n i ,1,:1+=→都是线性函数,证明下 面的约束问题: } ,,1{, 0)(},1{, 0)(..)(min 1112 m m E j x h m I i x g t s x x f j i n k k +=∈==∈≥=∑= 是凸规划问题。

2.设R R f →2 :连续可微,n i R a ∈,R h i ∈,m i ,2,1=,考察如下的约束条件问题: } ,1{,0} 2,1{,0..) (min 11m m E i b x a m I i b x a t s x f i T i i T i +=∈=-=∈≥- 设d 是问题 1 ||||,0,0..)(min ≤∈=∈≥?d E i d a I i d a t s d x f T i T i T 的解,求证:d 是f 在x 处的一个可行方向。 三、计算题(每小题12分) 1.取初始点T x )1,1() 0(=.采用精确线性搜索的最速下降法求解下面的无约束优化问题 (迭代2步): 2 2212)(m in x x x f += 2.采用精确搜索的BFGS 算法求解下面的无约束问题: 212 2212 1)(min x x x x x f -+= 3.用有效集法求解下面的二次规划问题: . 0,001..42)(min 21212 12 221≥≥≥+----+=x x x x t s x x x x x f 4.用可行方向算法(Zoutendijk 算法或Frank Wolfe 算法)求解下面的问题(初值设为)0,0() 0(=x ,计算到)2(x 即可): . 0,033..22 1)(min 21211222121≥≥≤+-+-= x x x x t s x x x x x x f

学生科学实验效果最优化的基石实验报告设计

( 实验报告) 姓名:____________________ 单位:____________________ 日期:____________________ 编号:YB-BH-054067 学生科学实验效果最优化的基The design of cornerstone experiment report for optimizing the

学生科学实验效果最优化的基石实 验报告设计 自然科学是以实验为基础的学科。实验是人们研究和认识自然的重要方法。因此,在自然科学的教学中,实验也是重要的教学方法之一。通过实验,不仅可以提供学生对科学现象的感性认识,更可以让学生获得初步的实验技能和观察分析问题的能力。 小学科学实验教学的设计是运用系统论的思想和方法,以学习理论、教学理论为基础,计划和安排实验教学的各个环节、要素,以实现教学效果最优化为目的的活动。通过多年来的实验教学实践与思考,我们可以让学生像科学家那样,亲历科学探究的过程,这有利于充分发挥学生的主体作用,让学生积极主动参与到观察、实验等学习活动中去,亲自感知实验所产生的各种现象和变化,提高自行获取知识的能力,而其中比较重要的一个环节就是学生实验报告的设计与记录。在学生实验的过程中,一份好的实验报告设计,就像是一盏明灯,能给学生指引实验的目标、方向,能提供给学生形成结论的分析数据,进而培养学生科学实验的基本素养,使学生的科学实验效果达到最优化。 一、观察实验报告的填写,有利于学生在实验中观察,进一步培养学生实验的责任心和有序观察能力。

教科版四下《油菜花开了》解剖花的实验中,我设计了如下实验报告,在教学中取得了很好的效果。 《解剖花》实验人 花的名称 实验方法:用镊子把花的各部分,从外向里一层层撕下,整齐排列并贴在相应的名称左边,数一数,填在相应的空格上。 个萼片 个花瓣 个雄蕊 个雌蕊 在班级(1)上课时我没有设计实验报告,就按照书本上的要求,先介绍解剖花的方法、花的结构,然后让学生按照书本要求独立解剖油菜花。在实验过程中,学生非常认真,且相当活跃,但检查结果时,学生雌雄蕊不分,萼片、花瓣不分,桌上、地上掉落的都是花瓣,实验效果之不佳显而易见。 后来,我根据班级(1)出现的情况,设计了如上实验报告,实验的效果就相当出色。在这个实验报告中,我并没有限制学生解剖何种花,但学生可以根据实验要求很清楚地完成解剖的任务。充分体现了以教师为主导、学生为主体的课堂教学思想;而且在实验的过程中,桌上有了这份实验报告,便时刻提醒着学生做实验究竟是何目的,做实验时必须仔细观察什么,做实验的观察步骤是什么。在解剖花的过程中,动作快的同学还可在老师的同意下,多取一两张实验报告单,多解剖几种花,因此既避免了学生在一旁闲着无所事事而打闹的局面,又进一步提高了这些学生的科学素质。至于个别有困难的学生,教师可在巡视的过程中随

《最优化方法》复习题(含答案)

附录5 《最优化方法》复习题 1、设n n A R ?∈是对称矩阵,,n b R c R ∈∈,求1()2 T T f x x Ax b x c =++在任意点x 处的梯度和Hesse 矩阵. 解 2(),()f x Ax b f x A ?=+?=. 2、设()()t f x td ?=+,其中:n f R R →二阶可导,,,n n x R d R t R ∈∈∈,试求()t ?''. 解 2()(),()()T T t f x td d t d f x td d ??'''=?+=?+. 3、设方向n d R ∈是函数()f x 在点x 处的下降方向,令 ()()()()() T T T T dd f x f x H I d f x f x f x ??=--???, 其中I 为单位矩阵,证明方向()p H f x =-?也是函数()f x 在点x 处的下降方向. 证明 由于方向d 是函数()f x 在点x 处的下降方向,因此()0T f x d ?<,从而 ()()()T T f x p f x H f x ?=-?? ()()()()()()()() T T T T T dd f x f x f x I f x d f x f x f x ??=-?--???? ()()()0T T f x f x f x d =-??+?<, 所以,方向p 是函数()f x 在点x 处的下降方向. 4、n S R ?是凸集的充分必要条件是12122,,,,,,,,m m m x x x S x x x ?≥?∈L L 的一切凸组合都属于S . 证明 充分性显然.下证必要性.设S 是凸集,对m 用归纳法证明.当2m =时,由凸集的定义知结论成立,下面考虑1m k =+时的情形.令1 1k i i i x x λ+==∑, 其中,0,1,2,,1i i x S i k λ∈≥=+L ,且1 1 1k i i λ+==∑.不妨设11k λ+≠(不然1k x x S +=∈, 结论成立),记11 1k i i i k y x λλ=+=-∑ ,有111(1)k k k x y x λλ+++=-+,

计算方法实验报告习题1

计算方法实验报告 实验名称: 实验1 从函数表出发进行插值 1 引言 某个实际问题中,函数f (x)在区间[a,b]上存在且连续,但难以找到其表达式,只能通过实验和观测得到有限点上的函数表。有些情况虽然可以写出表达式,但结构复杂,使用不方便。所以希望构造简单函数P (x)作为f (x)的近似值。插值法是解决此类问题的一种方法。 设函数y=在插值区间[a,b]上连续,且在n+1个不同的插值节点a≤x 0,x 1,…,x n ≤b 上分别取值y 0,y 1,…,y n 。目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P (x),满足插值条件P (x i )=y i (i=0,1,…,n),而在其他点x≠x i 上,作为f (x)近似值。求插值函数P (x)的方法称为插值法[1]。 2 实验目的和要求 运用Matlab 编写m 文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的节点。分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f ,f ,f 的近似值。 3 算法原理与流程图 (1)原理 1.线性插值 当给定了n+1个点x 0

相关主题