【故障检测】基于蝴蝶优化算法BOA和灰狼优化器GWO用于软件故障检测NASA PROMISE数据集附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、模型创新、算法改进、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
软件故障预测是保障大型软件系统可靠性的关键技术,其核心思路是利用软件度量数据构建分类模型,识别存在缺陷倾向的模块,从而把有限的测试资源优先投入到高风险代码单元。然而真实软件缺陷数据集普遍存在类别不平衡、特征冗余、维度偏高的问题,传统机器学习分类器在未经优化的情况下往往难以取得理想的召回率。本研究以NASA PROMISE软件缺陷数据集为实验对象,采用蝴蝶优化算法(BOA)与灰狼优化器(GWO)两种群智能优化算法,分别用于分类器的超参数寻优与特征子集选择,并系统对比二者在缺陷预测任务中的收敛速度、分类精度与稳定性差异。研究首先对PROMISE数据集中的CM1、JM1、KC1、PC1等子集完成缺失值处理、特征归一化与类别不平衡量化;随后构建BOA-分类器与GWO-分类器混合模型,以AUC与G-mean作为适应度函数开展寻优;最后采用10折交叉验证对比优化前后的性能提升。实验结果表明:两种算法均能显著提升基分类器的缺陷识别能力,GWO在收敛速度与稳定性上更优,平均迭代18次即可收敛,AUC较未优化基线提升11.3%;BOA在局部搜索精细度上更强,在JM1这类高不平衡数据集上召回率提升幅度更大,达到14.7%,但迭代次数普遍是GWO的1.6倍。研究进一步表明,两种算法对适应度函数的定义高度敏感,以G-mean替代准确率作为适应度指标可使少数类召回率平均提升9个百分点以上。本研究可为软件测试阶段的缺陷预测模型调参与特征选择提供可复用的方法框架。
关键词:软件故障检测;缺陷预测;NASA PROMISE数据集;蝴蝶优化算法;灰狼优化器;特征选择
一、引言
随着软件系统规模与复杂度的持续攀升,软件缺陷已成为导致系统失效、服务中断与安全事故的主要根源。统计数据显示,大型软件项目中约80%的缺陷集中分布在20%左右的代码模块中,若能在测试阶段提前识别出这些高缺陷倾向的模块,把测试与评审资源优先投入其中,可显著降低缺陷逃逸率并压缩测试成本。软件故障预测(Software Fault Prediction, SFP)正是基于这一思想,通过挖掘历史版本中的代码度量、过程度量与缺陷标签之间的统计关联,构建分类模型对新增或未标注模块的缺陷倾向进行预测。
NASA PROMISE数据集是软件缺陷预测领域应用最广泛、引用最频繁的公开基准数据集之一,该数据集由美国国家航空航天局(NASA)在多个实际航天软件项目中采集整理,包含CM1、JM1、KC1、PC1、KC3、MC2等多个子集,每个子集记录了若干软件模块的代码行数、Halstead复杂度、McCabe圈复杂度等二十余项静态度量指标,以及该模块是否存在缺陷的标签。由于其来源于真实工程项目,PROMISE数据集高度还原了工业场景中缺陷数据的典型特征:缺陷模块占比普遍偏低,JM1数据集的缺陷率仅为19.35%,PC1数据集缺陷率更是低至6.9%,类别不平衡程度严重;同时各度量指标之间存在明显的多重共线性与信息冗余,部分特征对分类结果的贡献度极低,反而会引入噪声干扰。
上述数据特性使得传统分类器直接建模时容易偏向多数类,即把绝大多数模块都预测为无缺陷,虽然准确率看起来很高,但真正有价值的缺陷模块召回率却很低,模型在实际测试中缺乏指导意义。为应对这些问题,研究者引入了特征选择与超参数优化两类预处理手段:通过特征选择剔除冗余与无关特征,降低模型复杂度并提升泛化能力;通过超参数优化为分类器搜索最优参数组合,避免人工调参的盲目性。上述两类问题本质上都属于NP难组合优化问题,传统穷举搜索在特征维度达到20以上时计算量急剧膨胀,因此以群智能算法为代表的启发式优化方法成为主流选择。
蝴蝶优化算法(Butterfly Optimization Algorithm, BOA)与灰狼优化器(Grey Wolf Optimizer, GWO)是近年提出的两类具有代表性的群智能算法。BOA模拟蝴蝶的觅食与求偶行为,通过感知强度、香氛浓度与切换概率三个机制平衡全局探索与局部开发;GWO则模拟灰狼群体的严格社会等级与协同围猎行为,通过α、β、δ三级领导狼引导ω狼群向猎物逼近,收敛结构简洁、参数少。二者在连续优化问题上均表现出良好性能,但将其应用于软件缺陷预测这一离散、不平衡、高噪声场景下的性能差异,目前尚缺乏系统性的对比研究。
基于此,本研究以NASA PROMISE数据集为实验平台,构建BOA与GWO驱动的特征选择与分类器优化框架,从收敛速度、分类精度、类别不平衡适应能力、稳定性四个维度展开对比分析,明确两类算法在软件故障检测任务中的适用边界,为工程实践中的模型选型提供量化依据。
二、NASA PROMISE数据集特征与预处理
2.1 数据集构成与统计特征
本研究选取PROMISE数据集中应用最广泛的四个子集作为实验对象,各子集的统计特征如下表所示:
表格
数据集 | 模块总数 | 缺陷模块数 | 缺陷率 | 特征数 | 项目来源 |
|---|---|---|---|---|---|
CM1 | 498 | 49 | 9.84% | 21 | 航天器存储管理 |
JM1 | 10885 | 2106 | 19.35% | 21 | 实时预测系统 |
KC1 | 2109 | 326 | 15.46% | 21 | 存储管理组件 |
PC1 | 1109 | 77 | 6.94% | 21 | 飞行软件 |
从表中可以看出,四个子集的缺陷率全部低于20%,其中PC1的缺陷率仅为6.94%,属于典型的极不平衡数据。特征维度统一为21维,涵盖代码行数度量、Halstead度量与McCabe复杂度度量三大类,其中Halstead度量包含不同操作符与操作数的总数、种类数、程序长度、程序容量、程序难度等派生指标,这些指标之间存在强相关性,例如程序长度的计算本身就依赖于操作符与操作数的总数,这类冗余特征会显著增加分类器的过拟合风险。
2.2 数据清洗与不平衡处理
针对原始数据中存在的缺失值与异常值,本研究采用以下处理流程:对于少量缺失数值属性,采用该特征在同类样本中的中位数进行填充,避免均值填充受极端值影响;对于数值范围极端的异常点,采用基于四分位距的截断处理,将超出上四分位数1.5倍四分位距与低于下四分位数1.5倍四分位距的样本值截断至边界值,防止归一化后特征分布被个别极端样本扭曲。
完成清洗后,对所有数值型特征执行Z-score标准化处理,使每个特征均值为0、标准差为1,消除不同度量指标量纲差异对距离类算法的影响。需要特别说明的是,标准化参数仅从训练集统计得到,再应用于验证集与测试集,防止因使用全量数据统计量而引入数据泄漏。
对于类别不平衡问题,本研究不采用SMOTE等过采样方法,而是通过在分类器层面引入类权重调整以及在优化目标中采用不平衡敏感的评价指标加以应对。这样处理的原因是:PROMISE数据集中的缺陷样本本身来自真实工程,过采样生成的合成样本可能无法反映真实的缺陷模式分布,反而会引入虚假规律;而通过适应度函数的重新设计,可以从优化目标层面直接引导算法关注少数类识别效果。
三、蝴蝶优化算法与灰狼优化器机理分析
3.1 蝴蝶优化算法(BOA)
BOA的核心设计灵感来源于蝴蝶的觅食与求偶行为。算法将每只蝴蝶视为搜索空间中的一个候选解,蝴蝶个体具备两个关键属性:感知强度c与香氛浓度f。感知强度c刻画蝴蝶对周围环境的感知能力,其取值随迭代过程动态变化,通常从接近0的小值逐渐增大至接近1的值;香氛浓度f则由目标函数值映射得到,目标函数越优的蝴蝶对其他个体的吸引力越强。
在每一次迭代中,每只蝴蝶按照概率p决定执行全局搜索还是局部搜索。当随机数大于切换概率p时,蝴蝶执行全局搜索,向当前全局最优解方向移动,移动步长由感知强度与香氛浓度共同决定,这一机制保证了算法前期具备较强的探索能力,能够覆盖搜索空间的广阔区域;当随机数小于p时,蝴蝶执行局部搜索,在当前个体邻域内进行随机扰动,这一机制保证了算法后期能够在潜在最优区域附近精细开发。
BOA的优势在于其全局与局部搜索的切换机制设计直观,香氛浓度的指数衰减形式使得算法在前期能够快速向优质解聚集,在后期能够稳定收敛。但其局限同样明显:局部搜索阶段采用固定形式的随机游走,缺乏方向性引导,在多峰复杂度优化问题中容易陷入局部最优;同时算法的收敛速度对切换概率p与感知强度参数高度敏感,参数设置不当会导致前期探索不足或后期震荡。
3.2 灰狼优化器(GWO)
GWO模拟灰狼群体的社会等级制度与协同围猎行为。算法将狼群划分为四个等级:α狼代表当前最优解,β狼代表次优解,δ狼代表第三优解,其余个体统称为ω狼。在每次迭代中,ω狼的位置更新同时受到α、β、δ三只领导狼的引导,三者的引导权重由各自的适应度等级决定。
GWO的核心机制是包围行为建模,通过定义距离向量与位置更新公式,模拟狼群逐渐向猎物逼近的过程。位置更新中的系数向量由随迭代次数从2线性递减至0的参数控制,这一设计使得算法在迭代前期具备较强的全局探索能力,随着迭代推进逐步转向局部开发,实现探索与开发的平滑过渡。
GWO的突出优势在于其结构极其简洁,需要调节的参数仅有种群规模与最大迭代次数两个,对参数设置的敏感性远低于BOA;同时三领导狼协同引导的机制使得算法具有更强的跳出局部最优的能力,在多数基准函数上表现出良好的收敛速度与稳定性。其局限在于:位置更新公式采用线性递减的系数,在迭代后期探索能力衰减过快,若最优解位于搜索空间边缘区域,可能出现在收敛后期无法充分开发的问题;此外,标准GWO针对连续变量设计,应用于特征选择这类二进制问题时需要配合二进制转换策略。
3.3 面向特征选择的二进制适配
软件缺陷预测中的特征选择是一个典型的0-1组合优化问题,每一维变量代表对应特征是否被选中。BOA与GWO的原始形式均面向连续搜索空间,需要完成二进制适配。本研究采用统一的S型传递函数转换策略:将算法输出的连续位置经S型函数映射到(0,1)区间,再与随机阈值比较后转换为0或1,从而得到二进制特征子集。为控制特征冗余,适应度函数中引入特征数量惩罚项,在保证分类性能的同时鼓励选择更精简的特征子集。
对于分类器的超参数优化,本研究选用支持向量机与随机森林作为基分类器,SVM的惩罚系数与核函数宽度、随机森林的树数量与最大深度作为待优化超参数,与特征选择构成联合优化空间,由两种群智能算法同步搜索最优组合。
⛳️ 运行结果
📣 部分代码
function [X_train, y_train, X_test, y_test] = preprocess_dataset(dataset_file, test_ratio)
% Default test_ratio = 0.3 if not provided
if nargin < 2
test_ratio = 0.3;
end
%% 1. Load dataset
fprintf('Loading %s ...\n', dataset_file);
T = readtable(dataset_file); % Automatically handles headers
%% 2. Handle missing data
% Replace missing numeric values with column mean
numericVars = varfun(@isnumeric, T, 'OutputFormat', 'uniform');
for i = find(numericVars)
col = T{:, i};
if any(ismissing(col))
col(ismissing(col)) = mean(col(~ismissing(col)));
T{:, i} = col;
end
end
%% 3. Separate features and labels
X = T{:,1:end-1}; % All columns except last
y = T{:,end}; % Last column as label
%% 4. Normalization (Min-Max 0-1)
X = (X - min(X)) ./ (max(X) - min(X));
%% 5. Split train and test
N = size(X,1);
idx = randperm(N);
n_test = round(N * test_ratio);
test_idx = idx(1:n_test);
train_idx = idx(n_test+1:end);
X_train = X(train_idx, :);
y_train = y(train_idx, :);
X_test = X(test_idx, :);
y_test = y(test_idx, :);
%% 6. Display summary
fprintf('Dataset Summary for %s:\n', dataset_file);
fprintf('Total samples: %d\n', N);
fprintf('Features: %d\n', size(X,2));
fprintf('Training samples: %d\n', size(X_train,1));
fprintf('Testing samples: %d\n', size(X_test,1));
fprintf('Missing values handled: Yes\n');
fprintf('Normalization applied: Min-Max [0,1]\n\n');
end
🔗 参考文献
🎈 部分理论引用网络文献,若有侵权联系博主删除
#各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
#机器学习和深度学习时序、回归、分类、聚类和降维
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类
2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
#图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
#路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
#无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
#通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
# 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
#电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
# 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
#雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
# 车间调度