• 引力搜索算法(Gravitational_Search_algorithm,GSA)附matlab代码


     ​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

    智能优化算法  神经网络预测 雷达通信  无线传感器

    信号处理 图像处理 路径规划 元胞自动机 无人机

    ⛄ 内容介绍

    GSA是2009年提出的一种新型的启发式群智能优化算法,具有全局搜索能力强、收敛速度快等优点。在GSA中,种群粒子相当于空间中运动的个体,这些个体在万有引力的作用下彼此吸引、运动,个体的质量是评价粒子好坏的标准,质量越大的个体吸引其他粒子的能力越强,即表示其对应的解更好,整个种群凭借粒子相互间力的作用相互运动实现信息的共享,并朝着最优区域展开搜索。

    设空间中有N个粒子,第i个粒子表示如下:

    X_{i}=\left(x_{i}^{1}, \cdots, x_{i}^{k}, \cdots, x_{i}^{n}\right), i=1,2, \cdots, N .

    。其中:n为搜索空间的维数,x_{i}^{k}为第个粒子在第维上的位置信息。t时刻两个粒子间的作用力表示为

    F_{i j}^{k}(t)=G(t) \frac{M_{p i}(t) \times M_{a j}(t)}{R_{i j}(t)+\varepsilon}\left(x_{j}^{k}(t)-x_{i}^{k}(t)\right) .

    其中:M_{a j}(t)M_{p i}(t)分别为粒子j和粒子i的质量;e为一个极小的常量;为R_{i j}(t)粒子i与粒子j之间的欧氏距离;G(t)为t时刻的万有引力常数,其具体定义如下:

    G(t)=G_{0} \times \mathrm{e}^{-a t / T} 

    其中: T 为进化参数, G0为初始时刻的引力常数. 在t 时刻,粒子ik维上受到的其他粒子的合力F_{i}^{k}(t)

    F_{i}^{k}(t)=\sum_{j=1, j \neq i}^{N} \operatorname{rank}_{j} F_{i j}^{k}(t)

    其中\operatorname{rank}_{j}为变化区间[0 1]在之间的随机数,为Fki(t)粒子对粒子i在第k维上的作用力。依据牛顿第二定律,定义时刻粒子在维上的加速度公式为

     a_{i}^{k}(t)=\frac{F_{i}^{k}(t)}{M_{i i}(t)}

    在进化过程中,粒子的速度和位置的更新方式为

    \left\{\begin{array}{l} v_{i}^{k}(t+1)=\operatorname{rank}_{i} \times v_{i}^{k}(t)+a_{i}^{k}(t) \\ x_{t}^{k}(t+1)=x_{i}^{k}(t)+v_{i}^{k}(t+1) \end{array}\right.

    粒子的质量与适应度值有关,质量越大的粒子越接近最优,并且它对其他粒子的作用力相应地会更大,但移动速度较慢。粒子质量的计算方式为

    \begin{aligned} m_{i}(t) &=\frac{f_{i}(t)-w(t)}{b(t)-w(t)}, \\ M_{i}(t) &=\frac{m_{i}(t)}{\sum_{j=1}^{N} m_{j}(t)} . \end{aligned}

    ⛄ 部分代码

    % GSA code v1.1.

    % Generated by Esmat Rashedi, 2010. 

    % " E. Rashedi, H. Nezamabadi-pour and S. Saryazdi,

    %揋SA: A Gravitational Search Algorithm? Information sciences, vol. 179,

    %no. 13, pp. 2232-2248, 2009."

    %

    %This function checks the search space boundaries for agents.

    function  X=space_bound(X,up,low);

    [N,dim]=size(X);

    for i=1:N 

    %     %%Agents that go out of the search space, are reinitialized randomly .

        Tp=X(i,:)>up;Tm=X(i,:)

    %     %%Agents that go out of the search space, are returned to the boundaries.

    %         Tp=X(i,:)>up;Tm=X(i,:)

    end

    ⛄ 运行结果

    ⛄ 参考文献

    [1]毕晓君, 刁鹏飞. 基于引力搜索算法的异构无线传感器网络路由分簇算法[J]. 控制与决策, 2017, 32(3):7.

    ❤️ 关注我领取海量matlab电子书和数学建模资料

    ❤️部分理论引用网络文献,若有侵权联系博主删除

  • 相关阅读:
    GCP之Google Cloud Infrastructure
    微服务与中间件系列——Nacos快速使用
    从入门开始手把手搭建千万级Java算法测试-主页面的搭建和自定义测试数组生成类
    AWS VPC
    Java Integer.numberOfLeadingZeros()
    uniapp的两个跳转方式
    深度学习之基于YoloV5血红细胞检测识别系统
    【问题解决】蓝牙显示已配对,无法连接,蓝牙设备显示在其他设备中。
    Java并发常见面试题
    docker应用记录总结
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/127588663