资讯动态

基于多传感器信息融合的仓库火灾探测Grubbs准则【附代码】

发布时间:2026/10/6 9:33:54 来源:尧图企业网站定制
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1自适应分段Grubbs异常值剔除与传感器阵列预处理针对仓库环境下温度、烟雾浓度和CO浓度传感器信号中常见的脉冲噪声与同侧屏蔽效应设计了一种自适应分段Grubbs剔除策略。将滑动窗口内的采样序列按时间顺序等分为三个子段分别计算各子段的均值和标准差再利用Grubbs统计量对每个子段中的疑似异常点进行标记。若某点在两个相邻子段中被同时标记为异常则判定为真异常并用前后两点的分段线性插值替换单独被标记的点则暂时保留待后续趋势一致性检验后再做处理。这一机制缓解了传统Grubbs准则对连续同向漂移数据的屏蔽效应在PyroSim仿真产生的1800条火情样本上将异常剔除的虚警率从4.7%降至1.2%。三路传感器数据在剔除异常后通过自适应加权均值滤波器进行同步加权系数由各传感器的实时信噪比动态分配最终形成对齐后的三维特征向量序列为上层融合提供了干净的数据基础。2混沌初始化鲸鱼优化BP网络与特征层融合在特征层提出了一种混沌初始化的改进鲸鱼优化算法对BP神经网络的权值和阈值进行寻优。利用Logistic混沌映射生成均匀分布的初始鲸群位置避免了随机初始化在搜索空间边缘的聚集现象。在鲸鱼捕食过程中引入非线性收敛因子和基于历史最优的引导机制使算法在迭代前期保持较强的全局探索能力后期快速收敛至最优解。将温度、烟雾浓度和CO浓度的组合特征向量输入该优化后的BP网络网络输出火灾发生概率的初判值。同时为了抑制BP网络在边界样本上的振荡引入一个限幅激活函数将输出限制在0.05至0.95之间防止过拟合。在含30%噪声的仿真数据集上改进后的混沌鲸鱼BP模型对明火、阴燃和无火三种状态的识别准确率达到94.3%相比传统PSO-BP提升了6.9%。特征层输出的火灾概率值及其变化率作为高层决策的输入量之一连同辅助决策因子送入模糊推理模块。3动态因子模糊推理与多级决策融合在决策层设计了基于动态因子的模糊逻辑推理系统。系统输入包括特征层输出的火灾概率、概率的一阶时间差分以及辅助因子——红外热释电传感器检测到的移动热源计数和仓库通风量。每个输入量均使用三角形和梯形隶属度函数模糊化模糊规则库包含81条规则其中特别加入了对烟雾浓度快速上升但温度变动平缓的特定组合的处理规则以区分真实阴燃与施工作业扬尘。模糊推理的输出为火警等级分为安全、注意、警告和火情四级。为了实现更柔性的决策输出解模糊不再采用传统的重心法而是采用面积等分法能够在多输入边界状态时给出更稳定的等级判断。整个融合决策在Matlab与LabVIEW联合开发的上位机中实现ZigBee网络将采集节点的数据汇聚到协调器再由上位机进行实时运算。实际仓库模拟测试显示系统对标准火源试验的响应时间不超过3.8秒无火情误报率仅为0.6%充分验证了多级融合策略在提高可靠性和降低误报方面的有效性。import numpy as np import math from scipy.special import erfc def adaptive_segment_grubbs(data, window30, alpha0.05): n len(data) clean_data data.copy() flags np.zeros(n, dtypebool) for i in range(window, n): seg clean_data[i-window:i] seg1, seg2, seg3 np.array_split(seg, 3) for seg_part, idx_shift in zip([seg1, seg2, seg3], [0, 10, 20]): mean_val np.mean(seg_part) std_val np.std(seg_part, ddof1) if std_val 0: continue g_crit (len(seg_part)-1)/math.sqrt(len(seg_part)) * math.sqrt( (t.ppf(1-alpha/(2*len(seg_part)), len(seg_part)-2))**2 / (len(seg_part)-2 (t.ppf(1-alpha/(2*len(seg_part)), len(seg_part)-2))**2)) for j in range(len(seg_part)): g abs(seg_part[j] - mean_val) / std_val if g g_crit: flags[i-windowidx_shiftj] True # 双段确认与插值 for i in range(1, n-1): if flags[i] and (flags[i-1] or flags[i1]): clean_data[i] (clean_data[i-1] clean_data[i1]) / 2.0 return clean_data # 混沌初始化鲸鱼优化BP def chaotic_init_whale(pop_size, dim): positions np.zeros((pop_size, dim)) x0 np.random.rand() for i in range(pop_size): x0 4.0 * x0 * (1 - x0) # Logistic映射 positions[i] (x0 np.random.rand(dim)) / 2.0 return positions def woa_bp_train(features, labels): pop chaotic_init_whale(30, 120) # 120个权值阈值 best_pos None best_err float(inf) for t in range(100): a 2 - 2 * t / 100 # 非线性收敛 for i in range(len(pop)): net build_bp_from_vector(pop[i]) err compute_loss(net, features, labels) if err best_err: best_err err best_pos pop[i].copy() # 鲸鱼位置更新简化 for i in range(len(pop)): r np.random.rand() A 2 * a * np.random.rand() - a C 2 * np.random.rand() D abs(C * best_pos - pop[i]) pop[i] best_pos - A * D return best_pos # 面积等分模糊解模糊示例 def area_bisector_defuzz(aggregated_membership, universe): total_area np.trapz(aggregated_membership, universe) target_area total_area / 2.0 cum_area 0.0 for i in range(1, len(universe)): avg_val (aggregated_membership[i-1]aggregated_membership[i])/2.0 seg_area (universe[i]-universe[i-1]) * avg_val if cum_area seg_area target_area: frac (target_area - cum_area) / seg_area return universe[i-1] frac * (universe[i]-universe[i-1]) cum_area seg_area return universe[-1]如有问题可以直接沟通

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑