1 简介
2009 年伊朗的克曼大学教授 Esmat Rashedi 等人提出了引力搜索算法[5(] Gravitational Search Algorithm),该算法是基于牛顿万有引力定律:“在宇宙间,每一个粒子由于万有引力的作用而彼此相互吸引,这力的大小与粒子的质量成正比,与他们之间的距离成反比”。
2 部分代码
% BGSA code v1.0.
%?'BGSA: Binary Gravitational Search Algorithm', Natural Computation, vol.9, pp.727- 745, 2010."
%
%This function calculates the accelaration of each agent in the gravitational field.
function a=BGfield(M,X,G,Rpower,ElitistCheck,iteration,max_it)
[N,dim]=size(X);
final_per=2; %In the last iteration, only 2 percent of agents apply force to the others.
%%%%total force calculation
if ElitistCheck==1
kbest=final_per+(1-iteration/max_it)*(100-final_per); %kbest in eq. 3.
kbest=round(N*kbest/100);
else
kbest=N;
end
[Ms ds]=sort(M,'descend');
for i=1:N
E(i,:)=zeros(1,dim);
for ii=1:kbest
j=ds(ii);
if j~=i
R=sum(X(i,:)~=X(j,:)); R=R/dim; %normalized Hamming distance.
for k=1:dim
E(i,k)=E(i,k)+rand*(M(j))*((X(j,k)-X(i,k))/(R^Rpower+1/dim));
%note that Mp(i)/Mi(i)=1
end
end
end
end
%%acceleration
a=E.*G; %note that Mp(i)/Mi(i)=1
3 仿真结果
4 参考文献
[1]田昊. 基于引力搜索算法的水火电短期优化调度方法. Diss. 华中科技大学, 2016.