一、算法整体介绍
1.1 算法定义与来源
多目标甲虫优化算法 (Multi-objective Bombardier Beetle Optimizer,MOBBO)是单目标BBO(甲虫优化算法)的多目标改进版本,以投弹甲虫防御喷雾全局探索、扑翼逃逸局部开发为基础框架,融合高斯扰动搜索、竞争学习子代生成两大创新策略,搭配基于均匀参考点+环境选择的多目标种群筛选机制,用于求解多目标优化问题(MOOP)。
1.2 优化目标
多目标问题数学形式:
{minF(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.lbd≤xd≤ubd,d=1,2,…,dim
- numObjnumObjnumObj:目标函数个数;
- dimdimdim:决策变量维度;
- lb,ublb,ublb,ub:变量上下边界;
算法最终输出一组非支配Pareto最优解集,不存在一个解能同时优化所有目标。
1.3 MOBBO核心创新点
二、基础仿生机制(继承单目标BBO)
MOBBO完全保留原始投弹甲虫两大核心搜索阶段,作为子代生成基础,仅适配多目标种群迭代逻辑。
2.1 阶段1:防御喷雾机制(全局探索 Xnew_P1X_{new\\_P1}Xnew_P1)
模拟甲虫遭遇天敌喷射高温腐蚀性毒液大范围逃逸,负责全局搜索、拓展Pareto前沿范围。
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_predator⋅A⋅100⋅rand1⋅rand2⋅X(i,:)
2.2 阶段2:扑翼逃逸机制(局部开发 Xnew_P2X_{new\\_P2}Xnew_P2)
模拟甲虫扇动翅膀依靠空气升力近距离精细搜索,聚焦已有优质解邻域挖掘更优Pareto解。
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,:)+f⋅Iterub−lb
三、两大多目标改进算子(论文创新核心)
3.1 创新1:高斯扰动搜索 GaussianPOP
函数:Gaussian_search(X_new_P1,SearchAgents_no,dim,ub,lb)
作用:对全局探索子代施加高斯正态随机扰动,解决多目标优化中Pareto前沿分布稀疏、局部空缺问题。
逻辑:
价值:提升解集多样性,填充Pareto前沿空白区域,避免前沿局部聚集。
3.2 创新2:竞争学习子代 Offspring
函数:Competitive(obj,X_new_P2,POP,SearchAgents_no,lb,ub,dim)
参考Chen Long 2022无线传感器多目标部署论文竞争学习策略。
作用:基于种群内个体适应度竞争筛选优质父代,交叉生成局部优化子代,强化收敛能力。
逻辑:
价值:加速种群向真实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]
执行unique(POP,'rows')去除完全重复解,减少冗余计算。
4.2 目标函数与理想点更新
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多目标筛选框架,核心两步:
- 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 ).*( (ub–lb).*rand( 1,length(X) )+lb );
end
兼顾收敛稳定性与边界区域探索能力。
六、支配关系判定核心子函数
6.1 dominates(x,y):单组解支配判断
定义:解x\\boldsymbol xx支配y\\boldsymbol yy满足两个条件:
返回逻辑值d=1d=1d=1代表x\\boldsymbol xx支配y\\boldsymbol yy。
6.2 checkDomination(fitness):筛选所有被支配解
迭代结束后,对最终种群过滤,剔除全部被支配个体,仅保留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.

