黑翅鸢优化算法(BKA)原理及实现
黑翅鸢优化算法(BKA)原理及实现
黑翅鸢优化算法(Black-winged Kite Algorithm, BKA)是一种基于黑翅鸢迁徙和捕食行为启发的新型优化算法。该算法由J Wang于2024年提出,具有独特的生物启发特征,不仅捕捉了黑翅鸢在自然界中的飞行和捕食行为,还深入模拟了它们对环境变化和目标位置的高适应性。
1.背景
2024年,J Wang受到黑翅鸢迁徙和捕食行为启发,提出了黑翅鸢优化算法(Black-winged Kite Algorithm, BKA)。
2.算法原理
2.1算法思想
BKA具有独特的生物启发特征,不仅捕捉了黑翅鸢在自然界中的飞行和捕食行为,还深入模拟了它们对环境变化和目标位置的高适应性。BKA中引入了柯西变异策略,有助于算法跳出局部最优解,并增加在全局搜索空间中发现更好解的概率。同时,BKA集成了一种领导策略,模拟了风筝社区中领导者的领导作用,确保算法能够有效利用当前的最佳解并指导搜索方向。
2.2算法过程
攻击行为
黑翅鸢是草原小型哺乳动物和昆虫的捕食者,在飞行过程中根据风速调整翅膀和尾巴的角度,静静地悬停观察猎物,然后迅速俯冲攻击,该策略包括不同的攻击行为,用于全局探索和搜索。黑翅鸢攻击行为:
$$
y_{t+1}^{i,j}=\left{
\begin{array}{c}
y_t^{i,j}+n(1+\sin(r))\times y_t^{i,j} & p<r\
y_t^{i,j}+n\times(2r-1)\times y_t^{i,j} & else
\end{array}
\right.
\tag{1}
$$
其中,
$$
n=0.05\times e^{-2\times\left(\frac{t}{T}\right)^{2}}
\tag{2}
$$
迁移行为
迁移通常由领导者领导,作者提出了一个基于鸟类迁徙的假设:如果当前种群的适应度值小于随机种群的适应度值,那么领导者将放弃领导并加入迁徙种群,这表明它不适合领导种群前进。相反,如果当前种群的适应度值大于随机种群的适应度值,则会引导种群到达目的地。这种策略可以动态地选择优秀的领导者,以确保迁移的成功。黑翅鸢迁徙行为:
$$
y_{t+1}^{i,j}=\begin{cases}
\quad y_t^{i,j}+C(0,1)\times\left(y_t^{i,j}-L_t^j\right)\quad & F_i<F_{ri}\
\quad y_t^{i,j}+C(0,1)\times\left(L_t^j-m\times y_t^{i,j}\right)\quad & else
\end{cases}
\tag{3}
$$
其中,
$$
m=2\times\sin{(r+\pi/2)}
\tag{4}
$$
Lt表示第t次迭代领先得分者,C(0,1)表示柯西变异算子,一维柯西分布的概率密度函数:
$$
f(x,\delta,\mu)=\frac{1}{\pi}\frac{\delta}{\delta^2+(x-\mu)^2},\quad-\infty<x<\infty
\tag{5}
$$
当δ = 1, μ = 0时,其概率密度函数成为标准形式:
$$
f(x,\delta,\mu)=\frac{1}{\pi}\frac{1}{x^2+1},\quad-\infty<x<\infty
\tag{6}
$$
伪代码
function BKA(N, D, Max_iter)
% 初始化种群
X = rand(N, D);
% 初始化适应度值
Fitness = zeros(N, 1);
for i = 1:N
Fitness(i) = ObjectiveFunction(X(i, :));
end
% 初始化最优解
[Best_fitness, Best_index] = min(Fitness);
Best_X = X(Best_index, :);
% 迭代优化
for t = 1:Max_iter
% 攻击行为
for i = 1:N
for j = 1:D
r = rand();
if r < p
X(i, j) = X(i, j) + n * (1 + sin(r)) * X(i, j);
else
X(i, j) = X(i, j) + n * (2 * r - 1) * X(i, j);
end
end
% 计算适应度值
Fitness(i) = ObjectiveFunction(X(i, :));
end
% 迁移行为
for i = 1:N
for j = 1:D
r = rand();
m = 2 * sin(r + pi / 2);
if Fitness(i) < Fitness(randi(N))
X(i, j) = X(i, j) + C(0, 1) * (X(i, j) - Best_X(j));
else
X(i, j) = X(i, j) + C(0, 1) * (Best_X(j) - m * X(i, j));
end
end
% 计算适应度值
Fitness(i) = ObjectiveFunction(X(i, :));
end
% 更新最优解
[Current_best_fitness, Current_best_index] = min(Fitness);
if Current_best_fitness < Best_fitness
Best_fitness = Current_best_fitness;
Best_X = X(Current_best_index, :);
end
end
% 返回最优解
return Best_X, Best_fitness;
end
3.结果展示
(此处省略具体结果展示内容)
4.参考文献
[1] Wang J, Wang W, Hu X, et al. Black-winged kite algorithm: a nature-inspired meta-heuristic for solving benchmark functions and engineering problems[J]. Artificial Intelligence Review, 2024, 57(4): 1-53.
5.代码获取
(此处省略代码获取方式)