蚁群算法解决多峰函数优化问题

一、多峰优化问题概述
        多峰函数优化问题在实际应用中大量存在,多峰函数是指有多个极值点的函数,这些极值点可能相同,也可能不同。
二、蚁群问题解决函数多峰寻优问题思想
        以一维函数y=f(x)的极小值寻优为例,对函数多峰值寻优进行研究。若为函数极大值寻优,可以将问题转化成y=-f(x)的极小值寻优,所求的极大值为y=-f(x)的极小值的相反数。
蚁群算法基本思想如下:
        为方便起见,不妨设函数y=f(x)的定义域为[a,b]。首先将[a,b]划分成若干个长度相等的小区间,这些小区间记为{I1,I2…In},区间Ii的中点记为x。设与区间Ii相邻的区间为I(i+1)(或者I(i-1)),假设Ii和I(i+1)之间有一条虚拟的边e(Ii,I(i+1)),该边的权重(虚拟距离)和f(xi)-f(x(i+1))的大小有关,f(xi)-f(x(i+1))越大,蚂蚁从区间Ii转移到区间I(i+1)的可能性就越大。蚂蚁从区间Ii转移到区间l(i+1)后,要留下信息素,所留信息素的大小是一个与f(xi)-f(x(i+1))有关的量,区间I(i+1)的信息素越多,就越吸引相邻区间蚂蚁向其转移。
        蚂蚁经过许多次转移之后,有的区间含有许多蚂蚁,而有的区间则不含蚂蚁。那些含有蚂蚁的区间正是包含极值点的区间,不含蚂蚁的区间,不大可能包含极值点。取出包含蚂蚁的区间,并将它们重新细化,重复上述搜索过程,直到细化后的区间足够小。最后,蚂蚁都停留在了极值点附近,蚂蚁所在的区间的中点位置正是极值点的位置。
三、具体实现步骤
1.蚁群初始分布
        首先将问题的定义域[a,b]进行n等分,等分后的各区间长度为β=(b-a)/n各区间记为{I1,I2,…In},其中Ii(i=1…n)表示第i个区间,则
                                         11=[a+(i-1)β,a+iβ]
式中a+(i-1)β、a+iβ分别为区间Ii的左、右端点。区间I1的中点位置记为xi,则
                                                 xi=a+(i-1/2)β
        初始时刻,在每个区间的中点位置放置一只蚂蚁,记这n只蚂蚁为a1,a2…an,,蚂蚁a1位于区间I1的中点位置x1。每一个位置xi对应一个函数值f(xi)。ti(t)表示t时刻子区间Ii上的信息量,在初始时刻各子区间的信息量相等,设ti(0)=const(const为正常数)。初始化各子区间的信息素增量△ti=0,(i=1…n)。
在这里插入图片描述
2.蚁群转移规则
         不妨用neighbor(Ii)表示与区间Ii邻近的区间集合,则对于一维函数
在这里插入图片描述
位于区间Ii的蚂蚁向其邻近区间Ij进行转移,假设Ii和Ij之间有一条虚拟的边e(li,Ij),该边的权重为|f(xi)-f(xj)|,则启发函数nij=|f(xi)-f(xj)|
设蚂蚁ak当前处于区间Ii,若f(xi)-f(xj)>0,蚂蚁ak就可以转移到其邻近区间Ij;否则,蚂蚁不向其转移。设用allowedk:表示蚂蚁ak(k=1…n)下一步可以转移的子区间的集合。
        用pij(t)表示第t次循环蚂蚁ak从子区间I1转移到子区间Ij的概率,模仿基本蚁群算法,定义蚂蚁ak的转移概率如下:
在这里插入图片描述式中,a为信息启发式因子,β为期望启发式因子。tj为子区间Ij的信息量,如果蚂蚁ak依概率从子区间Ii转移到了子区间Ij,那么蚂蚁ak当前所在的子区间就为Ij。

3.信息素更新
         如果蚂蚁ak依概率从子区间Ii转移到了子区间Ij,那么蚂蚁ak就会在区间Ij留下信息素,所留信息素的量用△tjf(t)表示,则
在这里插入图片描述
式中,C1是一个正常数。f(xi)-f(xj)越大,蚂蚁ak留下的信息素就越多,就越吸引其他蚂蚁向区间Ij转移。
        所有转移到区间Ij的蚂蚁都要留下相应的信息素,假设在第t次循环,有q只蚂蚁转移到了区Ij,记这q只蚂蚁为aj1,aj2.,ajq,,它们留在区间Ij的信息素总和为△tj(t),则
在这里插入图片描述
式中,p为信息素挥发系数,因此1-p是信息素残留因子。
4.缩小蚁群搜索空间
        函数值较小的区间含有的信息素会较多,更容易吸引蚂蚁向其转移。经过一些循环,当所有蚂蚁都停止转移的时候,蚁群分布就会出现这样的特点:所有蚂蚁都分布在极值点较小的区间,而其他区间则没有蚂蚁,即含有蚂蚁的区间包含极小值点。取出这些包含蚂蚁的区间,并将这些区间重新细化,在下一次循环时,让蚁群在这些区

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值