复合形法大作业Word文档下载推荐.docx

上传人:b****6 文档编号:8538025 上传时间:2023-05-11 格式:DOCX 页数:14 大小:171.66KB
下载 相关 举报
复合形法大作业Word文档下载推荐.docx_第1页
第1页 / 共14页
复合形法大作业Word文档下载推荐.docx_第2页
第2页 / 共14页
复合形法大作业Word文档下载推荐.docx_第3页
第3页 / 共14页
复合形法大作业Word文档下载推荐.docx_第4页
第4页 / 共14页
复合形法大作业Word文档下载推荐.docx_第5页
第5页 / 共14页
复合形法大作业Word文档下载推荐.docx_第6页
第6页 / 共14页
复合形法大作业Word文档下载推荐.docx_第7页
第7页 / 共14页
复合形法大作业Word文档下载推荐.docx_第8页
第8页 / 共14页
复合形法大作业Word文档下载推荐.docx_第9页
第9页 / 共14页
复合形法大作业Word文档下载推荐.docx_第10页
第10页 / 共14页
复合形法大作业Word文档下载推荐.docx_第11页
第11页 / 共14页
复合形法大作业Word文档下载推荐.docx_第12页
第12页 / 共14页
复合形法大作业Word文档下载推荐.docx_第13页
第13页 / 共14页
复合形法大作业Word文档下载推荐.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

复合形法大作业Word文档下载推荐.docx

《复合形法大作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《复合形法大作业Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。

复合形法大作业Word文档下载推荐.docx

2、本文思路:

本文在理解复合形法的基础上,提出将定义域区域进行等分,分成m×

m个小块。

然后对每小块区域选取一个初始点进行寻优,最后比较这些初值点找到的最优值,并把最好的一个最优值作为最终的输出最优值。

三、基本程序流程图

图一、程序流程图

四、求解寻优过程

1、函数三维图形:

图二、目标函数三维图

2、理论结果:

由函数的三维图形不难看出,该函数的理论最大值为1。

即当X=0,Y=0,时,Z=f(x)取最大值为1。

故理论解为X=[0,0]T,f(X)=1。

3、寻优过程:

本文在利用复合形法求解过程中,在平面区域内将区域等分成为64小块,并在每个小块中选取一个初始值作为复合形法的初始值进行寻优计算,并将最终的最优值作为寻优结果。

在区域内初始点散点图如下,从中可以看到在每个网状线格子中都有一个初值。

图三、64个初始点在定义域散点图

同时,本文选取部分初始值寻优结果列入下表:

初始点序号

X0

(1)

X0

(2)

迭代次数

过程最优值

1

-3.464932895

27

0.782967657

2

-2.03612987

24

0.990278724

3

-1.884374121

21

0.990277778

4

-0.948551707

37

0.990284089

5

0.304348946

46

0.984610841

……

22

1.580191833

23

0.989391712

2.530964452

0.990026091

3.901208093

50

0.999091096

25

0.803540543

26

40

0.995184066

60

39

61

0.984379257

62

0.99028409

63

49

0.918694359

64

47

0.990146661

表一、64个初始点寻优记录表

为了清楚地展示复合形的寻优过程,本文绘制了复合形法在迭代过程的寻优轨迹,也即最大值的寻找过程。

下图为复合形法中找到最优值时的寻优轨迹图。

图四、全局最优点的寻优轨迹图

4、寻优结果:

由该方法找到的最优解为X=[0.02955566;

-0.00589362],此时最大值f(X)=

0.99909101。

由此可知,该结果与理论值很接近的,证明了算法的有效性。

五、寻优分析与探讨

1、复合形法

通过上面的求解过程,我们得出并不是任意给定的初始点都能找到全局最优点,也即函数的最大值。

本文通过在定义域内选取大量的初始点来进行优化求解,并且在将区域分成64块时找到了最优点。

但是实际上在这64个初始点中,能找到最优点的概率还是很低的。

当然,通过仿真实验我们还发现随着在定义域内选取的初始点越多,也即分的区域块数越多,找到最优点的概率越大。

2、Matlab工具箱求解

为了验证分区选取初始点的有效性,本文还通过Matlab中自带的优化工具箱,即求解非线性规划的fmincon命令来求取该函数的最大值。

实际上,对于给定函数解析式的非线性函数,该方法比复合形法要更有效。

下表为结合初始点分区选择和非线性规划方法求解该函数最值的过程。

-3.447309367

0.646848776

-0.75535277

0.990283844

1.176723369

3.926936932

6

0.999999992

7

0.999999989

8

0.990284085

9

10

11

12

13

14

15

16

表二、16个初始点寻优记录表

由此表可知,本文仅将定义域分成16块即找到3次全局最优点(即表中绿色部分初始点)。

同时,本文也做过仿真实验,当分的区域块数越大,找到全局最优的机率越大。

而对于寻优而言,我们只需找到一次全局最优点即得到该函数的最大值,进一步验证了分区的有效性。

六、总结

本文在理解复合形法的基础上,针对复合形法寻优过程对初值的依赖性很大这一问题,提出将定义域区域进行等分,然后对每小块区域选取一个初始点进行寻优,然后比较这些初值点找到的最优值,把最好的一个最为最终的最优值。

实验证明该方法很有效。

同时,我们也认识到复合形法也存在一定的问题,运算比较慢。

本文通过Matlab求解非线性规划的方法进一步对定义域分区的思想进行验证。

从仿真结果中结果中可以看出,这种方法比复合形法更有效。

七、附录

1、目标函数的三维图形绘制程序

x=-4:

0.1:

4;

y=-4:

[XY]=meshgrid(x,y);

Z=0.5-(sin((sqrt(X.^2+Y.^2))).^2-0.5)./(1+0.001*(X.^2+Y.^2)).^2;

mesh(X,Y,Z)

xlabel('

X'

);

Y'

Z'

2、复合形法求解程序如下:

symsx1x2

f=-(0.5-(sin((sqrt(x1.^2+x2.^2))).^2-0.5)./(1+0.001*(x1.^2+x2.^2)).^2);

%目标函数

a=[-4;

-4];

b=[4;

4];

alpha=1;

var=[x1;

x2];

e=1.0e-8;

e1=1.0e-6;

sita=0.5;

M=[];

%记录每个初值迭代后最优值的向量

W=[];

%记录各个初始值取最优值时的解向量

t=[];

D=[];

%记录各个初始值取最优值时的迭代次数

m=8;

%定义域分成8*8个块数

a1=-4;

b1=4;

z=zeros(1,m);

X0=zeros(2,m*m);

fori=1:

m

z(i)=a1+(b1-a1)/m*(i-1)+rand(1,1)*(b1-a1)/m;

end

forj=1:

X0(1,i+m*(j-1))=z(i);

end

W=[Wones(1,m)*z(i)];

X0(2,:

)=W;

m*m

[x,d,minf]=childfun(f,X0(:

i),a,b,alpha,sita,var,e,e1);

M=[M,minf];

t=[t,x];

D=[D,d];

[maxfindex]=min(M)

x=t(:

index)

d1=D(index)

function[x,d,minf]=childfun(f,x0,a,b,alpha,sita,var,e,e1)

%f为目标函数

%%g为约束条件

%a为xi的下限a=[a1;

a2;

…;

an]

%b为xi的上限b=[b1;

b2;

bn]

%alpha为反射系数o

%var为自变量向量var=[x1;

x2;

xn]

%e为运算中止精度

%e1为反射系数收缩下限

%sita为紧缩系数

aa=a;

bb=b;

n=2;

k=3;

while1

fx=zeros([1,k]);

X=zeros([n,k]);

g=[var-aa;

-var+bb];

%约束函数g(X)

%产生初值

X(:

1)=x0;

fori=2:

k

r=abs(rand([2,1]));

X(:

i)=aa+r.*(bb-aa);

%%寻优

traceFXk=[0];

%用来记录每次迭代所产生的最坏点Xh

tracefxc0=[0];

%用来记录每次迭代所产生的形心点Xc0

FXk=[];

fori=1:

k

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

i));

%计算复合形所有顶点的函数值

[FX,IX]=sort(fx);

%对复合形所有顶点的函数值从小到大排序

Xsorted=X(:

IX);

%得到排序后的函数值所对应的x值

traceFXk=[traceFXk,FX(k)];

xc0=sum(Xsorted,2)/k;

%复合形所有顶点的形心点

fxc0=subs(f,var,xc0);

tracefxc0=[tracefxc0,fxc0];

Sum=0;

Sum=Sum+(FX(i)-fxc0)^2;

E=sqrt(Sum/k);

%终止迭代条件

ifE<

=e

x=Xsorted(:

1);

%令x=xL

break;

else

xc=sum(Xsorted(:

1:

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

%除最坏点外其余K-1个顶点的形心点

gxc=subs(g,var,xc);

ifmin(gxc)>

=0%若形心点满足约束

xr=xc+alpha*(xc-Xsorted(:

k));

fxr=subs(f,var,xr);

gxr=subs(g,var,xr);

ifmin(gxr)>

=0

iffxr<

FX(k)%若f(xr)<

f(xh),则令xh=xr,产生新的复合形

Xsorted(:

k)=xr;

ifalpha<

=e1%若f(xr)>

f(xh),但此时反射系数alpha已经小于e1

x0=Xsorted(:

%则需将复合形中的所有顶点向最好点收缩以产生新的复合形

i)=x0+sita*(Xsorted(:

i)-x0);

else%若f(xr)>

f(xh),但此时反射系数alpha仍大于e1

alpha=alpha/2;

%则将反射系数减小为原来的一半,重新计算反射点

else

n%若形心点不可行,则分别用形心点xc(i)和最好点xL(i)代替变量xi的上下限

ifxc(i)<

Xsorted(i,1)

aa(i)=xc(i);

bb(i)=Xsorted(i,1);

aa(i)=Xsorted(i,1);

bb(i)=xc(i);

X=Xsorted;

%得到新的复合形

ifaa==a&

bb==b

continue;

formatlong

minf=subs(f,var,x)

minf1=minf*ones(1,length(traceFXk));

d=length(traceFXk);

xx=1:

length(traceFXk);

figure

plot(xx,-traceFXk,'

b'

xx,-tracefxc0,'

r--'

legend('

寻优轨迹(f(xh))'

'

形心点的轨迹'

0);

迭代次数'

ylabel('

函数值'

title('

寻优轨迹'

3、Matlab工具箱求解命令如下:

%各参数初始化

m=4;

%定义域分成4*4个块数

a=-4;

%区域下限

b=4;

%区域上限

%记录所有初值矩阵

%初值的产生过程

z(i)=a+(b-a)/m*(i-1)+rand(1,1)*(b-a)/m;

%全局最优值求解过程

VLB=[-4;

VUB=[4;

[x,fval,exitflag]=fmincon(@fun,X0(:

i),[],[],[],[],VLB,VUB);

%优化工具箱函数调用

ifexitflag>

0%判断迭代是否收敛

M=[M,fval];

functionf=fun(x)%目标函数

f=-(0.5-(sin((sqrt(x

(1).^2+x

(2).^2))).^2-0.5)./(1+0.001*(x

(1).^2+x

(2).^2)).^2);

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 高中教育 > 理化生

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

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