简单分布估计算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单的分布估计算法解决连续函数的
最优化问题
1问题描述及求解过程
1.1问题描述
5
11min cos[(1)]n i j i j j x j ==++∑∏其中-10≤ x i ≤ 10, i =1, 2, … , n .
当n =1、2、3和4时分别有3、18、81和324 个不同的全局最优解。
1.2问题分析
该问题是一个多峰的连续函数,函数的形式为
)(xi f ∏
因此,每一维之间没有相互关系,又因为变量无关的概率模型的学习及采样的过程会比较简单,所以我们采用概率无关的的分布估计算法,函数是连续的,所以我们采用连续域的变量无关的分布估计算法来解决这个问题,求多极值考虑到了两种思路,一种是建立多峰的概率模型,另外一种是建立单峰的概率模型,使之迅速收敛到一个极值,然后再重新初始化模型。由于单峰模型比较简单,所以采用单峰模型。
1.3求解算法策略
分布估计算法遗传算法和统计学习相结合,该算法通过统计学习的方法来更新一个概率模型,并且用这个概率模型来估计解空间有优秀个体的分布情况。通过不断地学习,使得这个概率模型越来越能反映解空间中的优秀个体的分布情况。
分布估计算法的步骤大致可以分为以下两步:
1:构建描述解空间的概率模型.通过对种群的评估,得到优秀的个体集合,然后采用统计学习等手段构造一个描述当前解集的概率模型.
2 :由概率模型随机采样产生新的种群。
要设计一个分布估计算法,首先要考虑到以下三个关键问题
(1):概率模型的选择--对于一个多峰的函数,当然多峰的概率模型有更强的描述能力,但是,多峰的概率模型学习起来比较困难,因此,我们采用一个单峰的概率模型,并使用这个概率模型描述一个局部极值点,当求得一个极值点的时候,重新初始化概率模型,寻找其他的极值点。
单峰的概率模型设计方法
认为每一维都服从一个正态分布即 ),(~i i i C U N x
(2):采样以及择优方法--单峰的概率模型很容易陷入到局部最优,因此我们需要不断地重新开始以找到更多的局部最优,在这种情况下,单峰的概率模型收敛越快越好,在这里采用的方法是不断地根据该类模型进行采样,知道采到lambda 个个体的适应度要好于当前最好的适应度为止,若连续采样很多次仍没有改进,则需要检测该点是不是极值点,检测的方法是将每一维的d 设置成一个较小的值,采样多次,若仍没有改进,则认为该点是极值点。
每一维的采样的方法 i i i U C N x +=*)1,0(
其中N (0,1)是一个服从均值为0,方差为0.5的正态分布。
(3):概率模型更新方法---根据每次得到的有改进的lambda 个个体,取其
中适应度最高的一个个体,假设其坐标为Xl=)...........
2,1(xn x x ,并假设在此之前的到的最好的个体的坐标为 XC=)''.......
2,'1(xn x x 令D=XC-X1=)'..,.........
'22,'11(xn xn x x x x --- 对D 中的每个元素取绝对值
C=|)'|...............
|'22||,'11(|xn xn x x x x --- 则Xl 和C 分别为新一代的均值和概率模型,即更新后的概率模型为
)
,(~|'|Ci Ui N xi xi xi di xi
Ui -==
4:求全局最优值------设置一个极值点队列,该队列按照极值点对应的y 值,从小到大排列,若找到一个极值点,则判断该点是否好于队列中最差的极值点,如果是,则插入该队列,当迭代次数达到一个阈值的时候,队列中是到现在为止取得的最好的点,可以近似地认为队列中最好的点,就是全局最优解,迭代次数越高,得到全局最优的概率就越大。
1.4流程图
2 示例分析
求单个极值点示例
对于问题函数一维的情况,得到图像如下:
假设初试化的U为-5.00
则初始化的分布为)5.0,
N
1-
X
00
.5
(
~
如图所设
假设经过多次采样之后,得到了三个比-5.0有所改进的点,者三个点的横坐标及函数值分别为-5.40(-3.487),-4.90(-2.686)-5.10(1.81)根据上述方法,我们选择-5.40 更新该类模型,从而得到U=-5.40,d=0.40 更新之后的概率模型为)
1-
N
~
x,概率模型对应的图如下,
.0,
40
40
.5
(
在经过多次采样,得到3个比-5.40有改进的点,分别是,-5.45 (-3.74),-5.49(-3.69),-5,42(-3.62),从而根据-5.45 来更新概率模型,得到
.5(
1N
x
~
)
05
.0,
45
如下图所示
通过两次学习过程可以看出,在理想状况下,该算法可以使概率模型更好地模拟优秀个体的分布情况,实验证明,这种分布估计算法也可以收敛到局部机制,但是仍然存在着很多问题,例如很有可能存在如下情况,对于同一个函数,同一个维度,同一种初始情况,由于正态分布是无界的,所以进场会出现这样一种亲光,即采样到其他极值点附近的区域,例如上述示例在第二次学习过程中,猜到了一个-7.50,这个点的适应度很好,而且是完全有可能采到的,这个时候概率模型的更新就会成为这样一种情况
1
x
~
N
)1.2,
(
50
.7
如下图:
由此看来,这次的学习会对收敛产生反作用,虽然中心的值更优了,但是d 却变得很大,对收敛到某个极值的过程产生了干扰。
避免这种方法可以采用有界的概率模型,例如只能在中心的左右某个区间内取值,但是这样就会影响到收敛的速度,因为这样的话每次中心移动的位置有上界,对于这个函数来说,这样的问题不但,但是我们优势后很难确定函数的形状,