甲虫优化算法(Bombardier Beetle Optimizer, BBO)

一、算法概述

1.1 算法来源与仿生背景

甲虫优化算法(Bombardier Beetle Optimizer, BBO)是2026年发表于第二届计算智能方法与应用国际会议(ICCIAA, IEEE) 的全新元启发式群智能优化算法。

仿生原型:投弹甲虫(俗称放屁虫),拥有两套核心生存机制:

  1. 化学防御机制:遭遇天敌时,腹部反应室混合化学物质,酶促反应生成100℃高温水蒸气、氧气、对苯醌腐蚀性喷雾驱离捕食者;
  2. 扑翼逃逸机制:利用牛顿力学产生升力,计算与捕食者距离后快速飞离。

算法将两种生物行为映射为优化两大核心阶段:

  • 防御机制 = 全局探索阶段(Exploration):大范围搜索全局最优,提升种群多样性;
  • 逃逸飞行机制 = 局部开发阶段(Exploitation):围绕优质解精细搜索,收敛寻优。

1.2 算法优势

  1. 引入混沌映射模拟喷雾随机扩散,有效避免早熟收敛;
  2. 圆相交面积模型量化捕食威胁,自适应调整搜索步长;
  3. 基于牛顿升力方程的局部搜索,迭代后期逐步缩小搜索范围;
  4. 在CEC2017标准测试函数、高维、多模态工程优化问题上收敛速度、鲁棒性优于传统智能算法(粒子群PSO、蜣螂DBO、天鹰AEO等)。

1.3 文献信息

Shehadeh H A, Idris M Y I, Jebril I H, et al. Bombardier Beetle Optimizer: A Novel Bio-Inspired Algorithm for Global OptimizationC//2026 2nd International Conference on Computational Intelligence Approaches and Applications (ICCIAA). IEEE, 2026: 1-8.

二、算法完整数学原理

BBO完整流程分为种群初始化、防御探索阶段、逃逸开发阶段三部分。

2.1 阶段1:种群初始化

每一只投弹甲虫代表优化问题的一组可行解,NNN为种群数量,dimdimdim为决策变量维度,变量上下界upperbound、lowerboundupperbound、lowerboundupperbound、lowerbound。

初始化公式:

Xi,d=lbd+rand(0,1)⋅(ubd−lbd) X_{i,d}=lb_d + rand(0,1) \cdot (ub_d - lb_d) Xi,d=lbd+rand(0,1)⋅(ubd−lbd)

  • Xi,dX_{i,d}Xi,d:第iii只甲虫第ddd维位置;
  • rand(0,1)rand(0,1)rand(0,1):0,10,10,1均匀随机数;
    生成种群矩阵X∈RN×dimX \in \mathbb{R}^{N \times dim}X∈RN×dim,遍历所有甲虫计算适应度fit(i)fit(i)fit(i),记录初代全局最优解xbest、fbestxbest、fbestxbest、fbest。

2.2 阶段2:防御机制(全局探索Exploration)

模拟甲虫喷射高温毒液对抗天敌,通过双圆相交模型 判断威胁等级,生成大范围搜索新位置。

(1)捕食者筛选规则

遍历种群,将适应度优于当前甲虫的个体定义为捕食者集合predator_positionpredator\_positionpredator_position:

  • 若无捕食者:选取全局最优xbestxbestxbest作为目标捕食者;
  • 若存在捕食者:50%概率选全局最优,50%随机挑选一个捕食者个体selected_predatorselected\_predatorselected_predator。
(2)双圆相交面积计算

将甲虫、捕食者活动范围抽象为两个圆形:

  • r1r_1r1:甲虫活动半径,r2r_2r2:捕食者活动半径,ddd:两圆心欧式距离;
    相交面积A=circle_intersection_area(r1,r2,d)A = circle\_intersection\_area(r_1,r_2,d)A=circle_intersection_area(r1,r2,d),分三种场景:
  1. d>r1+r2d>r_1+r_2d>r1+r2:两圆分离,无威胁,相交面积A=0A=0A=0,不触发喷雾;
  2. ∣r1−r2∣≥d|r_1-r_2| \ge d∣r1−r2∣≥d:一圆完全包裹另一圆,高度威胁,大面积喷雾;
  3. ∣r1−r2∣<d<r1+r2|r_1-r_2|<d<r_1+r_2∣r1−r2∣<d<r1+r2:两圆相交,中等威胁,局部喷雾。
(3)混沌喷雾扩散因子

喷雾扩散引入正弦混沌映射 模拟化学喷雾无规则扩散,构造喷雾系数spraysprayspray:

spray=chaos(7,1,1)⋅2.7100tMax_iter spray = chaos(7,1,1) \cdot 2.7^{100^{\frac{t}{Max\_iter}}} spray=chaos(7,1,1)⋅2.7100Max_itert

  • ttt:当前迭代次数,Max_iterMax\_iterMax_iter:最大迭代次数;
  • chaos()chaos()chaos():正弦混沌映射,增强搜索随机性,跳出局部最优;
  • 100100100代表甲虫毒液沸点100℃,映射化学反应强度。
(4)探索阶段位置更新公式

Xnew_P1=Xi,:+selected_predator⋅A⋅100⋅rand1⋅rand2⋅Xi,:spray X_{new\P1} = \frac{X{i,:} + selected\predator \cdot A \cdot 100 \cdot rand_1 \cdot rand_2 \cdot X{i,:}}{spray} Xnew_P1=sprayXi,:+selected_predator⋅A⋅100⋅rand1⋅rand2⋅Xi,:

更新后强制边界约束:Xnew_P1=max(min(Xnew_P1,upperbound),lowerbound)X_{new\P1}=max(min(X{new\_P1},upperbound),lowerbound)Xnew_P1=max(min(Xnew_P1,upperbound),lowerbound);

对比新旧位置适应度,更优则替换甲虫当前位置。

2.3 阶段3:逃逸飞行机制(局部开发Exploitation)

模拟甲虫扇动翅膀依靠牛顿力学产生升力逃离,迭代后期精细挖掘最优邻域。

(1)昆虫扑翼升力经验公式

基于牛顿第二、第三定律,非定常扑翼升力方程:

f=LC⋅0.5⋅ρ⋅v2⋅A f = LC \cdot 0.5 \cdot \rho \cdot v^2 \cdot A f=LC⋅0.5⋅ρ⋅v2⋅A

  • LCLCLC:升力系数(0,10,10,1随机);
  • ρ\rhoρ:海平面空气密度(0,10,10,1随机);
  • vvv:翅膀相对速度(0,10,10,1随机);
  • AAA:甲虫翅膀有效面积(0,10,10,1随机);
    fff为飞行逃逸步长,控制局部搜索幅度。
(2)开发阶段位置更新公式

随着迭代增加,搜索范围逐步收缩:

Xnew_P2=Xi,:+f⋅upperbound−lowerboundt X_{new\P2}=X{i,:}+f \cdot \frac{upperbound-lowerbound}{t} Xnew_P2=Xi,:+f⋅tupperbound−lowerbound

边界约束:Xnew_P2=max(min(Xnew_P2,upperbound/t),lowerbound/t)X_{new\P2}=max(min(X{new\_P2},upperbound/t),lowerbound/t)Xnew_P2=max(min(Xnew_P2,upperbound/t),lowerbound/t);

同样对比适应度,择优更新甲虫位置。

2.4 BBO完整算法伪代码

复制代码
输入:种群规模N,最大迭代Max_iter,维度dim,上下界lb、ub,适应度函数fitness
1. 初始化种群X(N,dim),计算所有个体适应度fit
2. 筛选初代全局最优xbest, fbest
3. for t = 1 to Max_iter:
    for i = 1 to N:
        %% 1.防御探索阶段
        筛选捕食者selected_predator
        随机生成r1,r2,d,计算圆相交面积A
        计算混沌喷雾系数spray
        生成新位置X_new_P1,边界截断
        若fitness(X_new_P1) < fit(i),更新X(i,:)与fit(i)
        
        %% 2.逃逸开发阶段
        随机生成LC,ρ,A,v,计算升力逃逸步长f
        生成新位置X_new_P2,边界截断
        若fitness(X_new_P2) < fit(i),更新X(i,:)与fit(i)
    end for
    更新全局最优xbest,fbest,保存迭代收敛曲线
end for
输出:最优适应度Best_score,最优位置Best_pos,收敛曲线BBO_curve

三、MATLAB核心代码

matlab 复制代码
甲虫优化算法(Bombardier Beetle Optimizer, BBO)
function[Best_score,Best_pos,BBO_curve]=BBO(Bombardier_Beetle,Max_iterations,lowerbound,upperbound,dimension,fitness)
lowerbound=ones(1,dimension).*(lowerbound);
upperbound=ones(1,dimension).*(upperbound);

%% 1.初始化阶段
for i=1:dimension
    X(:,i) = lowerbound(i)+rand(Bombardier_Beetle,1).*(upperbound(i) - lowerbound(i));
end
for i =1:Bombardier_Beetle
    L=X(i,:);
    fit(i)=fitness(L);
end

%% 迭代主循环
for t=1:Max_iterations
    %% 更新全局最优解
    [Fbest , blocation]=min(fit);
    if t==1
        xbest=X(blocation,:);
        fbest=Fbest;
    elseif Fbest<fbest
        fbest=Fbest;
        xbest=X(blocation,:);
    end
    
    %% 遍历每一只投弹甲虫
    for i=1:Bombardier_Beetle
        %% 2.防御机制-全局探索
        predator_position=find(fit<fit(i));
        if size(predator_position,2)==0
            selected_predator=xbest;
        else
            if rand <0.5
                selected_predator=xbest;
            else
                k=randperm(size(predator_position,2),1);
                selected_predator=X(predator_position(k),:);
            end
        end
        r1 = rand(1,1);
        r2 = rand(1,1);
        d  = rand(1,1);
        A = circle_intersection_area(r1, r2, d);
        spray =  chaos(7,1,1) * 2.7^(100^(t/Max_iterations)) ;
        X_new_P1= (X(i,:)  + (selected_predator .* A .* 100 .* rand(1,1).*rand(1,1).*X(i,:)) ) / spray;
        X_new_P1 = max(X_new_P1,lowerbound);X_new_P1 = min(X_new_P1,upperbound);
        L=X_new_P1;
        fit_new_P1=fitness(L);
        if fit_new_P1<fit(i)
            X(i,:) = X_new_P1;
            fit(i) = fit_new_P1;
        end
        
        %% 3.逃逸飞行机制-局部开发
        CL  = rand(1,1);
        rho = rand(1,1);
        A_wing   = rand(1,1);
        v   = rand(1,1);
        f = insect_lift(CL, rho, A_wing, v);
        X_new_P2=X(i,:)+f*((upperbound-lowerbound)/t);
        X_new_P2 = max(X_new_P2,lowerbound./t);X_new_P2 = min(X_new_P2,upperbound./t);
        L=X_new_P2;
        fit_new_P2=fitness(L);
        if fit_new_P2<fit(i)
            X(i,:) = X_new_P2;
            fit(i) = fit_new_P2;
        end
    end
    best_so_far(t)=fbest;
    average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=xbest;
BBO_curve=best_so_far;
end

%% 子函数1:两圆相交面积计算
function area = circle_intersection_area(r1, r2, d)
    if d >= r1 + r2
        area = 0;
    elseif d <= abs(r1 - r2)
        r_min = min(r1,r2);
        area = pi * r_min^2;
    else
        alpha = acos((r1^2 + d^2 - r2^2)/(2*r1*d));
        beta = acos((r2^2 + d^2 - r1^2)/(2*r2*d));
        area = r1^2*alpha + r2^2*beta - 0.5*sqrt((-d+r1+r2)*(d+r1-r2)*(d-r1+r2)*(d+r1+r2));
    end
end

%% 子函数2:正弦混沌映射
function res = chaos(type,num,iter)
switch type
    case 7 %正弦映射
        x=rand();
        for i=1:iter
            x = sin(pi*x);
        end
        res=x;
end
end

%% 子函数3:昆虫升力计算
function lift = insect_lift(LC,rho,A,v)
lift = LC * 0.5 * rho * v^2 * A;
end

四、参考文献

1 Shehadeh H A, Idris M Y I, Jebril I H, et al. Bombardier Beetle Optimizer: A Novel Bio-Inspired Algorithm for Global OptimizationC//2026 2nd International Conference on Computational Intelligence Approaches and Applications (ICCIAA). IEEE, 2026: 1-8.