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

本文围绕Matlab实现引力搜索算法(GSA)展开。GSA是2009年提出的启发式群智能优化算法,全局搜索能力强、收敛快。文中介绍了算法原理,给出部分代码,还提及运行结果和参考文献,作者可提供Matlab项目合作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ​✅作者简介:热爱科研的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]在之间的随机数,为F_{i}^{k}(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,:)<low;X(i,:)=(X(i,:).*(~(Tp+Tm)))+((rand(1,dim).*(up-low)+low).*(Tp+Tm));

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

%         Tp=X(i,:)>up;Tm=X(i,:)<low;X(i,:)=(X(i,:).*(~(Tp+Tm)))+up.*Tp+low.*Tm;

end

⛄ 运行结果

⛄ 参考文献

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值