引力搜索算法

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

一、启发式算法
启发式是寻找好的(近似最佳)解的技术。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称为启发式算法。启发式算法是相对于最优化算法提出的。很多实际的最优化问题的计算是复杂的。因此,解决这样问题的实际方法是运用启发式算法,这样可以在合理的计算时间内找到一个近似最优解。
启发式算法可以这样定义:一个基于直观或经验构造的算法在可接受的花费(计算时间和空间)下给出解决组合优化问题每一个实例的一个可行解该可行解与最优解的偏离程度一般不能被预计。
在一些随机算法中,像模拟退火算法(SA)搜索开始于一个单一的初始点,并且以一个连续的方式继续。然而,大多数启发式搜索算法用多个初始点以并行方式搜索。例如,群为基础的算法使用类似于自然的鸟群或者鱼群的一系列代理。
在一个以群为基础的算法,每一个体施行一系列的特殊运算,并且分享这些信息给其他个体。这些操作大部分很简单,然而它们的集体效应,称为群体智能,会产生令人惊讶的结果。代理之间的局部相互作用提供了一个全局结果,它允许系统解决问题不需要应用任何的中央控制器。这种情况下,个体
操作包括随机搜索、正反馈、负反馈和多元相互作用,进行自组织。群体智能指许多简单个体通过相互合作产生复杂智
能行为的特性。

从不同的角度来看,一个以群为基础的搜索算法的个体在每次迭代中通过三个步骤来实现勘探和开采概念:自适应,合作和竞争。在自我调整的步骤,每个个体(代理)提高其性能。在合作中,个体彼此合作形成的信息传递。最后,在竞争的一步,个体竞争生存。这些步骤通常随机形成,可以用不同的方式来实现。这些步骤从自然的启发,是以人群为基础的启发式算法的思想。这些概念,引导算法寻找全局最优。然而,一个算法在解决一些问题是好的,在解决另外一些问题则不行。因此,提出高性能的新启发式算法是非常受欢迎的。我们的目标是建立一个新的考虑到所提到的方面和基于引力规则的以群为基础的搜索算法。

二、万有引力定律
万有引力定律是Newton于1687年在《自然哲学的数学原理》上提出的, 万有引力定律解释物体之间相互作用关系的定律,是物体间由于它们的引力质量而引起的相互吸引力所遵循的规律。自然界中任何两个物体都是相互吸引的,万有引力普
遍存在于任意两个有质量的物体之间。万有引力定律表示如下:
自然界中任何两个物体都是相互吸引的,引力的大小和这两个
物体的质量的乘积成正比,和它们之间距离平方成反比。
数学表达式为:
在这里插入图片描述

其中,F表示两个物体间的引力大小,G表示万有引力常数,M1,M2分别表示两个物体的质量,R表示两个物体之间的距离。

牛顿第二定律:
当一个力F作用在一个质子上,它的加速度a 依赖于力和它的质量M:
a=F/M
根据(1)和(2),增加两个质子之间的距离意味着减少他们之间的万有引力。
此外,由于引力减少的影响,引力常数的实际值依赖于宇宙的实际时间,方程(3)给出了降低引力常数与时间关系:
在这里插入图片描述

其中G(t)是在时间t引力常数的值,G(t,)是在tg时万有 引力常数。

三、引力质量
任何物体都具有吸引其他物体的性质,引力质量是物体这种性质的量度。选定两质点A和B,先后测量它们各自与质点C的引力FAC和FBC。实验发现,只要距离AC和BC相等,则不论这距离的大小如何,也不论质点C是什么物体,力FAC和FBC的比值FAC/FBC是一个常数。该结果表明,FAC/FBC之值仅由质点A和B本身的性质决定。物理学中规定A、B两质点引力质量之比等于力FAC与FBC之比。若用mA及mB分别表示A、B两质点的引力质量,则mA/mB=FAC/FBC,选取其中一质点的引力质量作为引力质量的单位后,另一质点的引力质量可通过实验由上式确定。通常取保存在国际计量局中的国际千克原器的引力质量为单位,称为“千克”。

引力质量分为两种,主动引力质量和被动引力质量,前者决定物体产生的引力场的强弱,后者决定物体在处于其他引力场时受到的引力大小。

主动引力质量:在这里插入图片描述
是对物体重力场的强度的测量,小的主动引力质量的物体的重力场比大的主动引力质量的重力场弱。
被动引力质量:在这里插入图片描述
是对物体重力场中物体相互作用的强度的测量,小的被动被动引力质量的物体比大的被动引力质量的物体受到的力小。
惯性质量:在这里插入图片描述
是当有一个力作用在物体,改变她位置的移动的力的测量,大的惯性质量的物体改变它移动的更慢,小的惯性改变快。

考虑到以上提到的三种质量定义,我们重新定义牛顿定律。
在这里插入图片描述
【注意】牛顿第二定律里的质量为惯性质量,万有引力定律中的质量为引力质量。
在这里插入图片描述
四、引力搜索算法
受万有引力定律启发,提出了一种新型群体智能优化算法——引力搜索算法。引力搜索算法在求解优化问题时,搜索个体的位置和问题的解相对应,并且还要考虑个体质量。个体质量用于评价个体的优劣,位置越好,质量越大。由于引力的作用,个体之间相互吸引并且朝着质量较大的个体方向移动,个体运动遵循牛顿第二定律。随着运动的不断进行,最终整个群体都会聚集在质量最大个体的周围,从而找到质量最大的个体,而质量最大个体占据最优位置。
因此,算法可以获得问题的最优解。在GSA,每个代理有4个规格:位置,惯性质量,主动引力质量和被动引力质量。每个个体的位置对应一个问题的解决方法,它们的引力和惯性质量确定应用的适应度函数。换句话说,每个个体呈现一个解决方法,并且算法通过适当的调节引力和惯性质量。
引力搜索算法属于群体智能优化算法,而群体智能优化算法最显著的特点是强调个体之间的相互作用。这里,相互作用可以是个体间直接或间接的通信。在引力搜索算法中,万有引力相当于是一种信息传递的工具,实现个体间的优化信息共享,整个群体在引力的作用下进行优化搜索。信息的交互过程不仅在群体内部传播了信息,而且群体内所有个体都能处理信息,并根据其所得到的信息改变自身的搜索行为,这样就能使得整个群体涌现出一些单个个体所不具备的能力和特性,也就是说,在群体中,个体行为虽然简单,但是个体通过得到的信息相互作用以解决全局目标,信息在整个群体的传播使得问题能够比由单个个体求解更加有效的获得解决。
在这里插入图片描述
在这里插入图片描述
【注意】这里的质量为惯性质量,累加的符号下标应该为j
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引力搜索算法的目的并不是为了模拟万有引力定律,而是利用万有引力定律的特点去解决优化问题。算法受万有引力定律的启发,但是不拘泥于万有引力公式的原始表达式。在算法中引力与两个个体质量的乘积成正比和它们的距离成反比的优化效果更好。此外,万有引力常数不在固定不变,而是随着迭代次数单调递减,算法的优化效果更好。在计算个体受到的万有引力合力时,算法只考虑质量较大的个体产生的引力。因为在引力搜索算法中,当引力较大时,或者有质量较大的个体,或者两个个体间的距离较小。质量大的个体占据较优的位置,并且代表较好的解。算法仅考虑来自质量较大的个体的引力,可以消除因距离较小而引力较大的影响,引导其他个体向质量较大的个体方向移动。在引力的不断作用下,整个群体逐渐向质量较大的个体方向逼近,最终搜索到问题的最优解。

五、算法执行步骤
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了ASPH(自适应平滑粒子流体动力学)算法,该算法提供了可以在Python中编写脚本的用户界面。因此,可以使用Python编写自适应引力搜索算法。具体来说,可以使用Python编写一个脚本,实现自适应引力搜索算法的逻辑和计算过程。 编写自适应引力搜索算法的Python脚本需要首先导入相关的库和模块,例如numpy用于数值计算和矩阵操作,random用于生成随机数等。然后,需要定义适应度函数和限制条件函数,并根据GSA算法中的公式来计算个体属性的更新。在每一次迭代中,可以使用随机性启发式搜索方法来更新个体属性。 在Python脚本中,可以使用循环结构来进行多次迭代,直到达到预设的终止条件。在每一次迭代中,根据定义好的适应度函数和限制条件函数,计算个体属性的更新,并更新全局最优解。 最后,可以将编写好的自适应引力搜索算法的Python脚本运行,根据问题的具体需求和输入数据,得到搜索结果和优化的解。 需要注意的是,自适应引力搜索算法的具体实现可能因问题的不同而有所区别,因此在编写Python脚本时,需要根据具体问题的要求进行相应的调整和修改。 综上所述,可以使用Python编写自适应引力搜索算法的脚本,根据GSA算法的原理和公式来进行个体属性的更新,并通过多次迭代来优化问题的解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值