精华内容
下载资源
问答
  • 引力搜索算法

    2017-11-21 11:42:21
    引力搜索算法在2009年被首次提出,是一种基于万有引力定律和牛顿第二定律的种群优化算法。该算法通过种群的粒子位置移动来寻找最优解,即随着算法的循环,粒子靠它们之间的万有引力在搜索空间内不断运动,当粒子移动...
  • 引力搜索算法的改进

    2018-03-27 08:55:32
    引力搜索算法GSA(Gravitational Search Algorithm):黾.最近由Esmat Rashedi基于引力定律提出的一个新算法。在引力搜索算法的基础上对其进行改进,得到了基于权值的引力搜索算法。与引力搜索算法相比,该算法在每一...
  • 引力搜索算法 (GSA) 是一种基于引力和质量相互作用定律的优化算法。该算法基于牛顿引力:“宇宙中的每个粒子都以与它们的乘积成正比的力吸引其他每个粒子。它们的质量与它们之间距离的平方成反比”。
  • 分享了引力搜索算法的源代码及原文,亲测有效,欲求更多算法可进入空间查看
  • 然后,引入免疫克隆选择机制,以便算法能够有效跳出局部最优,并通过对12个基准测试函数的实验验证改进引力搜索算法的有效性和优越性;最后,通过结合改进的引力搜索算法和K-means算法,提出一种新的聚类算法A2F-GSA...
  • MATLAB源码集锦-基于引力搜索算法的函数优化分析
  • 针对基本引力搜索算法搜索速度慢和容易出现早熟的缺点,提出了一种基于信息熵的混合引力搜索算法。受粒子群算法的启发,所提算法通过改进基本引力搜索算法的速度和位置更新式来提高搜索速度;通过惯性质量构造了信息...
  • 基于引力搜索算法的函数优化分析.zip
  • 以均衡簇头节点的能耗为目标,采用引力搜索算法对网络簇头的通信链路进行规划,从而降低簇头节点间通信的负载能耗.为同时兼顾普通节点和簇头节点的工作时间,根据普通节点与高能节点携带能量的差异和簇头节点的负载情况...
  • 智能优化算法:引力搜索算法-附代码 文章目录智能优化算法:引力搜索算法-附代码1.算法原理2.算法结果3.参考文献4.Matlab代码 摘要:万 有 引 力 搜 索 算 法 (gravitational searchalgorithm,GSA) 由伊朗的 Esmat ...

    智能优化算法:引力搜索算法-附代码


    摘要:万 有 引 力 搜 索 算 法 (gravitational searchalgorithm,GSA) 由伊朗的 Esmat Rashedi 教授等人提出,该算法是基于牛顿万有引力定律的一种元启发式智能优化算法,能够用于解决优化问题。

    1.算法原理

    引力搜索算法利用物体间的万有引力定律搜索最优解,全局优化能力突出。设 n n n 维空间引力系统中有 N N N个粒子,定义第 i i i 个粒子位置为 X i = x i 1 , . . . , x i d , . . . , x i n , ( i = 1 , 2 , . . . , N ) X_i={x_i^1,...,x_i^d,...,x_i^n},(i=1,2,...,N) Xi=xi1,...,xid,...,xin,(i=1,2,...,N)。其中: x i d x^d_i xid为第 i i i 个粒子在第 d d d 维中位置。GSA 算法流程见图 1。

    在这里插入图片描述

    图1 算法流程图

    粒子 i i i t t t 时刻质量 M i ( t ) M_i (t) Mi(t)为:
    m i ( t ) = f i t i ( t ) − w o r s t ( t ) b e s t ( t ) − w o r s t ( t ) (1) m_i(t)=\frac{fit_i(t)-worst(t)}{best(t)-worst(t)}\tag{1} mi(t)=best(t)worst(t)fiti(t)worst(t)(1)

    M i ( t ) = m i ( t ) ∑ j = 1 N m j ( t ) (2) M_i(t)=\frac{m_i(t)}{\sum_{j=1}^Nm_j(t)}\tag{2} Mi(t)=j=1Nmj(t)mi(t)(2)

    式中: f i t i ( t ) fit_i(t) fiti(t)为在 t t t 时刻粒子 i i i的适应度函数值。

    如求解适应度函数极小值,则
    b e s t ( t ) = m i n   f i t j ( t ) (3) best(t) = min\,fit_j(t)\tag{3} best(t)=minfitj(t)(3)

    w o r s t ( t ) = m a x   f i t j ( t ) (4) worst(t) = max\,fit_j(t)\tag{4} worst(t)=maxfitj(t)(4)

    在第 d d d 维空间上,第 i i i 个粒子受第 j j j 个粒子作用力为:
    F i j d ( t ) = G ( t ) M i ( t ) M j ( t ) ∣ ∣ X i ( t ) , X j ( t ) ∣ ∣ 2 + ε [ x j d ( t ) − x i d ( t ) ] (7) F_{ij}^d(t) = G(t)\frac{M_i(t)M_j(t)}{||X_i(t),X_j(t)||_2+\varepsilon}[x_j^d(t)-x_i^d(t)]\tag{7} Fijd(t)=G(t)Xi(t),Xj(t)2+εMi(t)Mj(t)[xjd(t)xid(t)](7)
    式中: ε \varepsilon ε 为接近 0 的常量; G ( t ) G(t) G(t) t t t 时刻引力常数。
    G ( t ) = G 0 e − a t / T (8) G(t) = G_0e^{-at/T}\tag{8} G(t)=G0eat/T(8)
    式中: G 0 = 100 ; a = 20 G_0 =100;a =20 G0=100;a=20; T T T 为迭代次数。

    在第 d d d 维空间上,第 i i i个粒子受其它粒子引力合力作用,用各粒子引力的随机加权和表示,即:
    F i d ( t ) = ∑ j = 1 , j ≠ i N r a n d F i j d ( t ) (9) F_i^d(t)=\sum_{j=1,j\neq i}^N randF_{ij}^d(t)\tag{9} Fid(t)=j=1,j=iNrandFijd(t)(9)
    式中: r a n d rand rand 为范围在[0,1]间任意数。

    基于牛顿第二定理,在第 d d d 维空间上粒子 i i i 在引力合力作用下加速度为:
    a i d ( t ) = F i d ( t ) / M i ( t ) (10) a_i^d(t) = F_i^d(t)/M_i(t)\tag{10} aid(t)=Fid(t)/Mi(t)(10)
    G S A GSA GSA 中,粒子 i i i 更新在第 d d d维空间位置 x i d ( t ) x^d_i (t) xid(t)及速度 v i d ( t ) v^d_i (t) vid(t)以实现迭代过程,速度及位置更新式为:
    v i d ( t + 1 ) = r a n d v i d ( t ) + a i d ( t ) (11) v_i^d(t+1)=randv_i^d(t)+a_i^d(t)\tag{11} vid(t+1)=randvid(t)+aid(t)(11)

    x i d ( t + 1 ) = x i d ( t ) + v i d ( t + 1 ) (12) x_i^d(t+1)=x_i^d(t)+v_i^d(t+1)\tag{12} xid(t+1)=xid(t)+vid(t+1)(12)

    2.算法结果

    在这里插入图片描述

    3.参考文献

    [1] Esmat R,Hossein N,Saeid S.GSA:A gravitational search algorithm[J].Inform Sci,2009,179(13):2232-2248.

    [2] 刘永前, 徐强, Infield D , et al. 基于引力搜索神经网络的风电机组传动链故障识别[J]. 振动与冲击, 2015, 34(2):134-137.

    4.Matlab代码

    个人资料介绍

    展开全文
  • 引入粒子群算法改进的引力搜索算法,带有测试函数,可直接运行测试
  • 引力搜索算法是近年提出的一种颇具潜力的全局优化算法,已经成功应用到了各种工程实践中,然而它在求解复杂工程优化问题时容易出现早熟收敛问题。为了在一定程度上避免早熟收敛现象,提出一种应用精英反向学习策略的...
  • 提出一种基于数据场的多目标引力搜索算法(DFMOGSA). 该算法利用外部档案存储非支配解, 同时将外部档案视为目标空间的数据场, 通过计算非支配解的势能来判断每个解的密度; 密度最低的解被选为第1类引导粒子, 直接吸引...
  • 基于改进引力搜索算法的K-means聚类.pdf
  • 针对引力搜索算法求解复杂问题时搜索精度不高、易出现早熟收敛问题,提出一种引入复合形法的改进引力搜索算法。该算法在寻优初期利用引力搜索算法进行全局搜索,同时对引力系数进行改进,以提高全局收敛速度;在寻优...
  • 讲粒子群与引力搜索算法相结合,避免陷入局部最优,并且对函数进行测试,数值试验表明,PSOGSA具有较好的性能。
  • 完整的引力搜索算法优化支持向量机GSA-SVM的matlab代码,可以直接运行,稍作修改就可以改为自己想要的程序,有详细的注释,简单易懂
  • 优化算法之引力搜索算法

    万次阅读 2017-03-04 17:06:46
    优化算法之引力搜索算法(gravitational search algorithm),主要是利用两物体之间的引力定律进行指导各个粒子的运动优化搜索最优解的,两个粒子之间的引力与两个粒子的质量成正比,与两粒子之间的距离成反比

    优化算法之引力搜索算法(gravitational search algorithm),主要是利用两物体之间的引力定律进行指导各个粒子的运动优化搜索最优解的,两个粒子之间的引力与两个粒子的质量成正比,与两粒子之间的距离成反比,该优化算法中引力及其相关参数的计算公式如下:这里写图片描述
    每个粒子在各个方向(维度)上受到的引力是所有比该粒子优秀(适应度值优)的粒子在该方向上的引力的数量之和,G表示引力常数,它与种群进化代数相关。这里的Rij是指两个粒子i、j的欧氏距离。
    M表示粒子的惯性质量,大小与粒子的适应度值大小相关,计算公式如下
    这里写图片描述
    公式中的best和worst表示t代时适应度值的最优值和最差值,a表示各个粒子在每个维度方向上的加速度,像物理学中的运动学定律一样,在某个方向的引力会产生一个加速度,进而影响速度,使粒子的位置发生改变,粒子的位置更新公式如下:
    这里写图片描述
    GSA的流程如下:
    1、初始化各个参数和种群位置
    2、计算适应度值、
    3、计算粒子的惯性质量、每个粒子的在每个方向的引力、加速度
    4、更新每个粒子的位置及适应度值和全局最优值
    5、达到终止条件就结束,输出最优解,否则就返回步骤3进入下一轮迭代

    参考文献:
    http://d.wanfangdata.com.cn/Periodical/jsjgcyyy201135053

    展开全文
  • 引力搜索算法是模拟万有引力定律进行搜索的一种新颖的优化算法,已有研究表明该算法比传统的一些优化算法拥有较好的收敛性能,但该算法在局部搜索能力上有所欠缺。提出一种基于惯性递减权重的引力搜索算法(gGSA),...
  • 基于引力搜索算法的电力系统无功优化.pdf
  • 引力搜索算法是近年提出的一种颇具潜力的全局优化算法,已经成功应用到了各种工程实践中,然而它在求解复杂工程优化问题时容易出现早熟收敛问题。为了在一定程度上避免早熟收敛现象,提出一种应用精英反向学习策略的...
  • 基于三值引力搜索算法的图平面化问题优化
  • 第24章 基于引力搜索算法的函数优化分析.ppt
  • 文章目录第三十一章 引力搜索算法(Gravitational Search Algorithm,GSA)万有引力定律GSA 第三十一章 引力搜索算法(Gravitational Search Algorithm,GSA) 2009,伊朗的Esmat Rashedi等人基于万有引力定律和粒子...

    在这里插入图片描述
    获取更多资讯,赶快关注上面的公众号吧!

    第三十一章 引力搜索算法(Gravitational Search Algorithm,GSA)

    2009,伊朗的Esmat Rashedi等人基于万有引力定律和粒子间相互作用提出了一种新型的优化算法——引力搜索算法(Gravitational Search Algorithm,GSA)。在该算法中,在提出的算法中,搜索代理是基于牛顿引力和运动定律相互作用的粒子集合。算法源代码可以关注公众号,后台回复"GSA或引力"获取。

    万有引力定律

    万有引力,全称为"万有引力定律"(law of universal gravitation),为物体间相互作用的一条定律,1687年为牛顿所发现。任何物体之间都有相互吸引力,这个力的大小与各个物体的质量成正比例,而与它们之间的距离的平方成反比。如果用 M 1 M_1 M1 M 2 M_2 M2表示两个物体的质量, R R R表示它们间的距离,则物体间相互吸引力为
    F = ( G M 1 M 2 ) / R ² (1) F=(GM_1M_2)/R²\tag{1} F=GM1M2/R²(1)
    G G G称为万有引力常数也可简称为引力常数。

    牛顿第二定律说的是,当一个力 F F F作用于一个粒子时,其加速度 a a a仅取决于该力和其质量 M M M
    a = F / M (2) a=F/M \tag{2} a=F/M(2)

    此外,由于引力递减的影响,引力常数的实际值取决于宇宙的实际年龄,下面给出了引力常数随着年龄的递减方程:
    G ( t ) = G ( t 0 ) × ( t 0 t ) β , β < 1 (3) G(t)=G\left(t_{0}\right) \times\left(\frac{t_{0}}{t}\right)^{\beta}, \quad \beta<1\tag{3} G(t)=G(t0)×(tt0)β,β<1(3)

    在理论物理学中,存在三种质量:

    • 主动引力质量 M a M_a Ma:决定物体产生的引力场的强弱;
    • 被动引力质量 M − P M-P MP:决定物体在处于其他引力场时受到的引力大小;
    • 惯性质量 M i M_i Mi:用于度量施加外力时运动状态不易改变的程度。

    根据以上描述,可以重写牛顿定律。质量 j j j作用于质量 i i i的引力 F i j F_{ij} Fij与主动引力质量 j j j和被动引力质量 i i i的乘积成正比,与它们的距离平方成反比。 a i a_i ai F i j F_{ij} Fij成正比,与 i i i的惯性质量成反比,即

    F i j = G M a j × M p i R 2 (4) F_{i j} =G \frac{M_{a j} \times M_{p i}}{R^{2}} \tag{4} Fij=GR2Maj×Mpi(4)

    a i = F i j M i i (5) a_{i} =\frac{F_{i j}}{M_{i i}} \tag{5} ai=MiiFij(5)
    其中 M a j M_{a j} Maj M p i M_{pi} Mpi分别表示粒子 i i i的主动引力质量和粒子 j j j的被动引力质量。 M i i M_{ii} Mii为粒子 i i i的惯性质量。

    GSA

    在GSA中,代理即为物体,其性能由它们的质量进行度量。所有这些物体都受到引力的吸引,这个引力导致所有物体都朝着质量更重的物体运动。较重的质量——对应于好的解——比较轻的解移动得更慢,这保证了对算法进行利用。

    每个质量(代理)有4个属性:位置,惯性质量,主动引力质量和被动引力质量。随着时间的推移,质量期望被最大质量吸引,而这个最大质量就表达了搜索空间中的一个最优解。

    GSA可以看成是一个孤立的质量系统,各个质量满足以下定律:

    • 引力定律:每个粒子吸引其他粒子,两个粒子之间的引力成与质量的乘积成正比,而与它们之间的距离 R R R成反比。在这里使用 R R R代替 R 2 R^2 R2,因为根据实验结果, R R R R 2 R^2 R2在所有实验情况下能提供更好的结果。
    • 运动定律:任何质量的速度变化或加速度等于作用在系统上的力除以惯性质量。

    下面,考虑一个具有 N N N个代理(质量)的系统,第 i i i个代理的位置定义为:
    X i = ( x i 1 , … , x i d , … , x i n )  for  i = 1 , 2 , … , N (6) X_{i}=\left(x_{i}^{1}, \ldots, x_{i}^{d}, \ldots, x_{i}^{n}\right) \quad \text { for } i=1,2, \ldots, N\tag{6} Xi=(xi1,,xid,,xin) for i=1,2,,N(6)
    其中, x i d x_{i}^{d} xid表示第 i i i个代理在第 d d d个维度上的位置。

    在某一时刻 t t t,将质量 j j j作用于质量 i i i的力定义为:
    F i j d ( t ) = G ( t ) M p i ( t ) × M a j ( t ) R i j ( t ) + ε ( x j d ( t ) − x i d ( t ) ) (7) F_{i j}^{d}(t)=G(t) \frac{M_{p i}(t) \times M_{a j}(t)}{R_{i j}(t)+\varepsilon}\left(x_{j}^{d}(t)-x_{i}^{d}(t)\right)\tag{7} Fijd(t)=G(t)Rij(t)+εMpi(t)×Maj(t)(xjd(t)xid(t))(7)
    其中, M a j M_{a j} Maj为代理 j j j的主动引力质量, M p i M_{pi} Mpi为代理 i i i的被动引力质量。 G ( t ) G(t) G(t) t t t时刻的引力常量。 ε \varepsilon ε为一很小的常量, R i j ( t ) R_{ij}(t) Rij(t)为代理 i i i j j j之间的欧式距离:

    R i j ( t ) = ∥ X i ( t ) , X j ( t ) ∥ 2 (8) R_{i j}(t)=\left\|X_{i}(t), X_{j}(t)\right\|_{2}\tag{8} Rij(t)=Xi(t),Xj(t)2(8)

    为了在算法中引入随机特征,假设作用于代理 i i i维度 d d d上的总力为其他代理施加的力在第 d d d维度上的随机加权和:

    F i d ( t ) = ∑ j = 1 , j ≠ i N rand ⁡ j F i j d ( t ) (9) F_{i}^{d}(t)=\sum_{j=1, j \neq i}^{N} \operatorname{rand}_{j} F_{i j}^{d}(t) \tag{9} Fid(t)=j=1,j=iNrandjFijd(t)(9)
    其中 rand ⁡ j \operatorname{rand}_{j} randj [ 0 , 1 ] [0,1] [0,1]之间的随机数。

    因此,根据运动定律,代理 i i i在时刻 t t t,第 d d d维上的加速度 a i d ( t ) a^d_i(t) aid(t)为:
    a i d ( t ) = F i d ( t ) M i i ( t ) (10) a_{i}^{d}(t)=\frac{F_{i}^{d}(t)}{M_{i i}(t)} \tag{10} aid(t)=Mii(t)Fid(t)(10)

    那么,代理 i i i的下一速度被认为是部分当前速度加上其加速度,从而可以得到其速度和位置计算公式:

    v i d ( t + 1 ) = rand ⁡ i × v i d ( t ) + a i d ( t ) (11) v_{i}^{d}(t+1)=\operatorname{rand}_{i} \times v_{i}^{d}(t)+a_{i}^{d}(t)\tag{11} vid(t+1)=randi×vid(t)+aid(t)(11)
    x i d ( t + 1 ) = x i d ( t ) + v i d ( t + 1 ) (12) x_{i}^{d}(t+1)=x_{i}^{d}(t)+v_{i}^{d}(t+1)\tag{12} xid(t+1)=xid(t)+vid(t+1)(12)
    其中 rand ⁡ i \operatorname{rand}_{i} randi [ 0 , 1 ] [0,1] [0,1]内的均匀随机变量。

    算法开始时先对引力常数 G G G进行初始化,然后随着时间递减以控制搜索精度:
    G ( t ) = G ( G 0 , t ) (13) G(t)=G(G_0,t)\tag{13} G(t)=G(G0,t)(13)

    引力质量和惯性质量均通过适应度评估计算得到,质量越大代理越优,代理吸引力越强,行走的也越慢。假设引力质量和惯性质量是等效的,则质量按下式进行更新:

    M a i = M p i = M i i = M i , i = 1 , 2 , … , N (14) M_{a i}=M_{p i}=M_{i i}=M_{i}, \quad i=1,2, \ldots, N\tag{14} Mai=Mpi=Mii=Mi,i=1,2,,N(14)

    m i ( t ) = f i t i ( t ) − w o r s t ( t ) b e s t ( t ) − w o r s t ( t ) (15) m_{i}(t)=\frac{f i t_{i}(t)-w o r s t(t)}{b e s t(t)-w o r s t(t)}\tag{15} mi(t)=best(t)worst(t)fiti(t)worst(t)(15)

    M i ( t ) = m i ( t ) ∑ j = 1 N m j ( t ) (16) M_{i}(t)=\frac{m_{i}(t)}{\sum_{j=1}^{N} m_{j}(t)}\tag{16} Mi(t)=j=1Nmj(t)mi(t)(16)

    在探索和利用之间实现良好折衷的一种方法是在(9)中,随着时间的推移减少agent的数量。因此,建议只有一组质量较大的agent对其他代理施加其力。

    为了避免陷入局部最优,算法必须在开始时使用探索。随着迭代的推移,探索逐渐减弱而利用逐渐增强。为了通过控制探索和利用来提高GSA的性能,只有 K b e s t Kbest Kbest个最优代理才能吸引其他代理。 K b e s t Kbest Kbest是时间的函数,初始值为 K 0 K0 K0,随时间减小。以这种方式,开始时,所有的代理都施加力,随着时间的推移, K b e s t Kbest Kbest线性地减少,最后只有一个代理施加于其他代理。因此,等式(9)可以修改为:
    F i d ( t ) = ∑ j ∈ K b e s t , j ≠ i rand ⁡ j F i j d ( t ) (17) F_{i}^{d}(t)=\sum_{j \in Kbest, j \neq i} \operatorname{rand}_{j} F_{i j}^{d}(t)\tag{17} Fid(t)=jKbest,j=irandjFijd(t)(17)

    其中 K b e s t Kbest Kbest为前 K K K个最优代理。

    GSA算法流程图

    算法中的各个参数可以参考源代码中的设置,赶快关注公众号,后台回复"GSA或引力"吧。

    展开全文
  • 以优化SVM算法的参数c和g为例,对GSA(引力搜索算法)MATLAB源码进行了详细中文注解。是很好的学习材料。
  • 引力搜索算法(GSA)基础上,结合PSO算法中粒子的运动特点,提出了改进引力搜索算法(IGSA),并将其应用到励磁控制系统PID参数优化.IGSA嵌入了引力搜索和粒子群搜索,使其在保留引力搜索特点的前提下增加了信息共享及记忆...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,217
精华内容 486
关键字:

引力搜索算法