高性能算法NGO北方苍鹰优化算法Northern-Goshawk-Optimization,NGO
高性能算法NGO!北方苍鹰优化算法(Northern Goshawk Optimization,NGO)
北方苍鹰优化(NGO)算法模拟了北方苍鹰在猎物狩猎过程中的行为。这种狩猎策略包括猎物识别和尾巴和追逐过程两个阶段。描述了所提出的NGO算法的各个步骤,然后提出了其数学建模,用于解决优化问题。2022年,Mohammad等人提出了。
Ⅰ、灵感来源
北方苍鹰捕食和捕捉猎物的行为是一个智能过程。上述策略的数学建模是设计所提出的NGO算法的主要灵感。
Ⅱ、算法原理简介
在设计所提出的更新种群成员的NGO算法时,采用了北方苍鹰狩猎策略的模拟。北方苍鹰在该策略中的两种主要行为,包括(1)猎物识别和攻击以及(2)追逐和逃跑操作分两个阶段进行模拟。
2.1 算法初始化过程
x
l b + r a n d ∗ ( u b − l b ) x = lb + rand * (ub - lb)
x
=
l
b
r
an
d
∗
(
u
b
−
l
b
)
其中,
u b , l b ub, lb
u
b
,
l
b 分别代表北方苍鹰上下位置边界。
(1)第一阶段:猎物识别(探索)
北方苍鹰在狩猎的第一阶段,随机选择一个猎物,然后快速攻击它。由于在搜索空间中随机选择猎物,这一阶段增加了非政府组织的探索能力。这一阶段导致对搜索空间的全局搜索,目的是确定最佳区域。这一阶段涉及猎物选择和攻击的北方苍鹰行为示意图如图2所示。第一阶段中表达的概念使用(3)到(5)进行数学建模。
P i
X k , i
1 , 2 , … , N , k
1 , 2 , … , i − 1 , i + 1 , … , N , x i , j n e w , P 1
{ x i , j + r ( p i , j − I x i , j ) , F P i < F i , x i , j + r ( x i , j − p i , j ) , F P i ≥ F i , X i
{ X i n e w , P 1 , F i n e w , P 1 < F i , X i , F i n e w , P 1 ≥ F i , \begin{align*} P_{i}=&X_{k},i!=!1,2,!\ldots,N,k!=!1,2,!\ldots,i!-!1,i!+!1,!\ldots,N, ! \ \tag{3}\ x_{i,j}^{new,P1}=&\begin{cases} {x_{i,j} +r\left ({ {p_{i,j} -I;x_{i,j}} }\right),} & {F_{P_{i}} < F_{i},} \ {x_{i,j} +r\left ({ {x_{i,j} -;p_{i,j}} }\right),} & {F_{P_{i}} \ge F_{i},} \ \end{cases} \tag{4}\ X_{i}=&\begin{cases} {X_{i}^{new,P1},} & {F_{i}^{new,P1} < F_{i},} \ {X_{i},} & {F_{i}^{new,P1} \ge F_{i},} \ \end{cases}\tag{5}\end{align*}
P
i
=
x
i
,
j
n
e
w
,
P
1
=
X
i
=
X
k
,
i
=
1
,
2
,
…
,
N
,
k
=
1
,
2
,
…
,
i
−
1
,
i
1
,
…
,
N
,
{
x
i
,
j
r
(
p
i
,
j
−
I
x
i
,
j
)
,
x
i
,
j
r
(
x
i
,
j
−
p
i
,
j
)
,
F
P
i
<
F
i
,
F
P
i
≥
F
i
,
{
X
i
n
e
w
,
P
1
,
X
i
,
F
i
n
e
w
,
P
1
<
F
i
,
F
i
n
e
w
,
P
1
≥
F
i
,
(
3
)
(
4
)
(
5
)
其中,
P i P_i
P
i
是第
i i
i 只北方苍鹰猎物的位置,
F P i F_{P_i}
F
P
i
是其目标函数值,
k k
k 是区间 [1,
N N
N ] 内的随机自然数,
X i n e w , P 1 X_i^{new,P1}
X
i
n
e
w
,
P
1
是第
i i
i 个提议解的新状态,
x i , j n e w , P 1 x_{i,j}^{new,P1}
x
i
,
j
n
e
w
,
P
1
是其第
j j
j 维,
F i n e w , P 1 F_i^{new,P1}
F
i
n
e
w
,
P
1
是基于 NGO 第一阶段的目标函数值,
r r
r 是区间 [0, 1] 内的随机数,
I I
I 是可以是 1 或 2 的随机数。参数
r r
r 和
I I
I 是用于生成搜索和更新中随机 NGO 行为的随机数。
(2)第二阶段:追逐和逃逸操作(开发)
北方苍鹰攻击猎物后,猎物试图逃脱。因此,在尾随和追逐过程中,北方苍鹰继续追逐猎物。由于北方苍鹰的高速度,它们几乎可以在任何情况下追逐它们的猎物并最终捕猎。模拟这种行为增加了算法对搜索空间局部搜索的利用能力。在提出的 NGO 算法中,假设这种狩猎接近于半径为 ( R ) 的攻击位置。北方苍鹰和猎物之间的追逐过程如图 3 所示。第二阶段表达的概念使用公式 (6) 到 (8) 进行数学建模。
x i , j n e w , P 2
x i , j + R ( 2 r − 1 ) x i , j , R
0.02 ( 1 − t T ) , X i
{ X i n e w , P 2 , F i n e w , P 2 < F i , X i , F i n e w , P 2 ≥ F i . \begin{align*} x_{i,j}^{new,P2}=&x_{i,j} +R \left ({ {2r-1;} }\right) x_{i,j}, \tag{6}\ R=&0.02 \left ({ {1-\frac {t}{T}} }\right), \tag{7}\ X_{i}=&\begin{cases} X_{i}^{new,P2}, & {F_{i}^{new,P2} < F_{i},} \ X_{i}, & F_{i}^{new,P2} \ge F_{i}. \end{cases}\tag{8}\end{align*}
x
i
,
j
n
e
w
,
P
2
=
R
=
X
i
=
x
i
,
j
R
(
2
r
−
1
)
x
i
,
j
,
0.02
(
1
−
T
t
)
,
{
X
i
n
e
w
,
P
2
,
X
i
,
F
i
n
e
w
,
P
2
<
F
i
,
F
i
n
e
w
,
P
2
≥
F
i
.
(
6
)
(
7
)
(
8
)
其中t 是迭代计数器,T 是最大迭代次数,
X i n e w , P 2 X_i^{new,P2}
X
i
n
e
w
,
P
2
是第i个提议解的新状态,
x i , j n e w , P 2 x_{i,j}^{new,P2}
x
i
,
j
n
e
w
,
P
2
是其第j 维,
F i n e w , P 2 F_i^{new,P2}
F
i
n
e
w
,
P
2
是基于 NGO 第二阶段的目标函数值。
Ⅲ、完整代码
Dehghani M, Hubálovský Š, Trojovský P. Northern goshawk optimization: a new swarm-based algorithm for solving optimization problems[J]. Ieee Access, 2021, 9: 162059-162080. doi: 10.1109/ACCESS.2021.3133286
% 北方苍鹰优化算法
function [Best_pos, Best_fitness, Iter_curve] = NGO(pop, maxIter, lb, ub, dim,fobj)
X_new=[];
fit=[];
fit_new=[];
Iter_curve=zeros(1,maxIter);
%% 初始化种群
X = zeros(pop, dim);
for i = 1:pop
for j = 1:dim
X(i,j) = (ub(j) - lb(j)) * rand() + lb(j);
end
end
%% 计算适应度
for i =1:pop
L=X(i,:);
fit(i)=fobj(L);
end
%% 迭代
for t=1:maxIter
[best , blocation]=min(fit);
if t==1
xbest=X(blocation,:);
fbest=best;
elseif best<fbest
fbest=best;
xbest=X(blocation,:);
end
for i=1:pop
%% 识别与攻击
I=round(1+rand);
k=randperm(pop,1);
P=X(k,:); % Eq. (3)
F_P=fit(k);
if fit(i)> F_P
X_new(i,:)=X(i,:)+rand(1,dim) .* (P-I.*X(i,:)); % Eq. (4)
else
X_new(i,:)=X(i,:)+rand(1,dim) .* (X(i,:)-P); % Eq. (4)
end
% 边界约束
X_new(i,:) = max(X_new(i,:),lb);
X_new(i,:) = min(X_new(i,:),ub);
% Eq (5)
L=X_new(i,:);
fit_new(i)=fobj(L);
if(fit_new(i)<fit(i))
X(i,:) = X_new(i,:);
fit(i) = fit_new(i);
end
% 追逐和逃避
R=0.02*(1-t/maxIter);% Eq.(6)
X_new(i,:)= X(i,:)+ (-R+2*R*rand(1,dim)).*X(i,:);% Eq.(7)
X_new(i,:) = max(X_new(i,:),lb);X_new(i,:) = min(X_new(i,:),ub);
% update position based on Eq (8)
L=X_new(i,:);
fit_new(i)=fobj(L);
if(fit_new(i)<fit(i))
X(i,:) = X_new(i,:);
fit(i) = fit_new(i);
end
end
best_so_far(t)=fbest;
average(t) = mean (fit);
Best_fitness=fbest;
Best_pos=xbest;
Iter_curve(t)=Best_fitness;
end
end