遗传算法与直接搜索工具箱学习笔记 七-----模式搜索工作原理详解
2009-11-25 16:53
477 查看
本节主要讲述模式搜索的工作细节。
模式搜索算法就是寻找x0, x1, x2,...,这样的一系列的点,这些点逐渐在靠近最优值。在这个点的序列中,后一个点相对于前一个点在逐渐减小(轮询成功)或者保持不变(轮询失败)。本节就详细介绍在例子ps_example(笔记五)中寻找最优解过程的工作细节。
为了描述上的简单,我们只考虑下面的情况:
1.使用GPS算法。
2.GPS算法使用的模式是最大正交基组成的模式。
3.在图形用户界面中MESH面板中,Scale设置为“off”
一、成功的轮询
GPS在提供的x0=[2.1 1.7]起始点开始运行。
1.1第一次迭代
第一次迭代,网格尺寸(SIZE)是1,算法将起始点与模式向量相加,得到下面的结果
[1 0] + x0 = [3.1 1.7]
[0 1] + x0 = [2.1 2.7]
[-1 0] + x0 = [1.1 1.7]
[0 -1] + x0 = [2.1 0.7]
算法然后计算目标函数在网格点中的函数值,计算点的顺序就如上面式子的顺序。
下面的图形表示了起始点与网格点的目标函数值
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange.jpg)
算法开始轮询搜索网格点,因为x0=[2.1 1.7]点的函数值是4.6347,所以第一个比4.6247小的点是[1.1 1.7],这个点的函数值是4.5146,因此第一轮轮询是成功的,因此将当前点x1设为[1.1 1.7]。即x1=[1.1 1.7]。
1.2 第二次迭代
经过一次成功的轮询,算法将当前的网格尺寸(1)乘以2,这样在本次的迭代中,网格尺寸将是2,有些人可能问了,算法中这个膨胀的倍数2是不是固定的,能不能修改呢?当然可以修改了,在optimtool操作界面中,在MESH面板中Expansion factor(膨胀系数)就是用来控制这个数字的。在第二次迭代过程中,网格包含以下的一些点。
2*[1 0] + x1 = [3.1 1.7]
2*[0 1] + x1 = [1.1 3.7]
2*[-1 0] + x1 = [-0.9 1.7]
2*[0 -1] + x1 = [1.1 -0.3]
按照第一步的方法,画出图形
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange2.jpg)
在本次轮询中,发现点[-0.9 1.7]的函数值3.25比较优秀,因此x2=[-0.9 1.7]。因为本次轮询成功,所以算法在第三次迭代时,会将网格的尺寸变为4.
二、不成功的轮询
在算法进行第四次迭代时,x3 = [-4.9 1.7],此时网格尺寸是8,因此网格包含下面的点
8*[1 0] + x3 = [3.1 1.7]
8*[0 1] + x3 = [-4.9 9.7]
8*[-1 0] + x3 = [-12.9 1.7]
8*[0 -1] + x3 = [-4.9 -1.3]
下面的图显示了各个点的目标函数值
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange3.jpg)
在本次轮询中,没有一个点的函数值能够比当前点的函数值还要小,因此轮询失败,当前点还是x3,没有发生改变,因此x4=x3.
在下一次迭代中,算法会首先将网格尺寸乘以0.5,然后再轮询网格点。这里的0.5叫收缩系数,这个系数可以在mesh面板中的Contraction factor 选项进行修改。
三、显示每步迭代的详细信息
其实算法每步迭代的详细信息都可以显示出来,可以通过设置Display to command window面板中Level of display为iterative。如下图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/display.jpg)
这将使你详细了解算法运行的详细过程
在命令窗口中显示的算法运行的详细过程是
Iter f-count f(x) MeshSize Method
0 1 4.63474 1
1 4 4.29487 2 Successful Poll
2 7 0.324468 4 Successful Poll
3 11 0.324468 2 Refine Mesh
4 15 0.324468 1 Refine Mesh
至于每一列的详细的介绍就不多介绍了,其中在Method列下面的Refine Mesh就是轮询失败的情况。
四、模式搜索的停止标准
模式搜索挺值的标准都列在模式搜索图形用户界面的Stopping criteria面板中,见下图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/stop.jpg)
在上面列举中的标准中,只要算法运行过程中,有一项符合标准,算法就会停止运行,并把停止运行的原因在运行结果的窗口告诉你。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/result633947842381093750.jpg)
好了,这一节到这里就结束吧,太长了,写的有点累了。
模式搜索算法就是寻找x0, x1, x2,...,这样的一系列的点,这些点逐渐在靠近最优值。在这个点的序列中,后一个点相对于前一个点在逐渐减小(轮询成功)或者保持不变(轮询失败)。本节就详细介绍在例子ps_example(笔记五)中寻找最优解过程的工作细节。
为了描述上的简单,我们只考虑下面的情况:
1.使用GPS算法。
2.GPS算法使用的模式是最大正交基组成的模式。
3.在图形用户界面中MESH面板中,Scale设置为“off”
一、成功的轮询
GPS在提供的x0=[2.1 1.7]起始点开始运行。
1.1第一次迭代
第一次迭代,网格尺寸(SIZE)是1,算法将起始点与模式向量相加,得到下面的结果
[1 0] + x0 = [3.1 1.7]
[0 1] + x0 = [2.1 2.7]
[-1 0] + x0 = [1.1 1.7]
[0 -1] + x0 = [2.1 0.7]
算法然后计算目标函数在网格点中的函数值,计算点的顺序就如上面式子的顺序。
下面的图形表示了起始点与网格点的目标函数值
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange.jpg)
算法开始轮询搜索网格点,因为x0=[2.1 1.7]点的函数值是4.6347,所以第一个比4.6247小的点是[1.1 1.7],这个点的函数值是4.5146,因此第一轮轮询是成功的,因此将当前点x1设为[1.1 1.7]。即x1=[1.1 1.7]。
1.2 第二次迭代
经过一次成功的轮询,算法将当前的网格尺寸(1)乘以2,这样在本次的迭代中,网格尺寸将是2,有些人可能问了,算法中这个膨胀的倍数2是不是固定的,能不能修改呢?当然可以修改了,在optimtool操作界面中,在MESH面板中Expansion factor(膨胀系数)就是用来控制这个数字的。在第二次迭代过程中,网格包含以下的一些点。
2*[1 0] + x1 = [3.1 1.7]
2*[0 1] + x1 = [1.1 3.7]
2*[-1 0] + x1 = [-0.9 1.7]
2*[0 -1] + x1 = [1.1 -0.3]
按照第一步的方法,画出图形
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange2.jpg)
在本次轮询中,发现点[-0.9 1.7]的函数值3.25比较优秀,因此x2=[-0.9 1.7]。因为本次轮询成功,所以算法在第三次迭代时,会将网格的尺寸变为4.
二、不成功的轮询
在算法进行第四次迭代时,x3 = [-4.9 1.7],此时网格尺寸是8,因此网格包含下面的点
8*[1 0] + x3 = [3.1 1.7]
8*[0 1] + x3 = [-4.9 9.7]
8*[-1 0] + x3 = [-12.9 1.7]
8*[0 -1] + x3 = [-4.9 -1.3]
下面的图显示了各个点的目标函数值
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/wange3.jpg)
在本次轮询中,没有一个点的函数值能够比当前点的函数值还要小,因此轮询失败,当前点还是x3,没有发生改变,因此x4=x3.
在下一次迭代中,算法会首先将网格尺寸乘以0.5,然后再轮询网格点。这里的0.5叫收缩系数,这个系数可以在mesh面板中的Contraction factor 选项进行修改。
三、显示每步迭代的详细信息
其实算法每步迭代的详细信息都可以显示出来,可以通过设置Display to command window面板中Level of display为iterative。如下图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/display.jpg)
这将使你详细了解算法运行的详细过程
在命令窗口中显示的算法运行的详细过程是
Iter f-count f(x) MeshSize Method
0 1 4.63474 1
1 4 4.29487 2 Successful Poll
2 7 0.324468 4 Successful Poll
3 11 0.324468 2 Refine Mesh
4 15 0.324468 1 Refine Mesh
至于每一列的详细的介绍就不多介绍了,其中在Method列下面的Refine Mesh就是轮询失败的情况。
四、模式搜索的停止标准
模式搜索挺值的标准都列在模式搜索图形用户界面的Stopping criteria面板中,见下图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/stop.jpg)
在上面列举中的标准中,只要算法运行过程中,有一项符合标准,算法就会停止运行,并把停止运行的原因在运行结果的窗口告诉你。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/niuyongjie/EntryImages/20091125/result633947842381093750.jpg)
好了,这一节到这里就结束吧,太长了,写的有点累了。
相关文章推荐
- 遗传算法与直接搜索工具箱学习笔记 七-----模式搜索工作原理详解
- 遗传算法与直接搜索工具箱学习笔记 六-----模式搜索相关术语解析
- 遗传算法与直接搜索工具箱学习笔记 六-----模式搜索相关术语解析
- 遗传算法与直接搜索工具箱学习笔记 八-----遗传算法概述
- 遗传算法与直接搜索工具箱学习笔记 二-----编写自己的目标函数
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 一-----概述
- 遗传算法与直接搜索工具箱学习笔记 八-----遗传算法概述
- 遗传算法与直接搜索工具箱学习笔记 九-----遗传算法举例
- 遗传算法与直接搜索工具箱学习笔记(补充)三维立体绘图方法
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与直接搜索工具箱学习笔记 一-----概述
- 遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- 遗传算法与直接搜索工具箱学习笔记 九-----遗传算法举例
- 遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与直接搜索工具箱学习笔记 -----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始