复合形法大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优化理论与最优控制大作业
( 2013-- 2014 年度第 1 学期)
题目:复合形法大作业
院系:控制与计算机工程学院
小组成员:
研控计1320班:范冠男 1132227028
习春苗 1132227001
程丕建 1132227027
王凯 1132227013
郭萍 1132227020
研控计1322班:赵亮 1132227143
成绩:
日期:2013年12月8日
一、 作业题目
利用复合形法求解Schaffer ’s function
2
22212
2212))
(001.01(5
.0)(sin 5.0)(max x x x x X f +⋅+-+-= (44≤≤-i x i=1,2) 注:本组各函数中的n 值均取为2
二、 复合形法的基本原理及本文思路
1、复合形法原理:复合形法的基本思路是在n 维空间的可行域中选取K 个设计点(通常取n+1≤K ≤2n )作为初始复合形(多面体)的顶点。然后比较复合形各顶点目标函数的大小,其中目标函数值最大的点作为坏点,以坏点之外其余各点的中心为映射中心,寻找坏点的映射点,一般说来此映射点的目标函数值总是小于坏点的,也就是说映射点优于坏点。这时,以映射点替换坏点与原复合形除坏点之外其余各点构成K 个顶点的新的复合形。如此反复迭代计算,在可行域中不断以目标函数值低的新点代替目标函数值最大的坏点从而构成新复合形,使复合形不断向最优点移动和收缩,直至收缩到复合形的各顶点与其形心非常接近、满足迭代精度要求时为止。最后输出复合形各顶点中的目标函数值最小的顶点作为近似最优点。
2、本文思路:本文在理解复合形法的基础上,提出将定义域区域进行等分,分成m ×m 个小块。然后对每小块区域选取一个初始点进行寻优,最后比较这些初值点找到的最优值,并把最好的一个最优值作为最终的输出最优值。
三、 基本程序流程图
图一、程序流程图
四、求解寻优过程
1、函数三维图形:
Z
图二、目标函数三维图
2、理论结果:
由函数的三维图形不难看出,该函数的理论最大值为1。即当X=0,Y=0,时,Z=f(x)取最大值为1。故理论解为X=[0 ,0]T,f(X)=1。
3、寻优过程:
本文在利用复合形法求解过程中,在平面区域内将区域等分成为64小块,并在每个小块中选取一个初始值作为复合形法的初始值进行寻优计算,并将最终的最优值作为寻优结果。在区域内初始点散点图如下,从中可以看到在每个网状线格子中都有一个初值。
X
Y
图三、64个初始点在定义域散点图
同时,本文选取部分初始值寻优结果列入下表:
表一、64个初始点寻优记录表
为了清楚地展示复合形的寻优过程,本文绘制了复合形法在迭代过程的寻优轨迹,也即最大值的寻找过程。下图为复合形法中找到最优值时的寻优轨迹图。
5
10
15
20
253035
40
45
50
00.10.20.30.40.50.60.70.80.9
1迭代次数
函数值
寻优轨迹
图四、全局最优点的寻优轨迹图
4、寻优结果:
由该方法找到的最优解为X=[0.02955566;-0.00589362],此时最大值f(X)=
0.99909101。由此可知,该结果与理论值很接近的,证明了算法的有效性。
五、寻优分析与探讨
1、复合形法
通过上面的求解过程,我们得出并不是任意给定的初始点都能找到全局最优
点,也即函数的最大值。本文通过在定义域内选取大量的初始点来进行优化求解,并且在将区域分成64块时找到了最优点。但是实际上在这64个初始点中,能找到最优点的概率还是很低的。当然,通过仿真实验我们还发现随着在定义域内选取的初始点越多,也即分的区域块数越多,找到最优点的概率越大。
2、Matlab工具箱求解
为了验证分区选取初始点的有效性,本文还通过Matlab中自带的优化工具箱,即求解非线性规划的fmincon命令来求取该函数的最大值。实际上,对于给定函数解析式的非线性函数,该方法比复合形法要更有效。下表为结合初始点分区选择和非线性规划方法求解该函数最值的过程。
表二、16个初始点寻优记录表
由此表可知,本文仅将定义域分成16块即找到3次全局最优点(即表中绿色部分初始点)。同时,本文也做过仿真实验,当分的区域块数越大,找到全局最优的机率越大。而对于寻优而言,我们只需找到一次全局最优点即得到该函数的最大值,进一步验证了分区的有效性。
六、总结
本文在理解复合形法的基础上,针对复合形法寻优过程对初值的依赖性很大这一问题,提出将定义域区域进行等分,然后对每小块区域选取一个初始点进行寻优,然后比较这些初值点找到的最优值,把最好的一个最为最终的最优值。实验证明该方法很有效。同时,我们也认识到复合形法也存在一定的问题,运算比较慢。本文通过Matlab求解非线性规划的方法进一步对定义域分区的思想进行验证。从仿真结果中结果中可以看出,这种方法比复合形法更有效。
七、附录
1、目标函数的三维图形绘制程序
x=-4:0.1:4;
y=-4:0.1:4;
[X Y]=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');
xlabel('Y');
xlabel('Z');
2、复合形法求解程序如下:
syms x1 x2
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=[];%记录每个初值迭代后最优值的向量