APP下载

基于MFO-SVM的空气质量指数预测

2018-07-10胡红萍白艳萍

中北大学学报(自然科学版) 2018年4期
关键词:飞蛾适应度空气质量

高 帅, 胡红萍, 李 洋, 白艳萍

(1. 中北大学 理学院, 山西 太原 030051; 2. 西安电子科技大学 电子工程学院, 陕西 西安 710071)

0 引 言

随着经济建设和城市化的进程日益加快, 人民的生活质量日益提高, 但是能源大量消耗和污染物排放造成的空气污染问题日趋严重, 雾霾天气日渐增多, 严重影响着人们的日常生活和身心健康. 因此, 空气质量预测对指导人们生活和工作具有极其重要的意义. 空气质量指数(AQI)是衡量空气质量的重要依据. 空气质量数据是高度复杂的非线性时间序列, 运用传统的线性方法难以取得良好的预测结果. 近年来, 智能优化算法飞速发展并广泛应用于空气质量问题, 其强大的搜索能力, 易于寻找最优解的特点, 得到了众多学者的青睐. 通常用于空气质量预测的智能优化算法主要有支持向量机(Support Vector Machines, SVM)[1]、 遗传算法(Genetic Algorithm, GA)[2]、 粒子群优化算法(Particle Swarm Optimization, PSO)[3]、 人工鱼群算法[4]等. 文献[1]采用支持向量机空气质量预测时, 预测精度提高但计算时间长, 惩罚函数c和核函数参数g难以寻优. 文献[2]指出遗传算法算法预测AQI时, 虽然遗传算子和交叉算子能快速收敛, 但在由于变异的不确定性, 极易陷入局部最优. 飞蛾扑火优化算法作为一种新型的群智能优化算法, 在工程方面的应用还比较少. 文献[5]尝试用MFO算法优化电力系统自动控制器参数, 虽然取得良好的效果, 但局部极值亟待解决.

本文针对飞蛾扑火优化(MFO)算法容易陷入局部最优、 支持向量机(SVM)惩罚函数c和核函数参数g难以寻优问题, 借鉴支持向量机(SVM)所需样本少和全局最优的优点, 并结合飞蛾扑火优化算法, 来提高SVM的性能, 同时避免飞蛾扑火优化算法陷入局部最优.

1 飞蛾扑火优化算法(MFO)

蛾是一种奇特的昆虫, 与蝴蝶家族非常相似[6-8]. 它们通过一种特殊的横向定位机制进行导航, 飞蛾在飞行中保持相对于月球的固定角度, 由于月球远离飞蛾, 这种机制可以保证飞蛾沿平直线飞行. 当飞蛾看到人造光时, 它们会试图保持与光线相似的角度直线飞行, 但由于这样的光线比月球的光线距离近很多, 因此与光源保持相似的角度会导致飞蛾无用的或致命的螺旋飞行路径, 飞蛾最终会向光收敛. 通过对该行为建模, 提出Moth-Flame Optimization(MFO)算法[7].

MFO算法中, 假设候选解是飞蛾, 问题的变量是空间中飞蛾的位置. 因此, 通过改变其位置向量, 飞蛾可以在一维、 二维、 三维或超维空间中飞行. 由于MFO算法是基于群体的算法, 所以蛾的集合用矩阵M表示, 矩阵OM表示蛾的适应度值, 另一个关键的要素是火焰, 类似于蛾矩阵, 火焰的集合用矩阵F表示, 矩阵OF表示火焰的适应度值, 表示为

(1)

(2)

式中:n是飞蛾的数量;d是变量的数量(维数).

矩阵OM适应度值是每个飞蛾的适应度(目标)函数的返回值. 将每个蛾的位置矢量传递给适应度函数, 并将适应度函数的输出分配给相应的蛾作为其适应度值. 飞蛾是搜索空间移动的实际搜索代理, 而火焰是迄今为止获得的飞蛾的最佳位置. 因此, 每个飞蛾都会搜索一个旗帜(火焰), 并在找到更好的解决方案的情况下进行更新. 通过这种机制, 飞蛾不会失去最好的解决方案.

MFO算法是一个三元组, 它近似于优化问题的全局优化, 定义为

MFO=(I,P,T),

(3)

I是一个产生随机蛾数和相应适应度值的函数. 该函数为

I∶φ={M,OM}.

(4)

作为主要作用的P函数将使蛾在搜索空间周围移动. 该函数接收到M矩阵, 并最终返回其更新的矩阵.

P∶M→M.

(5)

如果满足终止条件, 则T函数返回true, 如果终止标准不满足, 则返回false.

T∶M→{true,false}.

(6)

函数I初始化后生成初始解, 并计算目标函数值.P函数迭代运行, 直到T函数返回true. 使用等式(7)更新每个飞蛾相对于火焰的位置.

Mi=S(Mi,Fj),

(7)

式中:Mi表示第i个飞蛾;Fj表示第j个火焰;S是螺旋功能. 本文选择对数螺旋作为飞蛾的主要更新机制, 螺旋定义为

S(Mi,Fj)=Di·ebt·cos(2πt)+Fj,

(8)

式中:Di表示第j个火焰和第i个飞蛾的距离;b是用于定义对数螺旋形状的常数;t是[1,1]中的随机数.

Di=|Fj-Mi|,

(9)

方程(8)是模拟飞蛾螺旋飞行的路径, 该等式中, 飞蛾的下一个位置是相对于火焰定义的. 螺旋方程中的t参数定义了蛾的下一个位置接近于火焰的程度(t=-1是火焰最近的位置, 而t=1表示最远). 每只蛾只需要使用方程(8)对一个火焰更新其位置, 每次迭代在更新火焰列表之后, 根据其适合度值对火焰进行排序, 然后飞蛾更新它们相对于相应火焰的位置. 第一个飞蛾总是更新它相对于最好的火焰的位置, 而最后一个飞蛾更新相对于列表中最差的火焰的位置. 搜索空间中相对于n个不同位置的飞蛾的位置更新可能降低对最有希望的解决方案的利用率. 为了解决这个问题, 提出了适应机制的数量火焰. 在迭代过程中火焰的数量使用公式(10)自适应地降低.

(10)

式中:L是当前迭代次数;N是火焰数;T表示最大迭代次数.P函数的执行步骤如下:

用式(10)计算更新火焰数量

计算飞蛾的适应度函数值

if 迭代次数为1

F=sort(M);

OF=sort(OM);

else

F=sort(Mt-1,Mt);

OF=sort(Mt-1,Mt);

end

fori=1∶n

forj=1∶d

更新r和t

用式(9)计算飞蛾与相应火焰之间的距离

用式(7)和(8)更新飞蛾与相应火焰之间的距离M(i,j)

end

end

如上所述, 执行P函数直到T函数返回true.P函数终止后, 最佳飞蛾作为获得的最佳近似值返回.

2 MFO-SVM算法

支持向量机[9-10]中惩罚函数参数c和核函数参数g对分类预测的准确性有很大的影响, 但目前还没有调整c和g的较好的算法. 通常采用的是网格法, 但是当搜索范围较大时这种网格法比较费时.

本文将c和g两个参数作为MFO算法的优化变量, 将SVM作为MFO的评估函数, 提出了MFO-SVM算法. 将训练集在K-CV意义下的准确率作为 MFO中的适应度函数, 利用MFO对 SVM 参数进行优化的整体算法过程如图 1 所示.

图 1 运用MFO优化SVM参数的流程图Fig.1 Flowchart for optimizing SVM parameters using MFO

MFO-SVM算法具体步骤如下:

1) 原始数据信息粒化, 每4天作为一个粒化窗口, 采用三角模糊粒子作为隶属度函数, 找到每个窗口的最小值Low、 平均值R和最大值Up. 隶属度函数为

(11)

式中:a为最小值Low;m为平均值R;b表示最大值Up.

2)考虑到数据的广泛范围, 对Low, R和Up归一化, 以确保所有的变量的值在0和5之间变化. 归一化如下

(12)

式中:P为样本数据;PN是P的归一化值;Pmin是P的最小值;Pmax是P的最大值.

3) 确定适应度函数. 将训练集 K-CV 意义下的准确率作为 MFO中的适应度函数;

4) 初始化. 创建第一个随机的飞蛾群体;

5) 计算适应度函数值, 判断是否满足终止条件(最大进化代数), 如果满足, 则执行步骤7, 否则执行步骤6;

6) 通过飞蛾排序、 更新火焰数量和更新飞蛾相对火焰位置找到最优解;

7) 输出最优解(bestc, bestg);

8) 使用MFO-SVM算法训练数据, 然后使用R2(平方相关系数)和MAPE(相对误差)评估算法.

(13)

(14)

3 实 验

3.1 数据来源

实验数据来源于中华人民共和国环境保护部(http:∥datacenter.mep.gov.cn/index)发布的山西省太原市和大同市实时空气质量数据, 采样时间为2015年1月1日至2017年3月10日, 采样频率为每天一次, 数据各计800组. 根据最新颁布的 《环境空气质量标准》(GB 3095-2012), 本次空气质量预测将空气质量指数(AQI)、 细颗粒物(PM2.5)、 可吸入颗粒物(PM10)、 二氧化硫(SO2)、 一氧化碳(CO)、 二氧化氮(NO2)、 臭氧(O3)纳入预测体系中[11-12].

本文选取上述第t天7个指标作为输入变量, 第t+1天的AQI作为输出, 并把预测等级划分I级(优), II级(良), III级(轻度污染), IV级(中等污染), V级(重度污染), 第VI类(严重污染)六类. AQI由浓度划分如表 1 所示.

表 1 空气质量指数范围及等级分布Tab.1 Air quality index range and grade distribution

3.2 实验结果与分析

每个城市选取2015年1月1日至2017年3月10日共800组数据作为训练集, 其中每四天的作为一个粒化窗口, 一共200个粒化窗口, 在实验中用2015年1月1日至2017年3月10日200个粒化窗口的空气质量的7个指标预测第201个粒化窗口, 即2017年3月11日至2017年3月14日的AQI最小值, 平均值和最大值. 本文中实验采用Windows64位PC计算机, 数学软件MATLAB R2014a, 分别用SVM算法、 PSO-SVM算法、 GA-SVM算法和MFO-SVM算法进行预测, 表 2 为2017年3月11日至2017年3月14日的AQI实测值, 表 3 为各预测模型对太原市这4天AQI指数范围的预测, 表 4 为各预测模型对大同市这4天AQI指数范围的预测.

表 2 AQI实测值Tab.2 AQI measured values

表 3 各模型对太原市AQI的预测结果比较Tab.3 Comparison of prediction results of each model for Taiyuan AQI

表 4 各模型对大同市AQI的预测结果比较Tab.4 Comparison of prediction results of each model for Datong AQI

由表 2 和表 3 可以看出, MFO-SVM算法在模型平方相关系数和平均相对误差方面都优于其他三种模型, 并且MFO-SVM算法预测的AQI变化范围与实际情况完全符合, 平方相关系数接近100%, 误差较小, 从而该算法更优.

此外, 通过上述4种预测模型, 分别得到MFO-SVM算法、 GA-SVM算法、 PSO-SVM算法和SVM算法实际数据的预测散点对比图, 其中山西省太原市MFO-SVM算法最小值、 最大值的实际数据与预测数据的对比图如图 2 所示, 4种算法的误差分析图如图 3 所示. 大同市MFO-SVM算法最小值、 最大值的实际数据与预测数据的对比图如图 4 所示, 4种算法的误差分析图如图 5 所示.

图 2 太原市MFO-SVM算法最小值、 最大值的实际数据与预测数据的对比图Fig.2 Comparison of the actual and predicted data of the minimum and maximum values of the MFO-SVM algorithm in Taiyuan

图 3 各算法预测太原市AQI的相对误差图Fig.3 The relative error predicted by each algorithm in Taiyuan AQI

图 5 各算法预测大同市AQI的相对误差图Fig.5 The relative error predicted by each algorithm in Datong AQI

由图 2 和图 4 可以看出, MFO-SVM算法与实际数据点更加接近, 与实际情况完全吻合, 预测效果最好. 由图3和图5可以看出, MFO-SVM算法的相对误差在零附近徘徊且接近于零, 误差分布比较密集, 相对于另外三种算法相对误差明显较小.

4 结 论

本文以山西省太原市和大同市2015年至2017年间800组数据为实验对象, 将支持向量机(SVM)思想用于优化飞蛾扑火算法, 通过实验, 得到了较为理想的预测结果. 结合AQI预测结果图和相对误差对比图, MFO-SVM算法与实际情况完全符合, 更加适合预测AQI的未来变化趋势, 从而更好地指导人们的生产实践. 因此, MFO-SVM算法在预测精度、 误差率和可靠性方面更优, 可以应用于人类生产实践中, 指导人们提前做好防范措施.

猜你喜欢

飞蛾适应度空气质量
改进的自适应复制、交叉和突变遗传算法
可爱的你
Trolls World Tour魔发精灵2
飞蛾说
启发式搜索算法进行乐曲编辑的基本原理分析
车内空气质量标准进展
重视车内空气质量工作 制造更环保、更清洁、更健康的汽车
多功能空气质量远程检测仪
勇敢的小飞蛾
基于人群搜索算法的上市公司的Z—Score模型财务预警研究