精华内容
下载资源
问答
  • 智能优化算法:蜻蜓优化算法-附代码 文章目录智能优化算法:蜻蜓优化算法-附代码1.算法原理1.1分离2.2 排队2.3 结盟2.4 寻找猎物2.5 躲避天敌2.算法流程3.算法结果4.参考文献5.MATALAB代码 摘要:蜻蜓优化算法( ...

    智能优化算法:蜻蜓优化算法-附代码


    摘要:蜻蜓优化算法( Dragonfly algorithm,DA)是Seyedali Mirjalili等于2016年提出的一种新型智能优化算法[1]。其主要灵感源于自然界中蜻蜓的静态和动态群集行为,具有寻优能力强等特点。

    1.算法原理

    蜓算法是一种新型智能群优化算法,其原理是模拟大自然中蜻蜓寻找猎物的行为。该算法源于自然中蜻蜓动态和静态的智能群行为,对蜻蜓的飞行线路、躲避天敌及寻找食物等生活习性进行数学建模。在动态群中,为获得更好的生存环境,大量的蜻蜓集群朝着共同的方向进行远距离迁徙;在静态群中,为寻找其他飞行猎物,由小部分蜻蜓组成的各个小组,在较小的范围内来回飞行。蜻蜓飞行过程中的局部运动与飞行路径的临时突变是静态群的主要特征。在自然界中,蜻蜓的生活习性可以归纳为5类行为方式:分离、排队、结盟、寻找猎物和躲避天敌。

    1.1分离

    分离是每个蜻蜓个体与同类分开的行为。分离行为的数学表达式为:
    Si=j=1N(XXj)(1) S_{i}=-\sum_{j=1}^{N}(X-X{j})\tag{1}
    式中NN^{'}为邻近个体的个数;SiS_{i}为第ii个蜻蜓同类之间分离行为的位置向量;XX为个体所在位置;XjX_{j}相邻个体蜻蜓jj所处的位置。

    2.2 排队

    排队是指每个蜻蜓个体在飞行时与相邻个体之间的速度匹配。排队行为的数学表达式为:
    Ai=j=1NVjN(2) A_{i}=\frac{\sum_{j=1}^{N'}{V_{j}}}{N^{'}}\tag{2}
    式中AiA_{i}为第ii个蜻蜓个体排队行为的位置向量;VjV_{j}为相邻个体的飞行速度。

    2.3 结盟

    结盟指蜻蜓与相邻同类之间彼此聚在一起的集群行为。结盟行为的数学表达式为:
    Ci=j=1NXjNX(3) C_{i}=\frac{\sum_{j=1}^{N'}{X_{j}}}{N^{'}}-X \tag{3}
    式中CiC_{i}为第ii个蜻蜓个体结盟行为的位置向量。

    2.4 寻找猎物

    寻找猎物指个体为生存搜寻猎物的行为。寻找猎物行为的数学表达式为:
    Fi=X+X(4) F_{i}=X^{+}-X\tag{4}
    式中FiF_{i}ii个蜻蜓个体猎食行为的位置向量;X+X^{+}待捕食的猎物所处的位置。

    2.5 躲避天敌

    个体出于生存的本能,需时刻警惕天敌的行为。躲避天敌行为的数学表达式为:
    Ei=XX(5) E_{i}=X^{-}-X\tag{5}
    式中EiE_{i}为第i个蜻蜓个体逃避天敌行为的位置向量;XX^{-}为蜻蜓猎食所处的位置。步向量表示为蜻蜓的飞行方向以及步长,其数学式如下:
    ΔXt+1=(sSi+aAi+cCi+fFi+eEi)+ωΔXt(6) \Delta X_{t+1}=(sS_{i}+aA_{i}+cC_{i}+fF_{i}+eE_{i})+\omega^{'}\Delta X_{t}\tag{6}
    式中:aa为对齐权重;cc为凝聚权重;ee为天敌权重因子;ff为猎物权重因子;ss为分离权重;tt为当前迭代次数;ω\omega ^{'}为惯性权重。

    在自然界中,出于生存需要,大部分时间蜻蜓都是运动的,因此所处位置也需实时更新。更新蜻蜓个体所处位置的向量,数学表达式如下:
    Xt+1=Xt+ΔXt+1(7) X_{t+1}=X_{t}+\Delta X_{t+1}\tag{7}
    要达到使算法性能进一步得到强化的目的,在同类个体附近无临近解时,通过使用Lévy飞行的方法绕搜索空间飞行,进行蜻蜓位置的更新:
    Xt+1=Xi+Leˊvy(d)ΔXi(8) X_{t+1} = X_{i} +Lévy(d)\Delta X_{i} \tag{8}
    其中dd表示维度。Lévy函数计算如下:
    Leˊvy(x)=0.01r1δr21β(9) Lévy(x)=0.01*\frac{r_{1}*\delta}{|r_{2}|^{\frac{1}{\beta}}}\tag{9}

    δ=(Γ(1+β)sin(πβ2)Γ(1+β2)β2(β12))1β,Γ(x)=(x1)!(10) \delta = ( \frac {\Gamma(1+\beta)*sin(\frac{\pi\beta}{2})}{\Gamma(\frac{1+\beta}{2})*\beta*2(\frac{\beta-1}{2})})^{\frac {1}{\beta}},\Gamma(x) = (x-1)!\tag{10}

    式子中:r1,r2r_{1},r_{2}为[0,1]范围内的随机数;β\beta为常数。

    为调节DA算法的搜索性能,参数值(分离权重ss、对齐权重aa、凝聚权重cc、猎物权重因子ff、天敌权重因子ee)将在寻优过程中自适应调整。

    2.算法流程

    蜻蜓算法优化相关参数步骤如下:
    a.初始化蜻蜓算法参数,包括最大迭代次数、种群数量。
    b.初始化蜻蜓在搜索空间中的位置向量XX和在搜索空间中的方向向量ΔXΔX。各只蜻蜓优化参数的组合设为C,g(C,g),其中矩阵的第1、2行分别存放CgC、g的值。
    c.更新各权重值。根据上述步骤的数据,对相关权重值进行初始化。变量包括邻域半径rr、惯性权重ωω′、猎物权重因子ff、对齐权重aa、凝聚权重cc、分离权重ss、天敌权重因子ee
    d.适应度值的计算,蜻蜓的最大适应度值随着蜻蜓不断地进行操作而实时更新,如果蜻蜓当前的适应度值大于已保存的适应度值,则更新原适应度值,否则原适应度值不变。因此保存的适应度值为最优值,并且保存当
    前最优值对应的参数组合(C,g)(C,g)
    e.搜寻邻域中有无蜻蜓个体存在,以欧氏距离作为邻域中有无蜻蜓存在的根据。若存在,用式(6)、(7)更新位置与步长;若不存在,用式(8)更新位置。
    f.用式(1)~(5)计算蜻蜓的行为度,包括f,a,c,s,ef,a,c,s,e
    g.更新XXΔXΔX
    h.终止条件的判断。如果满足终止条件,则直接跳出,同时输出最优参数组合(C,g)(C,g);如果不满足则迭代次数加1,跳转执行步骤c。

    3.算法结果

    在这里插入图片描述

    4.参考文献

    [1]Mirjalili S. Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems[J]. Neural Computing and Applications, 2016, 27(4): 1053-1073.

    [2]傅军栋,陈俐,康水华,冯奕轩.基于蜻蜓算法和支持向量机的变压器故障诊断[J].华东交通大学学报,2016,33(04):103-112.

    5.MATALAB代码

    https://mianbaoduo.com/o/bread/Z5iblJw=

    展开全文
  • 文章目录第十一章 鱼群优化算法11.1 介绍11.2 人工鱼群算法参考文献 第十一章 鱼群优化算法 11.1 介绍 人工鱼群算法(Artificial Fish Swarm Algorithm,AFSA)是Li Xiao-lei在2002年提出的(Yazdani, Toosi, & ...

    在这里插入图片描述

    获取更多资讯,赶快关注上面的公众号吧!

    第十一章 鱼群优化算法

    11.1 介绍

    人工鱼群算法(Artificial Fish Swarm Algorithm,AFSA)是Li Xiao-lei在2002年提出的(Yazdani, Toosi, & Meybodi, 2010)[1],目的是模仿鱼类捕食、群集、跟随、移动等行为。AFSA是基于鱼类集体向某个目标运动,并受到自然的启发,是一种并行和随机搜索算法。

    与狮子和猴子不同,在像鱼类这种动物物种中没有领导者,每个成员都有自我组织的行为。鱼对它们的群体和环境一无所知,通过相邻成员之间的数据交换在环境中随意移动,这种交互作用为鱼群优化带来了更多的复杂性。

    AFSA具有容错性和灵活性等特点,它在资源均衡、模糊聚类、数据挖掘、扩频码估计、DNA编码序列优化、信号处理、图像处理、改进神经网络、作业调度等方面有着广泛的应用。AFSA具有收敛速度快、效率高等优点,同时也存在时间复杂度高、全局搜索与局部搜索不平衡等缺点。

    鱼群觅食

    11.2 人工鱼群算法

    人工鱼(AF)是真实鱼的仿制品,用于分析和问题解释(Neshat、Sepidnam、Sargolzaei和Toosi(2012))。鱼类大多生活在食物充足的地区,它们通过跟随其他鱼类或单独寻找食物,向食物较多的地区移动。鱼类数量最多的地区通常是食物最多的。每条人工鱼的下一步行为取决于它目前的状态以及局部的环境状态,AF通过自身行为以及同伴的行为来影响环境。
    AF模型包含两个部分:变量和函数。
    变量包括:

    • X=(x1,x2,…,xn):每只AF的当前位置。
    • Visual:视距(感知距离)。
    • Xv:在某个运动中在视觉位置的状态。
    • Step:步长。
    • try_num:尝试次数。
    • δ:拥挤因子(0<δ<1)。
    • θ:拥挤参数θ∈{0,1}。
    • n:点个数(鱼的总数)。
    • di,j:人工鱼个体之间的距离di,j=‖Xi-Xj‖。

    函数包括人工鱼的各种行为:

    • AF_Prey
    • AF_Swarm
    • AF_Follow
    • AF_Move
    • AF_Leap
    • AF_Evaluate

    图1显示了一条人工鱼的视野。
    在这里插入图片描述

    图1 人工鱼的视野概念

    鱼类表现出的行为模式是:

    鱼类大多生活在食物充足的地区。

    基于这一特性,对鱼类的行为进行仿真,寻找全局最优解,这是AFSA研究的基本思路。

    函数Rand()产生一个介于0和1之间的随机数。

    AF_Prey(觅食行为):这是鱼类对食物的基本生物学行为。一般来说,鱼通过视觉感知水中食物的浓度来决定向哪移动,然后选择移动的方向。设人工鱼当前状态为Xi,在其感知范围内随机选择一个状态Xj(式(1)),如果在求极大问题中,f(Xi)<f(Xj)(或在求极小问题中,f(Xi)>f(Xj),因极大和极小问题可以互相转换,所以以下均以求极大问题讨论),则向该方向前进一步(式(2));反之,再重新随机选择状态Xj,判断是否满足前进条件;反复几次(try_num)后,如果仍不满足前进条件,则随机移动一步(式(3))。
    Xj=Xi+VisualRand()(1) {X_j} = {X_i} + Visual \cdot Rand()\tag {1}
    Xi(t+1)=Xi(t)+XjXi(t)XjXi(t)StepRand()(2) X_i^{(t + 1)} = X_i^{(t)} + \frac{{{X_j} - X_i^{(t)}}}{{\left\| {{X_j} - X_i^{(t)}} \right\|}} \cdot Step \cdot Rand()\tag 2
    Xi(t+1)=Xi(t)+StepRand()(3) X_i^{(t + 1)} = X_i^{(t)} + Step \cdot Rand()\tag 3

    AF_Prey的伪代码如下:

    function AF_Prey()
    {
    	for (i=0;i< try_num;i++)
    	{
    		式(1);
    		if(f(Xi)<f(Xj))
    			式(2);
    		else
    			式(3);
    	}
    }
    

    AF_Swarm(聚群行为):鱼群在移动的过程中会自然地成群聚集,这是一种生活习惯,可以保证群体的存在,避免危险。设人工鱼当前状态为Xi,探索当前邻域内(即di,j<Visual)的伙伴数目nf及中心位置Xc,如果nf/n<δ且f(Xc)>f(Xi),表明伙伴中心有较多的食物并且不太拥挤,则朝伙伴的中心位置方向前进一步(式(4));否则执行觅食行为。

    Xi(t+1)=Xi(t)+XCXi(t)XCXi(t)StepRand()(4) X_i^{(t + 1)} = X_i^{(t)} + \frac{{{X_C} - X_i^{(t)}}}{{\left\| {{X_C} - X_i^{(t)}} \right\|}} \cdot Step \cdot Rand()\tag 4

    AF_Swarm的伪代码如下:

    function AF_Swarm()
    {
    	nf=0;Xc=0;
    	for (j=0;j<friend_num;j++)
    	{
    		if (di,j<Visual)
    		{
    			nf++;Xc+=Xj;
    		}
    	}
    	Xc=Xc/nf;
    	if (nf/n<δ and f(Xc)>f(Xi))
    		式(4);
    	else
    		AF_Prey();
    }
    

    AF_Follow:在鱼群的移动过程中,当一条鱼或几条鱼找到食物时,附近的伙伴会迅速移动并到达食物。设人工鱼当前状态为Xi,探索当前邻域内(即di,j<Visual)的伙伴中f(Xj)为最大的伙伴Xj,nf为Xj的邻域内鱼的数量,如果nf/n<δ且f(Xj)>f(Xi),表明伙伴Xj的状态具有较高的食物浓度并且其周围不太拥挤,则朝伙伴Xj的方向前进一步(式(5));否则执行觅食行为。

    Xi(t+1)=Xi(t)+XjXi(t)XjXi(t)StepRand()(5) X_i^{(t + 1)} = X_i^{(t)} + \frac{{{X_j} - X_i^{(t)}}}{{\left\| {{X_j} - X_i^{(t)}} \right\|}} \cdot Step \cdot Rand()\tag 5

    AF_Follow的伪代码如下:

    function AF_Follow()
    {
    	fmax=-∞;
    	for (j=0;j<friend_num;j++)
    	{
    		if (di,j<Visual and f(Xj)>fmax)
    		{
    			fmax=f(Xj);Xmax=Xj;
    		}
    	}
    	nf=0;
    	for (j=0;j<friend_num;j++)
    	{
    		if (dmax,j<Visual)
    		{
    			nf++;
    		}
    	}
    	if (nf/n<δ and f(Xj)>f(Xi))
    		式(5);
    	else
    		AF_Prey();
    }
    

    AF_Move:鱼随机游动,并在更大的范围内寻找食物或同伴。

    AF_Leap:鱼停在某处,每一种AF行为都将逐渐相同,在某些迭代过程中,目标值(食物浓度)之间的差异会变小。它可能会陷入局部极值,并随机地将参数变为静止状态,从而跳出当前状态。

    Stagnation:当目标函数值在一定次数的迭代中没有变化时,就会发生停滞。

    AFSA的伪代码如下:

    Start
    	for 每条AF∈[1...f]
    		初始化Xi。
    	end for
    	将argmin f(Xi)的Xi记录在公告栏。
    	for每条AF∈[1...f]Xi(t)执行群聚行为,计算Xi,swarm。
    		对Xi(t)执行追尾行为,计算Xi,follow。
    		对Xi(t)执行觅食行为,计算Xi,prey。
    		if min(f(Xi,swarm),f(Xi,follow), f(Xi, prey))<f(Xi)then
    			Xi(t+1)=argmin (f(Xi,swarm),f(Xi,follow), f(Xi, prey));
    		end if
    	end for
    End
    

    参考文献

    1. Yazdani, D., A. Nadjaran Toosi, and M.R. Meybodi. Fuzzy Adaptive Artificial Fish Swarm Algorithm. in AI 2010: Advances in Artificial Intelligence. 2011. Berlin, Heidelberg: Springer Berlin Heidelberg.
    展开全文
  • SMO 优化算法.zip

    2019-11-06 09:52:50
    蜘蛛猴算法(Spider Monkey Optimization,SMO)是受蜘蛛猴觅食行为启发提出的一种群集智能优化算法
  • 人工智能——微粒群优化算法

    千次阅读 2020-04-30 21:03:46
    粒子群优化算法(Particle Swarm optimization,PSO)又翻译为...通常认为它是群集智能 (Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimization System, MAOS)。粒子群优化算法是由E...

    粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimization System, MAOS)。粒子群优化算法是由Eberhart博士和kennedy博士发明。

    场景假设

    一群鸟随机的寻找食物,在这个区域里面只有一块食物,所有的鸟,都不知道食物在哪里,但他们都知道当前的位置距离食物还有多远,那么寻找到食物的最优策略是什么?

    最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

    鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即找到了最优解。

    PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

    基本原理

    PSO初始化为一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解称为个体极值。另个一是整个种群目前找到的最优解,这个解称为全局极值。

    算法定义

    在n维连续搜索空间,对粒子群中的第i(1,2,3,…,m)进行定义。
    xi(k)=[x1i x2i ... xni]T: x^i(k) = [x^i_1 \ x^i_2 \ ... \ x^i_n]^T:表示搜索空间中粒子的当前位置

    pi(k)=[p1i p2i ... pni]T:fpi(k) p^i(k) = [p^i_1 \ p^i_2 \ ... \ p^i_n]^T:表示粒子至今所获得具有最优适应度f^i_p(k)的位置

    vi(k)=[v1i v2i ... vni]T: v^i(k) = [v^i_1 \ v^i_2 \ ... \ v^i_n]^T:表示该粒子的搜索方向

    如果每个粒子经历过的最优位置(pbest)记作
    pi(k)=[p1i p2i ... pni]T p^i(k) = [p^i_1 \ p^i_2 \ ... \ p^i_n]^T
    群体经历过的最优位置(gbest)记作
    pg(k)=[p1g p2g ... png]T p^g(k) = [p^g_1 \ p^g_2 \ ... \ p^g_n]^T
    这样可以得到基本的POS算法为:
    vji(k+1)=ω(k)vji(k)+φ1rand(0,a1)(pji(k)xji(k))+φ2rand(0,a2)(pjg(k)xji(k))xji(k+1)=xji(k)+vji(k+1)i=1,2,,m;j=1,2,,n; \begin{aligned} v^i_j(k+1)&=\omega(k)v^i_j(k)+\varphi_1rand(0,a_1)(p^i_j(k)- x^i_j(k))+\varphi_2rand(0,a_2)(p^g_j(k)-x^i_j(k)) \\ x^i_j(k+1)&=x^i_j(k)+v^i_j(k+1) \\ i&=1,2,\cdots,m; \\ j&=1,2,\cdots,n; \end{aligned}
    其中ω是惯性权重因子φ1,φ2是加速度常数,均为非负值。

    rand(0,a1)和 rand(0,a2)为[0,a1]、[0,a2]范围内的具有均匀分布的随机数,a1与a2为相应的控制参数。
    ω(k)vji(k) \omega(k)v^i_j(k)

    • 第一部分:是粒子在前一刻的速度;

    φ1rand(0,a1)(pji(k)xji(k)) \varphi_1rand(0,a_1)(p^i_j(k)-x^i_j(k))

    • 第二部分:为个体“认知”分量,表示粒子本身的思考,将现有的位置和曾经经历过的最优位置相比。

    φ2rand(0,a2)(pjg(k)xji(k)) \varphi_2rand(0,a_2)(p^g_j(k)-x^i_j(k))

    • 第三部分:是群体“社会”分量,表示粒子间的信息共享和互相合作。
    • φ1,φ2分别为控制个体认知分量和群体社会分量的相对贡献的学习率。
    • 随机系数增加了搜索方向的随机性和算法的多样性。

    PSO模型

    • φ1 > 0, φ2 > 0; 为PSO全模型
    • φ1 > 0, φ2 = 0; 为PSO认知模型
    • φ1 = 0, φ2 > 0; 为PSO社会模型
    • φ1 = 0, φ2 > 0 && g ≠ i; 为PSO无私模型

    算法执行过程

    1. 初始化每个粒子。在允许范围内随机设置每个粒子的初始位置和速度。
    2. 评价每个粒子的适应度。计算每个粒子的目标函数。
    3. 设置每个粒子的Pi。对于每个粒子,将其适应度与其经历的最好位置Pi进行比较,维持Pi最优。
    4. 设置全局最优值Pg。对于每个粒子,将其适应度与群体经历的最好位置Pg进行比较,位置Pg最优。
    5. 更新粒子的速度和位置。通过上面的公式。
    6. 检查终止条件。没有达到预设条件则重新从第二步开始。

    算法流程图

    在这里插入图片描述
    展开全文
  • 蜘蛛猴算法(Spider Monkey Optimization,SMO)是受蜘蛛猴觅食行为启发提出的一种群集智能优化算法,为增强蜘蛛猴算法的局部搜索性能,提出一种基于动态自适应惯性权重的SMO算法(DWSMO)。通过在惯性权重中引入...
  • 通常认为它是群集智能 (Swarm intelligence, SI) 的一种。 PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。...

    粒子群优化算法

    一、算法概念

    粒子群优化算法(Particle Swarm optimization,PSO),是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm intelligence, SI) 的一种。

    PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻离食物最近的鸟的周围区域。

    二、算法介绍

    PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

    PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

    三、算法参数分析

    1. 更改惯性权重(w=wmax-i*0.2/maxgen)
      (1) wmax=0.3,wamin=0.1

      平均最优适应度 = 2.3466755
      在这里插入图片描述
      (2) wmax=0.5,wamin=0.3

      平均最优适应度 = 1.5089013

      在这里插入图片描述

    (3) wmax=0.7,wamin=0.5

    平均最优适应度 = 2.4875382

    在这里插入图片描述

    (4) wmax=0.9,wamin=0.7

    平均最优适应度 = 2.9945103
    在这里插入图片描述

    1. 更改种群规模
      (1)sizepop=100 dim=10
      在这里插入图片描述

    (2)sizepop=200 dim=10

    在这里插入图片描述
    (3)sizepop=300 dim=10
    在这里插入图片描述
    3. 更改适应度函数维数
    (1)sizepop=200 dim=5

    在这里插入图片描述
    (2)sizepop=200 dim=10
    在这里插入图片描述

    (3)sizepop=200 dim=20
    在这里插入图片描述

    四、总结

    粒子群优化算法是一类不确定算法。不确定性体现了自然界生物的生物机制,并且在求解某些特定问题方面优于确定性算法。也是一类概率型的全局优化算法。非确定算法的优点在于算法能有更多机会求解全局最优解。

    w使粒子保持着运动惯性,使其具有扩展搜索空间的趋势,有能力探索新的区域。c1和c2代表将每个粒子推向pbest和gbest位置的统计加速项的权值。较低的值允许粒子在被拉回之前可以在目标区域外徘徊,较高的值导致粒子突然地冲向或越过目标区域。w的作用表现为针对不同的搜索问题,调整算法的全局和局部搜索能力的平衡。w较大时,具有较强的全局搜索能力;w较小时,具有较强的局部搜索能力。当w随着迭代次数的增大而减小时,粒子的原移动速度对当前移动速度的影响较小,粒子比较不容易陷入局部最优。

    算法的运行时间随着种群规模的增大而增大。当适应度函数维度较大时,函数的复杂度增大,容易陷入局部最优。

    五、代码

    1
    %% 清空环境
    clc
    clear
    
    %% 参数初始化
    %粒子群算法中的三个参数
    c1 = 1.49445;%加速因子
    c2 = 1.49445;
    w = 0.8;   %惯性权重
    %wmax = 0.1;
    %wmin = 0.3;
    
    maxgen=1000;   % 进化次s数  
    sizepop=200;   %种群规模
    
    Vmax=1;       %限制速度围
    Vmin=-1;     
    popmax=5;    %变量取值范围
    popmin=-5;
    dim=10;       %适应度函数维数
    
    func=1;       %选择待优化的函数,1为Rastrigin,2为Schaffer,3为Griewank
    Drawfunc(func);%画出待优化的函数,只画出二维情况作为可视化输出
    
    %% 产生初始粒子和速度
    for i=1:sizepop
        %随机产生一个种群
        pop(i,:)=popmax*rands(1,dim);    %初始种群
        V(i,:)=Vmax*rands(1,dim);             %初始化速度
                                         %计算适应度
        fitness(i)=fun(pop(i,:),func);   %粒子的适应度
    end
    
    %% 个体极值和群体极值
    [bestfitness bestindex]=min(fitness);
    gbest=pop(bestindex,:);   %全局最佳
    pbest=pop;                %个体最佳
    fitnesspbest=fitness;     %个体最佳适应度值
    fitnessgbest=bestfitness; %全局最佳适应度值
    
    %% 迭代寻优
    for i=1:maxgen
        
        fprintf('第%d代,',i);
        fprintf('最优适应度%f\n',fitnessgbest);
        %w=wmax-i*0.2/maxgen;
        for j=1:sizepop
            
            %速度更新
            V(j,:) = w*V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:)); %根据个体最优pbest和群体最优gbest计算下一时刻速度
            V(j,find(V(j,:)>Vmax))=Vmax;   %限制速度不能太大
            V(j,find(V(j,:)<Vmin))=Vmin;
            
            %种群更新
            pop(j,:)=pop(j,:)+0.5*V(j,:);       %位置更新
            pop(j,find(pop(j,:)>popmax))=popmax;%坐标不能超出范围
            pop(j,find(pop(j,:)<popmin))=popmin;
            
            if rand>0.98                         %加入变异种子,用于跳出局部最优值
                pop(j,:)=rands(1,dim);
            end
            
            %更新第j个粒子的适应度值
            fitness(j)=fun(pop(j,:),func); 
       
        end
        
        for j=1:sizepop
            
            %个体最优更新
            if fitness(j) < fitnesspbest(j)
                pbest(j,:) = pop(j,:);
                fitnesspbest(j) = fitness(j);
            end
            
            %群体最优更新
            if fitness(j) < fitnessgbest
                gbest = pop(j,:);
                fitnessgbest = fitness(j);
            end
        end 
        yy(i)=fitnessgbest;    
            
    end
    %% 结果分析
    %figure;
    plot(yy)
    title('最优个体适应度','fontsize',12);
    xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
    
    
    
    展开全文
  • 人工蜂群算法优化

    2018-08-27 20:43:40
    人工蜂群算法(ABC)是一种模拟蜜蜂采蜜行为的群集智能优化算法,它为解决存在于科学领域的全局优化问题提供了一种新的方法。由于它具有控制参数少、易于实现、计算简单等优点,已经被越来越多的研究者所关注。
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家JamesKennedy和电气工程师RussellEberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化算法

    2019-12-03 20:49:02
    简介 粒子群优化算法(Particle Swarm optimization,PSO)又翻译为...通常认为它是群集智能 (Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimization System, MAOS).粒子群优化算法...
  • 智能算法-简单介绍

    千次阅读 2020-07-06 13:13:15
    群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。 群体智能优化算法的突出特点...
  • Tony White结合群集智能的思想,以及蚂蚁觅食的特点,设计了蚁群路由系统,它具有正反馈、分布式计算、贪婪启发等特点,已在许多问题中得到成功的应用。讨论了供应网络的模型和蚁群路由算法在适应性供应网络的应用。
  • 地址抽取是信息采集研究的热点,但是如何保证高...这个不断迭代的过程就是基于群集智能的ACG算法流程,最后再通过组合多个分类器的结果形成最终结果。实验表明,该方法可以把召回率和准确率分别提高到96.44%和97.73%。
  • 经典的PSO算法,是一种基于种群的随机优化技术,粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物。适用于入门学习。通过判断粒子停滞状态,陷入局部最优时重启粒子继续搜索...
  • 简介粒子群算法(Particle Swarm optimization...通常认为它是群集智能 (Swarm intelligence, SI) 的一种。算法思想通过模拟鸟群的捕食过程,把每只鸟看成PSO算法中的一个粒子,也就是我们需要求解问题的可行解。整个...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm ...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出。自PSO诞生以来,它在许多方面都得到了改进,这一部分将介绍基本的粒子群优化算法原理和...
  • pso 粒子群算法 ppt

    2011-05-11 15:00:28
    粒子群算法ppt,内容有 群集智能算法基本思想 PSO基本算法 PSO标准算法 PSO收敛性 PSO改进算法 PSO应用 pso不确定优化 pso求解约束优化问题
  • 群体智慧算法

    千次阅读 2013-05-14 22:42:29
    粒子群优化算法  粒子群优化算法(Particle Swarmoptimization,PSO)又翻译为粒子群...通常认为它是群集智能(Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent OptimizationSystem, MAOS).粒
  • 改进的混沌蚂蚁群算法,葛方振,魏臻,混沌蚂蚁群算法(CAS)是一种新型的、基于群集智能的全局搜索优化算法,然而其对复杂的、大规模问题搜索问题往往失效,对高维优化问�
  • 近年来,智能仿生算法因其群集智慧和生物择优特性而被广泛应用于移动机器人路径规划优化中。首先,按照智能仿生算法仿生机制的来源,对应用于路径规划优化中的智能仿生算法进行了分类。然后,按照不同的类别,系统的叙述...
  • 2.1蚁群算法的基本原理 蚁群优化算法是模拟蚂蚁觅食的原理 设计出的一种群集智能算法蚂蚁在 觅食过程中能够在其经过的路径上留下一种称之为信息素的物质 并在觅食过程 中能够感知这种物质的强度并指导自己行动方向...
  • GUI, 四月结粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 ...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
热门标签
关键字:

群集智能优化算法