✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
GSA是2009年提出的一种新型的启发式群智能优化算法,具有全局搜索能力强、收敛速度快等优点。在GSA中,种群粒子相当于空间中运动的个体,这些个体在万有引力的作用下彼此吸引、运动,个体的质量是评价粒子好坏的标准,质量越大的个体吸引其他粒子的能力越强,即表示其对应的解更好,整个种群凭借粒子相互间力的作用相互运动实现信息的共享,并朝着最优区域展开搜索。
设空间中有N个粒子,第i个粒子表示如下:
。其中:n为搜索空间的维数,为第个粒子在第维上的位置信息。t时刻两个粒子间的作用力表示为
。
其中:和
分别为粒子j和粒子i的质量;e为一个极小的常量;为
粒子i与粒子j之间的欧氏距离;G(t)为t时刻的万有引力常数,其具体定义如下:
其中: T 为进化参数, G0为初始时刻的引力常数. 在t 时刻,粒子i在k维上受到的其他粒子的合力为
其中为变化区间[0 1]在之间的随机数,为
粒子对粒子i在第k维上的作用力。依据牛顿第二定律,定义时刻粒子在维上的加速度公式为
在进化过程中,粒子的速度和位置的更新方式为
粒子的质量与适应度值有关,质量越大的粒子越接近最优,并且它对其他粒子的作用力相应地会更大,但移动速度较慢。粒子质量的计算方式为
⛄ 部分代码
% 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电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除