夏德斌, 李亚东, 丁 彬, 辛 鹏, 杨 洋
(山东海洋工程装备有限公司, 山东 青岛 266555)
船舶通常具有结构紧凑、设备密集、通道狭窄的特点,加之船舶内部潜在火灾发生源较多,易发生火灾事故,而船舶火灾又具有扩展快、扑灭难度较大、人员逃生困难等特点[1],易造成严重的后果。火灾报警系统作为发现火灾的眼睛,其可靠性与准确性直接影响着火灾防控效果。目前,船舶火灾探测通常采用传感器的方式。
船舶上常用的火灾探测器有感烟型、感温型、感光型及气体探测型等[2],为克服单一型式探测器的不足,提高火灾早期探测准确率,通常根据舱室特点,常采用多传感器组合的方式进行探测。这种多传感器组合探测方式可以避免单一传感器对不同火灾类型探测的盲区,提高火灾探测的可靠性。但目前船舶多传感器组合的控制逻辑通常采用1oo2、2oo3等简单控制方式,没有有效融合各传感器的参量信息,存在报警系统智能化程度低和火灾自动报警系统误报、漏报问题较多等主要问题[3]。
目前,正在进行双船拆解系统(Twin Marine Lifter, TML)的研究,为提高TML系统在海上油田设施拆除作业过程中的安全性,需要一套高效可靠的火灾报警系统。因此,结合现有火灾探测系统的特点,提出一种基于支持向量机(Support Vector Machine, SVM)的多传感器火灾探测技术,通过对多传感器探测信息的有效融合,形成多传感器火灾探测方案,从而减少由单火灾探测器所导致的漏报、误报等情况的发生,提高火灾报警系统的可靠性与及时性,并将此方案在TML火灾报警系统中加以应用。
支持向量机是一种有监督的分类模型,其通过对输入数据进行学习,构建出最优分类函数,从而实现智能分类。给定训练样本集D=(x1,y1),(x2,y2),…,(xm,ym),其中yi∈{-1,+1}]。SVM的基本思想就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开[4],且使得样本到划分超平面之间的间隔最大。图1是SVM的基本形式。然而,通常输入样本并不是线性可分的,此时可通过将低维的原始样本空间向更高维度映射,实现样本在更高维度空间内线性可分,即引入核函数k(xi,yi)=Φ(xi)TΦ(xj) 来代替xi与xj在特征空间的内积。
图1 SVM基本形式
此时,SVM的求解问题变为
(1)
式中:Φ(xi)为将xi映射到更高维度的特征向量;w=(w1,w2,…,wd)为划分超平面的法向量,决定了划分超平面的方向;b为划分超平面与原点之间的距离。
对式(1)使用拉格朗日乘数法可求得其对偶问题,并引入惩罚因子C以防止过拟合产生,于是求解问题变为
(2)
求解后可得分类函数为
(3)
火灾初期发生的阴燃阶段,产生大量的烟和少量的热,很少或没有火焰辐射,而在明火阶段,可产生大量的热、烟和火焰[5]。因此,可以综合考虑多个火灾特征来识别火灾,通过CO、CO2气体浓度和环境温度的变化区分阴燃火和明火。
基于SVM的多传感器火灾探测系统模型如图2 所示。通过多传感器探测环境变量,将采集到的数据经过预处理输入SVM模块,由SVM模块判断是否有火灾发生并输出到火灾报警系统。
图2 SVM多传感器火灾探测模型
传感器所测不同参量的数值具有较大的差异性,如温度数值与CO气体浓度数值相比并不在一个数量级上,若是不经处理直接输入SVM,会使温度信息在判断中占绝对主导地位,导致模型无法有效融合多信息参量,因此,有必要对输入数据进行预处理。
如若选用CO浓度、烟雾浓度和环境温度作为火灾探测的依据,考虑CO浓度和烟雾浓度的取值范围都在[0,1],只需将温度范围也归一至[0,1],采取的转换函数为y=(x-min)/(max-min)。
经过归一化处理后的训练数据如表1所示(选取前10组数据)。
表1 归一化后的火灾样本数据
考虑到二维图像显示更为直观,选用感温探测器和感烟探测器2个数据进行程序编写与验证。程序编写采用Python语言,调用Scikit-learn模块,由于多传感器火灾预测并无先验信息,因此核函数选用高斯核函数,同时将惩罚因子C设为10,将数据样本中的70%作为训练数据对程序进行训练以获得合适的α和b值,同时将数据样本中的30%作为测试数据进行程序验证,以测试程序的分类效果,如图3所示。
图3 基于感温和感烟探测器的判断结果
节选程序如下:
file_path=‘fire_train_data.xlsx’
data=pd.read_excel(io=file_path)
fire.x=data.iloc[:,0:2]
fire.y=pd.Categorical(data[‘fire’]).codes
fire.x_train, fire.x_test, fire.y_train, fire.y_test = train_test_split(fire.x, fire.y, random_state=2, test_size=0.28)
svm_clf = svm.SVC(C=10, gamma=1, kernel=‘rbf’, decision_function_shape=‘ovo’)
decision = svm_clf
decision.fit(fire.x_train,fire.y_train.ravel())
图3中,三角形点表示无火灾发生,正方形点表示发生阴燃火,圆形点表示发生明火。由图3可以看出:除将一例无火灾发生状态误判为阴燃火状态外,其余状态均落在相应区域内,准确率较高。造成这一例判断错误的原因有样本采集误差、火灾边界并不绝对等。为了进一步提高火灾探测的可靠性,可以适当增加CO探测器,通过3个参量可以有效降低样本误差带来的干扰,基于3个参量的SVM火灾探测只需在程序中增加CO探测数据即可,节选程序如下:
file_path=‘fire_train_data.xlsx’
data=pd.read_excel(io=file_path)
fire.x=data.iloc[:,0:3]
fire.y=data.iloc[0:,3:4]
fire.y=pd.Categorical(data[‘fire’]).codes
fire.x_train, fire.x_test, fire.y_train, fire.y_test = train_test_split(fire.x, fire.y, random_state=2, test_size=0.28)
svm_clf = svm.SVC(C=10, gamma=1, kernel=‘rbf’, decision_function_shape=‘ovo’)
decision = svm_clf
decision.fit(fire.x_train,fire.y_train.ravel())
仿真结果如图4所示。
图4 基于感温、感烟和CO探测器的判断结果
图4中,横三角表示无火灾发生状态,上三角表示发生阴燃火状态,圆点表示发生明火。与实际结果对比,分类准确率为100%。可见,采用完善后的SVM多传感器火灾探测方法可以大幅提高火灾探测的准确性。
火灾发生时的环境多变,火灾发生状态也存在较多差异性,难以用一般的数学模型来描述,这给火灾探测带来了一定难度。通过分析SVM分类特点,将多传感器信息输入SVM模块进行判断,利用SVM间隔最大和具有自学习等特性,可以大幅提高系统的准确率。将SVM多传感器火灾探测技术运用到船舶火灾探测中,特别是作业工况复杂的海上油田设施拆解平台上,对船舶火灾的防治具有积极意义。