无约束优化方法与MATLAB实现Word文档格式.docx

上传人:b****5 文档编号:20634887 上传时间:2023-01-24 格式:DOCX 页数:16 大小:21.95KB
下载 相关 举报
无约束优化方法与MATLAB实现Word文档格式.docx_第1页
第1页 / 共16页
无约束优化方法与MATLAB实现Word文档格式.docx_第2页
第2页 / 共16页
无约束优化方法与MATLAB实现Word文档格式.docx_第3页
第3页 / 共16页
无约束优化方法与MATLAB实现Word文档格式.docx_第4页
第4页 / 共16页
无约束优化方法与MATLAB实现Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

无约束优化方法与MATLAB实现Word文档格式.docx

《无约束优化方法与MATLAB实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《无约束优化方法与MATLAB实现Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

无约束优化方法与MATLAB实现Word文档格式.docx

yf

bcon=1;

whilebcon

tmpy(i)=2*tmpy(i);

tmpf_i=subs(f,var,y+tmpy);

iftmpf_i<

yf

y_res=y+tmpy;

else

bcon=0;

end

tmpf=subs(f,var,y-tmpy);

tmpf_i=subs(f,var,y-tmpy);

y_res=y-tmpy;

y_res=y;

delta=delta/u;

end

y=y_res;

ifnorm(y-yk_1)<

=eps2

ifmax(abs(delta))<

=eps1

x=y;

bmainCon=0;

delta=delta/u;

minf=subs(f,var,x);

M函数文件的运行结果如下:

x=-1.7499

-3.2499

minf=-8.3750

 

=======================================================

例4-2MATLAB实现,用M函数文件形式求解:

symsts;

f=t^2+s^2-t*s-10*t-4*s+60;

[x,mf]=minFD(f,[00],[ts])

梯度法函数文件minFD如下:

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

%目标函数:

%初始点:

%自变量向量:

%精度:

eps;

%目标函数取最小值时的自变量值:

x;

%目标函数的最小值:

minf

formatlong;

ifnargin==3

eps=1.0e-6;

symsl;

tol=1;

gradf=-jacobian(f,var);

whiletol>

eps

v=subs(gradf,var,x0);

tol=norm(v);

y=x0+l*v;

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

xm=minHJ(yf,a,b);

%用黄金分割法进行一维搜索

x1=x0+xm*v;

x0=x1;

x=x1;

minf=subs(subs(f,x

(1)),x

(2));

formatshort;

x=8.00006.0000

mf=8.0000

=======================================================================

例4-3MATLAB实现,用M函数文件形式求解:

symsts;

f=t^2-4*s^2;

[x,mf]=minNT(f,[11],[ts])

牛顿法函数文件minNT如下

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

%自变量向量var;

%精度:

%目标函数取最小时的自变量值:

%目标函数最小值:

minf;

x0=transpose(x0);

gradf=jacobian(f,var);

%梯度方向

jacf=jacobian(gradf,var);

%雅克比矩阵

pv=subs(jacf,var,x0);

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

%搜索方向

p=double(p);

x1=x0+p;

minf=subs(f,var,x);

x=0

0

mf=0

============================================================================

例4-4MATLAB实现,用M函数文件形式求解:

symstsz;

f=(t-s+z)^2+(-t+s+z)^2+(t+s+z)^2

[x,mf]=minMNT(f,[0.510.5],[tsz])

阻尼牛顿法函数文件minNT如下

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

y=x0+l*p;

%进退法求单峰区间

%黄金分割法进行一维搜素

x1=x0+xm*p;

x=1.0e-015*

-0.3468

-0.6936

mf=2.4053e-030

===================================================================

例4-5MATLAB实现,用M函数文件形式求解:

f=t^2+4*s^2;

[x,mf]=minGETD(f,[11],[ts])

共轭梯度法函数文件minGETD如下

x0=transpose(x0);

v0=subs(gradf,var,x0);

p=-transpose(v0);

k=0;

while1

iftol<

=eps

x=x0;

break;

%进退法确定单峰区间

xm=minPWX(yf,a,b);

%二次插值一维搜素

vk=subs(gradf,var,x1);

tol=norm(vk);

x=x1;

ifk+1==n

continue;

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

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

k=k+1;

0.3331

0.0971

mf=1.4868e-031

例4-6MATLAB实现,用M函数文件形式求解:

f=4*(t-5)^2+(s-6)^2;

X=[81011;

91111];

[x,mf]=minSimpSearch(f,X,1.2,0.5,2.0,0.3,[ts])

单纯形法函数文件minGETD如下

function[x,minf]=minSimpSearch(f,X,alpha,sita,gama,beta,var,eps)

%:

%反射系数:

alpha;

%紧缩系数:

sita;

%扩展系数:

gama;

%收缩系数:

beta;

%目标函数最小值:

N=size(X);

n=N

(2);

FX=zeros(1,n);

FX(i)=subs(f,var,X(:

i));

[XS,IX]=sort(FX);

%将单纯形的顶点按目标函数值的大小重新编号

Xsorted=X(:

IX);

%排序后的编号

px=sum(Xsorted(:

1:

(n-1)),2)/(n-1);

%单纯形的中心

Fpx=subs(f,var,px);

SumF=0;

SumF=SumF+(FX(IX(i))-Fpx)^2;

SumF=sqrt(SumF/n);

ifSumF<

=eps

x=Xsorted(:

1);

x2=px+alpha*(px-Xsorted(:

n));

%将中心点向单纯形外反射

fx2=subs(f,var,x2);

iffx2<

XS

(1)

x3=px+gama*(x2-px);

%中心点的扩展

fx3=subs(f,var,x3);

iffx3<

Xsorted(:

n)=x3;

X=Xsorted;

n)=x2;

XS(n-1)

XS(n)

x4=px+beta*(Xsorted(:

n)-px);

%中心点压缩

fx4=subs(f,var,x4);

FNnew=subs(f,var,Xsorted(:

iffx4<

FNnew

n)=x4;

x0=Xsorted(:

j)=x0+sita*(Xsorted(:

j)-x0);

x=5.0002

5.9999

mf=1.8370e-007

=================================================================

例4-7MATLAB实现,用M函数文件形式求解:

f=t^2+2*s^2-4*t-2*t*s;

p=[-10;

01];

[x,mf]=minPowell(f,[11],p,[ts])

Powell法函数文件minPowell如下

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

f;

%初始搜索点:

x0;

%线性无关的初始向量组:

p;

var;

eps;

%目标函数取最小值时的自变量:

x;

%目标函数的最小值:

minf:

ifnargin==4

n=length(var)+1;

y=zeros(size(P));

y(:

1)=x0;

n-1%在每个搜索方向上进行一维搜索

yv=y(:

i)+l*P(:

i);

fy=subs(f,var,yv);

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

tl=minPWX(fy,a,b);

i+1)=y(:

i)+tl*P(:

P(:

n)=y(:

n)-y(:

ifnorm(P(:

n))<

=eps%精度判断

x=y(:

n);

forj=1:

FY(j)=subs(f,var,y(:

j));

maxDF=-inf;

m=0;

n-1%求出算法中对应的m

df=FY(j)-FY(j+1);

ifdf>

maxDF

maxDF=df;

m=j+1;

end

tmpF=subs(f,var,2*y(:

n)-y(:

1));

fl=FY

(1)-2*FY(n)+tmpF;

iffl<

2*maxDF

n)+l*P(:

x0=y(:

n)+tl*P(:

m:

(n-1))=P(:

(m+1):

n);

%重新设置搜索方向

x=4.0000

2.0000

mf=-8.0000

======================================================================

例4-8MATLAB实现,用M函数文件形式求解:

symsx1x2

f=x1^2+4*x2^2;

[x,mf]=minDFP(f,[11],[x1x2])

DFP法函数文件minDFP如下

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

f:

minf;

H=eye(n,n);

p=-H*transpose(v0);

%用抛物线法进行一维搜索

ifk+1==n%重新迭代

dx=x1-x0;

dgf=vk-v;

dgf=transpose(dgf);

dxT=transpose(dx);

dgfT=transpose(dgf);

mdx=dx*dxT;

mdgf=dgf*dgfT;

fz=H*(dgf*(dgfT*H));

H=H+mdx/(dxT*dgf)-inv(dgfT*(H*dgf))*fz;

%校正公式

p=-H*transpose(vk);

mf=2.4652e-032

==============================

例4-10用fminsearch函数求解函数

的极值。

解:

在MATLAB命令窗口输入命令

>

fx=@(x)-1/((x

(1)-2)^2+3)-1/((x

(2)+1)^2-5);

[x,f]=fminsearch(fx,[0,0])

所得结果为:

x=2.0000-1.0000

f=-0.1333

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

当前位置:首页 > 法律文书 > 调解书

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

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