一、算法整体介绍
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)
MOBBO完全保留原始投弹甲虫两大核心搜索阶段,作为子代生成基础,仅适配多目标种群迭代逻辑。
2.1 阶段1:防御喷雾机制(全局探索
X
n
e
w
_
P
1
X_{new\\_P1}
Xnew_P1)
模拟甲虫遭遇天敌喷射高温腐蚀性毒液大范围逃逸,负责全局搜索、拓展Pareto前沿范围。
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,:)
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为均值中心;
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作为竞争池;
四、种群合并与更新核心流程
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 目标函数与理想点更新
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多目标筛选框架,核心两步:
-
Z
Z
Z为均匀分布在归一化目标空间的参考点集合,数量等于种群规模SearchAgents_no; - 作用:划分目标空间,衡量个体与参考点关联程度,保证解集均匀分布。
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 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非支配解集:
七、完整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.
![打卡信奥刷题(3676)用C++实现信奥题 P12271 [蓝桥杯 2024 国 Python B] 括号与字母-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261107050125-6aeeb0a5a5ade-220x150.png)


