欢迎光临
我们一直在努力

多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)求解ZDT1-ZDT6及工程应用,MATLAB代码

一、算法整体介绍

1.1 算法定义与来源

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

1.2 优化目标

多目标问题数学形式:
{min⁡F(x)=[f1(x),f2(x),…,fnumObj(x)]s.t.lbd≤xd≤ubd,d=1,2,…,dim
\\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.lbdxdubd,d=1,2,,dim

  • numObjnumObjnumObj:目标函数个数;
  • dimdimdim:决策变量维度;
  • lb,ublb,ublb,ub:变量上下边界;
    算法最终输出一组非支配Pareto最优解集,不存在一个解能同时优化所有目标。

1.3 MOBBO核心创新点

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

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

    2.1 阶段1:防御喷雾机制(全局探索 Xnew_P1X_{new\\_P1}Xnew_P1

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

  • 捕食者个体随机选取:从历史种群POP_old随机取一个个体作为威胁捕食者;
  • 双圆相交威胁面积AAA:根据甲虫与捕食者活动半径、距离计算相交面积表征威胁程度;
  • 混沌喷雾系数spraysprayspray:正弦混沌映射模拟喷雾无规则扩散,随迭代增大指数项,前期搜索范围更大;
  • 位置更新公式:
    Xnew_P1(i,:)=X(i,:)+selected_predator⋅A⋅100⋅rand1⋅rand2⋅X(i,:)spray
    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_predatorA100rand1rand2X(i,:)
  • 边界约束:调用BoundCheck截断/随机重置越界变量。
  • 2.2 阶段2:扑翼逃逸机制(局部开发 Xnew_P2X_{new\\_P2}Xnew_P2

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

  • 升力步长fff:基于昆虫扑翼升力公式,随机升力系数、空气密度、翼面积、速度构造局部搜索步长;
  • 迭代收缩策略:分母引入当前迭代数IterIterIter,迭代后期步长持续缩小,精细开采;
    Xnew_P2(i,:)=X(i,:)+f⋅ub−lbIter
    X_{new\\_P2}(i,:)=X(i,:)+f \\cdot \\frac{ub-lb}{Iter}
    Xnew_P2(i,:)=X(i,:)+fIterublb
  • 边界修复后得到局部搜索子代。
  • 三、两大多目标改进算子(论文创新核心)

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

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

  • 以全局子代Xnew_P1X_{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无线传感器多目标部署论文竞争学习策略。
    作用:基于种群内个体适应度竞争筛选优质父代,交叉生成局部优化子代,强化收敛能力。
    逻辑:

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

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

    将5类种群合并为超大临时种群,最大化搜索潜力:
    POPtemp=[POP; Xnew_P1; Xnew_P2; GaussianPOP; Offspring]
    POP_{temp} = [POP;\\ X_{new\\_P1};\\ X_{new\\_P2};\\ GaussianPOP;\\ Offspring]
    POPtemp=[POP; Xnew_P1; Xnew_P2; GaussianPOP; Offspring]

  • POPPOPPOP:上一代保留父代种群;
  • Xnew_P1X_{new\\_P1}Xnew_P1:防御全局探索子代;
  • Xnew_P2X_{new\\_P2}Xnew_P2:扑翼局部开发子代;
  • GaussianPOPGaussianPOPGaussianPOP:高斯扰动拓展子代;
  • OffspringOffspringOffspring:竞争学习收敛子代;
  • 执行unique(POP,'rows')去除完全重复解,减少冗余计算。

    4.2 目标函数与理想点更新

  • 计算临时种群所有个体多目标适应度subfit = obj(POP_temp);
  • 理想点ZminZ_{min}Zmin更新:存储历代所有解各目标最小值,代表理论最优理想点,用于环境选择归一化;
    Zmin=min⁡([Zmin; subfit])
    Z_{min} = \\min([Z_{min};\\ subfit])
    Zmin=min([Zmin; subfit])
  • 4.3 参考点环境选择 EnvironmentalSelection

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

  • 均匀参考点初始化 UniformPoint
    • ZZZ为均匀分布在归一化目标空间的参考点集合,数量等于种群规模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 ).*( (ublb).*rand( 1,length(X) )+lb );
    end

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

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

    定义:解x\\boldsymbol xx支配y\\boldsymbol yy满足两个条件:

  • x\\boldsymbol xx所有目标值 ≤ y\\boldsymbol yy对应目标值 all(x<=y,2);
  • x\\boldsymbol xx至少存在一个目标严格小于y\\boldsymbol yy any(x<y,2);
    返回逻辑值d=1d=1d=1代表x\\boldsymbol xx支配y\\boldsymbol yy
  • 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 可取如下值:1-6分别代表ZDT1-ZDT6;0为工程应用盘式制动器设计
    %% 参数说明
    %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)求解ZDT1-ZDT6及工程应用(盘式制动器设计)在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    十、适用场景

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

    [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)求解ZDT1-ZDT6及工程应用,MATLAB代码
    分享到: 更多 (0)

    评论 抢沙发

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