欢迎光临
我们一直在努力

强力推荐:多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)求解IMOP1-IMOP8及工程应用,MATLAB代码

一、算法整体介绍

1.1 算法定义与来源

多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)是单目标BBO(甲虫优化算法)的多目标改进版本,以投弹甲虫防御喷雾全局探索、扑翼逃逸局部开发为基础框架,融合高斯扰动搜索、竞争学习子代生成两大创新策略,搭配基于均匀参考点+环境选择的多目标种群筛选机制,用于求解多目标优化问题(MOOP)。

1.2 优化目标

多目标问题数学形式:

{

min

⁡

F

(

x

)

=

[

f

1

(

x

)

,

f

2

(

x

)

,

.

.

.

,

f

n

u

m

O

b

j

(

x

)

]

s

.

t

.

l

b

d

≤

x

d

≤

u

b

d

,

d

=

1

,

2

,

.

.

.

,

d

i

m

\\begin{cases} \\min F(\\boldsymbol x) = [f_1(\\boldsymbol x),f_2(\\boldsymbol x),…,f_{numObj}(\\boldsymbol x)] \\\\ s.t.\\quad lb_d \\le x_d \\le ub_d,\\quad d=1,2,…,dim \\end{cases}

{minF(x)=[f1​(x),f2​(x),…,fnumObj​(x)]s.t.lbd​≤xd​≤ubd​,d=1,2,…,dim​

  • n

    u

    m

    O

    b

    j

    numObj

    numObj:目标函数个数;

  • d

    i

    m

    dim

    dim:决策变量维度;

  • l

    b

    ,

    u

    b

    lb,ub

    lb,ub:变量上下边界; 算法最终输出一组非支配Pareto最优解集,不存在一个解能同时优化所有目标。

1.3 MOBBO核心创新点

  • 基础双阶段搜索:防御喷雾全局探索 + 扑翼逃逸局部开发(继承原始BBO仿生机制);
  • 高斯扰动算子:对全局搜索子代添加高斯随机扰动,提升Pareto前沿分布均匀性;
  • 竞争学习策略:基于父代种群竞争生成局部优化子代,强化局部开采;
  • 混合种群合并策略:父代+全局子代+局部子代+高斯扰动子代+竞争学习子代合并,扩大搜索池;
  • 参考点环境选择机制:采用均匀分布参考点分层筛选种群,保证解集收敛性与多样性;
  • 自适应边界处理:两种边界修复策略随机切换,避免边界解丢失搜索潜力。
  • 二、基础仿生机制(继承单目标BBO)

    MOBBO完全保留原始投弹甲虫两大核心搜索阶段,作为子代生成基础,仅适配多目标种群迭代逻辑。

    2.1 阶段1:防御喷雾机制(全局探索

    X

    n

    e

    w

    _

    P

    1

    X_{new\\_P1}

    Xnew_P1​)

    模拟甲虫遭遇天敌喷射高温腐蚀性毒液大范围逃逸,负责全局搜索、拓展Pareto前沿范围。

  • 捕食者个体随机选取:从历史种群POP_old随机取一个个体作为威胁捕食者;
  • 双圆相交威胁面积

    A

    A

    A:根据甲虫与捕食者活动半径、距离计算相交面积表征威胁程度;

  • 混沌喷雾系数

    s

    p

    r

    a

    y

    spray

    spray:正弦混沌映射模拟喷雾无规则扩散,随迭代增大指数项,前期搜索范围更大;

  • 位置更新公式:

    X

    n

    e

    w

    _

    P

    1

    (

    i

    ,

    :

    )

    =

    X

    (

    i

    ,

    :

    )

    +

    s

    e

    l

    e

    c

    t

    e

    d

    _

    p

    r

    e

    d

    a

    t

    o

    r

    ⋅

    A

    ⋅

    100

    ⋅

    r

    a

    n

    d

    1

    ⋅

    r

    a

    n

    d

    2

    ⋅

    X

    (

    i

    ,

    :

    )

    s

    p

    r

    a

    y

    X_{new\\_P1}(i,:)= \\frac{X(i,:) + selected\\_predator \\cdot A \\cdot 100 \\cdot rand_1 \\cdot rand_2 \\cdot X(i,:)}{spray}

    Xnew_P1​(i,:)=sprayX(i,:)+selected_predator⋅A⋅100⋅rand1​⋅rand2​⋅X(i,:)​

  • 边界约束:调用BoundCheck截断/随机重置越界变量。
  • 2.2 阶段2:扑翼逃逸机制(局部开发

    X

    n

    e

    w

    _

    P

    2

    X_{new\\_P2}

    Xnew_P2​)

    模拟甲虫扇动翅膀依靠空气升力近距离精细搜索,聚焦已有优质解邻域挖掘更优Pareto解。

  • 升力步长

    f

    f

    f:基于昆虫扑翼升力公式,随机升力系数、空气密度、翼面积、速度构造局部搜索步长;

  • 迭代收缩策略:分母引入当前迭代数

    I

    t

    e

    r

    Iter

    Iter,迭代后期步长持续缩小,精细开采;

    X

    n

    e

    w

    _

    P

    2

    (

    i

    ,

    :

    )

    =

    X

    (

    i

    ,

    :

    )

    +

    f

    ⋅

    u

    b

    −

    l

    b

    I

    t

    e

    r

    X_{new\\_P2}(i,:)=X(i,:)+f \\cdot \\frac{ub-lb}{Iter}

    Xnew_P2​(i,:)=X(i,:)+f⋅Iterub−lb​

  • 边界修复后得到局部搜索子代。
  • 三、两大多目标改进算子(论文创新核心)

    3.1 创新1:高斯扰动搜索 GaussianPOP

    函数:Gaussian_search(X_new_P1,SearchAgents_no,dim,ub,lb) 作用:对全局探索子代施加高斯正态随机扰动,解决多目标优化中Pareto前沿分布稀疏、局部空缺问题。 逻辑:

  • 以全局子代

    X

    n

    e

    w

    _

    P

    1

    X_{new\\_P1}

    Xnew_P1​为均值中心;

  • 添加0均值高斯噪声扰动每个维度变量;
  • 越界变量执行边界修复,生成全新高斯扰动种群GaussianPOP; 价值:提升解集多样性,填充Pareto前沿空白区域,避免前沿局部聚集。
  • 3.2 创新2:竞争学习子代 Offspring

    函数:Competitive(obj,X_new_P2,POP,SearchAgents_no,lb,ub,dim) 参考Chen Long 2022无线传感器多目标部署论文竞争学习策略。 作用:基于种群内个体适应度竞争筛选优质父代,交叉生成局部优化子代,强化收敛能力。 逻辑:

  • 以局部搜索子代

    X

    n

    e

    w

    _

    P

    2

    X_{new\\_P2}

    Xnew_P2​和原始父代POP作为竞争池;

  • 两两对比个体多目标适应度,保留非支配个体作为优胜父代;
  • 优胜个体维度交叉、小幅扰动生成竞争学习子代Offspring; 价值:加速种群向真实Pareto前沿收敛,提升最优解精度。
  • 四、种群合并与更新核心流程

    4.1 多源种群融合扩宽搜索池

    将5类种群合并为超大临时种群,最大化搜索潜力:

    P

    O

    P

    t

    e

    m

    p

    =

    [

    P

    O

    P

    ;

     

    X

    n

    e

    w

    _

    P

    1

    ;

     

    X

    n

    e

    w

    _

    P

    2

    ;

     

    G

    a

    u

    s

    s

    i

    a

    n

    P

    O

    P

    ;

     

    O

    f

    f

    s

    p

    r

    i

    n

    g

    ]

    POP_{temp} = [POP;\\ X_{new\\_P1};\\ X_{new\\_P2};\\ GaussianPOP;\\ Offspring]

    POPtemp​=[POP; Xnew_P1​; Xnew_P2​; GaussianPOP; Offspring]

  • P

    O

    P

    POP

    POP:上一代保留父代种群;

  • X

    n

    e

    w

    _

    P

    1

    X_{new\\_P1}

    Xnew_P1​:防御全局探索子代;

  • X

    n

    e

    w

    _

    P

    2

    X_{new\\_P2}

    Xnew_P2​:扑翼局部开发子代;

  • G

    a

    u

    s

    s

    i

    a

    n

    P

    O

    P

    GaussianPOP

    GaussianPOP:高斯扰动拓展子代;

  • O

    f

    f

    s

    p

    r

    i

    n

    g

    Offspring

    Offspring:竞争学习收敛子代;

  • 执行unique(POP,'rows')去除完全重复解,减少冗余计算。

    4.2 目标函数与理想点更新

  • 计算临时种群所有个体多目标适应度subfit = obj(POP_temp);
  • 理想点

    Z

    m

    i

    n

    Z_{min}

    Zmin​更新:存储历代所有解各目标最小值,代表理论最优理想点,用于环境选择归一化;

    Z

    m

    i

    n

    =

    min

    ⁡

    (

    [

    Z

    m

    i

    n

    ;

     

    s

    u

    b

    f

    i

    t

    ]

    )

    Z_{min} = \\min([Z_{min};\\ subfit])

    Zmin​=min([Zmin​; subfit])

  • 4.3 参考点环境选择 EnvironmentalSelection

    函数:EnvironmentalSelection(obj,POP,SearchAgents_no,numObj,Z,Zmin) 参考MOMPA多目标筛选框架,核心两步:

  • 均匀参考点初始化 UniformPoint
    • Z

      Z

      Z为均匀分布在归一化目标空间的参考点集合,数量等于种群规模SearchAgents_no;

    • 作用:划分目标空间,衡量个体与参考点关联程度,保证解集均匀分布。
  • 分层筛选机制 ① 对临时种群按支配关系分层(非支配层、一级支配层、二级支配层…); ② 优先保留高层非支配个体; ③ 若非支配层数量超过种群上限,基于个体到参考点距离拥挤度筛选,剔除拥挤严重个体; ④ 最终裁剪种群至初始规模SearchAgents_no,作为下一代父代POP; 输出:下一代均衡兼顾收敛性、多样性的种群。
  • 4.4 历史种群缓存 POP_old

    每轮迭代结束执行 POP_old = POP,保存当前完整种群,下一轮全局探索时从中随机选取“捕食者”个体,保留历史种群搜索信息,防止早熟丢失优质解。

    五、边界自适应修复函数 BoundCheck

    传统优化算法仅简单截断越界变量,易丢失边界附近最优解,MOBBO采用双策略随机切换:

    if rand>0.9
    newX=max(min(X,ub),lb); %策略1:直接截断(90%概率)
    else
    %策略2:越界变量在上下限间随机重置(10%概率)
    Flag4ub=X>ub; Flag4lb=X<lb;
    newX=( X.*(~ (Flag4ub+Flag4lb) ) )+( Flag4ub+Flag4lb ).*( (ub–lb).*rand( 1,length(X) )+lb );
    end

  • 90%概率直接截断,保证大部分解稳定收敛;
  • 10%概率随机重置越界维度,拓展边界区域搜索范围; 兼顾收敛稳定性与边界区域探索能力。
  • 六、支配关系判定核心子函数

    6.1 dominates(x,y):单组解支配判断

    定义:解

    x

    \\boldsymbol x

    x支配

    y

    \\boldsymbol y

    y满足两个条件:

  • x

    \\boldsymbol x

    x所有目标值 ≤

    y

    \\boldsymbol y

    y对应目标值 all(x<=y,2);

  • x

    \\boldsymbol x

    x至少存在一个目标严格小于

    y

    \\boldsymbol y

    y any(x<y,2); 返回逻辑值

    d

    =

    1

    d=1

    d=1代表

    x

    \\boldsymbol x

    x支配

    y

    \\boldsymbol y

    y。

  • 6.2 checkDomination(fitness):筛选所有被支配解

    迭代结束后,对最终种群过滤,剔除全部被支配个体,仅保留Pareto非支配解集:

  • 枚举种群所有两两解组合;
  • 遍历判断支配关系,标记所有被其他解支配的个体;
  • 返回dom_vector标记向量,1=被支配,0=非支配;
  • 主函数末尾过滤:POP=POP(~DOMINATED,:); Fitness=Fitness(~DOMINATED,:),输出纯Pareto前沿。
  • 七、完整MOBBO迭代伪代码

    输入:最大迭代Max_iter,种群规模SearchAgents_no,目标函数obj,维度dim,目标数numObj,上下界lb,ub
    输出:Pareto非支配解集POP、对应多目标适应度Fitness
    1. Iter=1
    2. while Iter ≤ Max_iter
    2.1 首次迭代初始化
    POP = initialization(SearchAgents_no,dim,ub,lb)
    Z = UniformPoint(SearchAgents_no,numObj) %生成均匀参考点
    Fitness = obj(POP)
    Zmin = min(Fitness,[],1) %初始化理想点
    POP_old = POP
    2.2 基于防御机制生成全局子代 X_new_P1
    遍历每个甲虫个体i
    随机从POP_old选取捕食者
    计算圆相交面积A、混沌喷雾系数spray
    更新位置,边界修复得到X_new_P1(i,:)
    2.3 基于扑翼升力生成局部子代 X_new_P2
    遍历每个甲虫个体i
    随机升力参数计算步长f
    迭代收缩更新位置,边界修复得到X_new_P2(i,:)
    2.4 两大创新算子生成补充种群
    GaussianPOP = Gaussian_search(X_new_P1,SearchAgents_no,dim,ub,lb)
    Offspring = Competitive(obj,X_new_P2,POP,SearchAgents_no,lb,ub,dim)
    2.5 多源种群合并、去重
    POP = [POP;X_new_P1;X_new_P2;GaussianPOP;Offspring]
    POP = unique(POP,'rows')
    2.6 更新理想点Zmin
    subfit = obj(POP)
    Zmin = min([Zmin;subfit],[],1)
    2.7 参考点环境选择,裁剪种群至原始规模
    POP = EnvironmentalSelection(obj,POP,SearchAgents_no,numObj,Z,Zmin)
    2.8 更新历史缓存种群
    POP_old = POP
    2.9 Iter = Iter + 1
    3. 迭代完成,剔除所有被支配解
    DOMINATED = checkDomination(Fitness)
    POP = POP(~DOMINATED,:)
    Fitness = Fitness(~DOMINATED,:)
    4. 返回 POP, Fitness

    八、部分MATLAB代码

    %测试问题序号testProblem 可取如下值:
    %% 参数说明
    %testProblem 测试问题序号,比如:testProblem=0是一个工程应用(盘式制动器设计)的例子
    %Name 测试问题名称
    %dim 测试问题维度
    %numObj测试问题目标函数个数
    %lb测试问题下界
    %ub测试问题上界
    %SearchAgents_no 种群大小
    %Max_iter最大迭代次数
    %Fbest 算法求得的POF
    %Xbest 算法求得的POS
    %TruePF 测试问题的真实pareto前沿
    %Result 评价指标
    testProblem=0;
    [Name,dim,numObj,lb,ub,obj,TruePF]=GetProblemInfo(testProblem);%获取测试问题的相关信息
    SearchAgents_no=200;%种群大小
    Max_iter=100;%最大迭代次数
    AlgorithmName='MOBBO';%算法名称
    [Xbest,Fbest]=MOBBO(Max_iter,SearchAgents_no,obj,dim,numObj,lb,ub);

    九、部分结果

    多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)求解IMOP1-IMOP8及工程应用(盘式制动器设计) 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述 在这里插入图片描述

    十、适用场景

  • 无线传感器网络多目标部署(对应改进策略参考文献场景);
  • 多目标路径规划、机器人避障;
  • 工业多目标参数优化(成本、能耗、精度折中);
  • 机器学习多目标超参数寻优(精度、训练时间、模型体积);
  • 能源系统多目标调度(发电成本、碳排放、负载均衡)。
  • 十一、参考文献

    [1] Shehadeh H A, et al. Bombardier Beetle Optimizer: A Novel Bio-Inspired Algorithm for Global Optimization[C]. IEEE ICCIAA, 2026. [2] Chen L, et al. Balancing the trade-off between cost and reliability for wireless sensor networks: a multi-objective optimized deployment method[J]. Applied Intelligence, 2022,53:9148-9173. [3] MOMPA: a high performance multi-objective optimizer based on marine predator algorithm[C]. ACM, DOI:10.1145/3449726.3459581.

    赞(0)
    未经允许不得转载:171主机测评 » 强力推荐:多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)求解IMOP1-IMOP8及工程应用,MATLAB代码
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址