最优化方法实验报告(2)Word格式.doc

上传人:聆听****声音 文档编号:3452773 上传时间:2023-05-01 格式:DOC 页数:23 大小:394KB
下载 相关 举报
最优化方法实验报告(2)Word格式.doc_第1页
第1页 / 共23页
最优化方法实验报告(2)Word格式.doc_第2页
第2页 / 共23页
最优化方法实验报告(2)Word格式.doc_第3页
第3页 / 共23页
最优化方法实验报告(2)Word格式.doc_第4页
第4页 / 共23页
最优化方法实验报告(2)Word格式.doc_第5页
第5页 / 共23页
最优化方法实验报告(2)Word格式.doc_第6页
第6页 / 共23页
最优化方法实验报告(2)Word格式.doc_第7页
第7页 / 共23页
最优化方法实验报告(2)Word格式.doc_第8页
第8页 / 共23页
最优化方法实验报告(2)Word格式.doc_第9页
第9页 / 共23页
最优化方法实验报告(2)Word格式.doc_第10页
第10页 / 共23页
最优化方法实验报告(2)Word格式.doc_第11页
第11页 / 共23页
最优化方法实验报告(2)Word格式.doc_第12页
第12页 / 共23页
最优化方法实验报告(2)Word格式.doc_第13页
第13页 / 共23页
最优化方法实验报告(2)Word格式.doc_第14页
第14页 / 共23页
最优化方法实验报告(2)Word格式.doc_第15页
第15页 / 共23页
最优化方法实验报告(2)Word格式.doc_第16页
第16页 / 共23页
最优化方法实验报告(2)Word格式.doc_第17页
第17页 / 共23页
最优化方法实验报告(2)Word格式.doc_第18页
第18页 / 共23页
最优化方法实验报告(2)Word格式.doc_第19页
第19页 / 共23页
最优化方法实验报告(2)Word格式.doc_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最优化方法实验报告(2)Word格式.doc

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

最优化方法实验报告(2)Word格式.doc

d)令,转b)。

(二)牛顿法

牛顿法是基于多元函数的泰勒展开而来的,它将作为搜索方向,因此它的迭代公式可直接写出来:

用牛顿法求无约束问题的算法步骤如下:

a)给定初始点,精度,并令k=0;

b)若,停止,极小点为,否则转c);

c)计算;

(三)共轭梯度法

共轭梯度法是利用目标函数梯度逐步产生共轭方向作为线搜索方向的方法,每次搜索方向都是在目标函数梯度的共轭方向,搜索步长通过一维极值算法确定。

a)给定初始点,精度;

c);

d)用一维搜索方法求,使得

令,转e);

e)若,停止,极小值为,否则转f);

f)若转c),否则转g);

g)令,

三、实验内容:

1.最速下降法的MATLAB实现

2.牛顿法的MATLAB实现

3.共轭梯度法的MATLAB实现

四、实验过程:

1.最速下降法的函数:

function[x,minf]=minFD(f,x0,var,eps)

%最速下降法主函数

ifnargin==3

eps=1.0e-6;

end

symsl;

tol=1;

gradf=-jacobian(f,var);

whiletol>

eps

v=Funval(gradf,var,x0);

tol=norm(v);

y=x0+l*v;

yf=Funval(f,var,y);

[a,b]=minJT(yf,0,0.1);

%进退法求区间

xm=minHJ(yf,a,b);

%黄金分割法

x1=x0+xm*v;

x0=x1;

x=x1;

minf=Funval(f,var,x);

%进退法函数

function[minx,maxx]=minJT(f,x0,h0,eps)

x1=x0;

k=0;

h=h0;

while1

x4=x1+h;

k=k+1;

f4=subs(f,findsym(f),x4);

f1=subs(f,findsym(f),x1);

iff4<

f1

x2=x1;

x1=x4;

f2=f1;

f1=f4;

h=2*h;

else

ifk==1

h=-h;

x2=x4;

f2=f4;

else

x3=x2;

x2=x1;

x1=x4;

break;

end

end

minx=min(x1,x3);

maxx=x1+x3-minx;

%黄金分割法函数

function[x,minf]=minHJ(f,a,b,eps)

l=a+0.382*(b-a);

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

k=1;

tol=b-a;

eps&

&

k<

100000

fl=subs(f,findsym(f),l);

fu=subs(f,findsym(f),u);

iffl>

fu

a=l;

l=u;

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

b=u;

u=l;

l=a+0.382*(b-a);

tol=abs(b-a);

ifk==100000

disp('

找不到最小值!

'

);

x=NaN;

minf=NaN;

return;

x=(a+b)/2;

minf=subs(f,findsym(f),x);

2.牛顿法的函数:

function[x,minf]=minNT(f,x0,var,eps)

x0=transpose(x0);

gradf=jacobian(f,var);

jacf=jacobian(gradf,var);

v=Funval(gradf,var,x0);

pv=Funval(jacf,var,x0);

p=-inv(pv)*transpose(v);

p=double(p);

x1=x0+p;

3.共轭梯度法的函数:

function[x,minf]=minGETD(f,x0,var,eps)

n=length(var);

v0=Funval(gradf,var,x0);

p=-transpose(v0);

iftol<

=eps

x=x0;

break;

end

y=x0+l*p;

x1=x0+xm*p;

vk=Funval(gradf,var,x1);

tol=norm(vk);

x=x1;

ifk+1==n

x0=x1;

continue;

lamda=dot(vk,vk)/dot(v,v);

p=-transpose(vk)+lamda*p;

k=k+1;

五、实验结果(总结/方案)

1、最速下降法:

用最速下降法求函数的极小值,初始点取

在commandwindow中输入:

>

symsts;

f=(t-4)^2+(s+2)^2+1;

[t,mf]=minFD(f,[1-3],[ts])

输出结果:

x=4.0000-2.0000

mf=1

2、牛顿法:

用牛顿法求函数的极小值,其中初始点取为。

[t,mf]=minNT(f,[00],[ts])

x=4

-2

mf=1

3、共轭梯度法:

用共轭梯度法求函数的极小值,其中初始值取。

f=(t-3)^2+s^2;

[t,mf]=minGETD(f,[-2,6],[ts])

x=3.0000

0.0000

mf=2.00116e-037

实验四

约束最优化方法的MATLAB实现

2013年05月10日星期三实验成绩:

一、实验目的:

通过本次实验使学生较为熟练使用MATLAB软件,并能利用该软件进行约束最优化方法的计算。

二、实验内容:

1.罚函数法的MATLAB实现

2.可行方向法的MATLAB实现

三、实验背景:

(一)罚函数

外罚点函数是通过一系列罚因子,求罚函数的极小点来逼近原约束问题的最优点。

之所以称为外点罚函数法,是因为他是从可行域外部向约束边界逐步靠拢的。

用外点罚函数法求解线性约束优化问题的算法过程如下:

1)给定初始点,罚参数列及精度,置k=1;

2)构造罚函数;

3)用某种无约束非线性规划,以为初始点求解;

4)设最优解为,若满足某种终止条件,则停止迭代输出,否则令,转2)。

罚函数列的选法:

通常先选定一个初始常数和一个比例系数,则其余的可表示为。

终止条件可采用,其中。

(二)可行方向法

可行方向法是求解如下约束最优化问题的算法,其中约束条件为线性约束,A为约束系数矩阵,b为约束向量。

其基本思路是从可行点出发,沿着目标函数值减小的方向搜索求出新的可行点,如此迭代下去。

可行点是满足约束条件的点。

2、算法步骤

可行方向法的算法过程如下:

1)给定初始可行点,使其满足约束条件,置;

2)在处,将A,b分解成和,使,;

3)如果是空的,则令p=1,否则令;

4)计算,若则转6),否则转5);

5)若是空的,则停止计算,输出,否则计算;

如果,则停止计算,输出,若包含负的分量,则选择一个负分量,去掉对应的行,转3);

6)求一维约束问题,其中的计算方法如下:

,求出最优解,设为,令,置,转2)。

1、罚函数法的函数

function[x,minf]=minPF(f,x0,A,b,c1,p,var,eps)

formatlong;

ifnargin==7

eps=1.0e-4;

FE=0;

fori=1:

length(b)

FE=FE+(var*transpose(A(1,:

))-b(i))^2;

x1=transpose(x0);

x2=inf;

M=c1*p;

FF=M*FE;

SumF=f+FF;

[x2,minf]=minNT(SumF,transpose(x1),var);

%牛顿法函数

ifnorm(x2-x1)<

x=x2;

c1=M;

x1=x2;

formatshort;

2、可行方向法的函数

function[x,minf]=minRosen(f,A,b,x0,var,eps)

ifnargin==5

sz=size(A);

m=sz

(1);

gf=jacobian(f,var);

bConti=1;

whilebConti

k=0;

s=0;

A1=A;

A2=A;

b1=b;

b2=b;

fori=1:

m

dfun=A(i,:

)*x0-b(i);

ifabs(dfun)<

0.000000001

k=k+1;

A1(k,:

)=A(i,:

b1(k,1)=b(i);

s=s+1;

A2(s,:

b2(s,1)=b(i);

ifk>

0

A1=A1(1:

k,:

b1=b1(1:

ifs>

A2=A2(1:

s,:

b2=b2(1:

while1

P=eye(n,n);

ifk>

tM=transpose(A1);

P=P-tM*inv(A1*tM)*A1;

gv=Funval(gf,var,x0);

gv=transpose(gv);

d=-P*gv;

ifd==0

ifk==0

x=x0;

bConti=0;

break;

else

w=inv(A1*tM)*A1*gv;

ifw>

=0

x=x0;

bConti=0;

break;

else

[u,index]=min(w);

sA1=size(A1);

ifsA1

(1)==1

k=0;

else

k=sA1

(2);

A1=[A1(1:

(index-1),:

A1((index+1):

sA1

(2),:

)];

end

end

end

yl=x0+l*d;

tmpf=Funval(f,var,yl);

bb=b2-A2*x0;

dd=A2*d;

ifdd>

=0

[tmpI,lm]=minJT(tmpf,0,0.1);

lm=inf;

fori=1:

length(dd)

ifdd(i)<

ifbb(i)/dd(i)<

lm

lm=bb(i)/dd(i);

[xm,minf]=minHJ(tmpf,0,lm,1.0e-14);

tol=norm(xm*d);

iftol<

eps

x0=x0+xm*d;

end

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

当前位置:首页 > 临时分类 > 批量上传

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

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