陈悦华,李帅莹,刘文路
(1.武汉大学 土木建筑工程学院,湖北 武汉 430072;2.中信建筑设计研究总院有限公司,湖北 武汉 430014)
近年来,随着我国电网工程的发展,电网建设速度加快,投资规模日益扩大,电网工程造价呈上升趋势。对于电网工程而言,现行的造价管理体制,容易造成工程概算核算不准确的情形。电力工程造价中,概算超过估算、预算超过概算的现象普遍存在,导致投资容易失控。调查发现国家电网公司输变电工程的投资计划浪费为13%左右[1],准确估计工程概算,有助于电网工程项目投资、决策和管理。电网工程概算的传统方法是在了解设计和施工方案的基础上,通过列项、计算工程量、套定额子目,编制工程预算书,最终汇总得到工程造价。电网工程概算影响因素多、经验依赖性大,不同项目的个体差异大,在缺乏详备资料的情况下,传统方法计算结果误差较大[2]。
机器学习方法在解决此类模糊问题上展现出极大潜力。例如,神经网络已被用于学习及预测没有明确模型的问题,如股票价格预测、系统识别、工程设计和形象识别等[3]。虽然神经网络方法适用于定量指标的剖析,但是对制约要素中定性指标则无法进行科学的评估[4],且其所需样本量大,小样本通常会造成学习不足、性能不稳定、推广性能低[5]。相比之下,支持向量机有更好的应用前景[6],需要的样本数量更少,数据抗噪能力更强,且在运算过程中不需要赋权重,主观性因素相对较小[7]。当面对诸如工程造价估算这类影响因素繁多的问题时,很难搜集到分布合理且数量充足的样本。而支持向量机对样本数量的依赖性弱、泛化能力强,使其对工程造价预测问题具有较好的适配性。
支持向量机预测模型(support vector regression,SVR)的预测精度依赖于合适的参数,在标准果蝇优化算法(fruitfly optimization algorithm,FOA)和自适应FOA[8]的基础上,提出一种改进FOA算法,用于SVR的参数寻优,基于该算法构建一种用于电网工程概算预测的改进FOA-SVR模型。以电网架空线路工程为例,通过灰色关联法进行工程样本数据筛选,将样本代入SVR训练,并采用改进FOA算法寻找合适参数优化SVR模型。将该模型用于测试样本集的工程概算预测,经多次模拟测试证明该模型能够稳定输出高精度的预测结果,说明改进的FOA-SVR模型能够有效预测电网工程概算。
灰色关联分析(gray relation analysis,GRA)被广泛应用于相关性分析中,通过计算参考因素和各比较因素变化趋势同步性强弱,判断因素间关联程度高低并排序。参考因素序列曲线形状与比较序列越接近,则关联程度越高。数据归一化处理后,序列各位置的灰色关联系数和关联度的计算式分别为:
ξi(k)=
(1)
(2)
式中:ξi(k)为第k个位置的灰色关联系数;xi(k)为第i个比较序列的第k个位置;x0(k)为参考序列的第k个位置;ρ为分辨系数;ri为第i个比较序列与参考序列间的关联度。
支持向量机(support vector machine,SVM)模型来源于感知机解决分类问题的思想。对于线性可分的样本,通过训练已知样本数据来寻找分割样本的超平面。对于无法线性分割的样本,根据Cover定理,将这些非线性可分样本通过非线性转换,映射到足够高维的特征空间,则原样本变为线性可分的可能性极大。当遇到非线性可分样本时,可通过核函数将样本数据集非线性映射至高维空间后进行线性分割,再将结果逆映射至原空间,从而完成分类。常用核函数包括线性核函数、RBF核函数、多项式核函数、Sigmond核函数等。其中,线性核函数不易受到过度拟合的影响,RBF核函数抗干扰能力较强。
果蝇优化算法(FOA)是受果蝇觅食行为启发而创建,果蝇在寻找食物时,通过嗅觉捕捉食物气味,并向同伴传递气味浓度信息,个体的搜索方向既在大范围内与整个果蝇群体的行动方向保持一致,也在小范围内独立随机运动,在某一范围搜索完成后,果蝇群体通过比较,发现嗅得最浓食物气味的果蝇所在位置后,其他果蝇均会飞向该位置继续展开搜索。标准FOA算法步骤为:①初始化种群规模、最大迭代次数、果蝇群体位置、个体单次飞行范围等参数;②执行嗅觉搜索过程,赋予果蝇个体随机的单次飞行距离和方向,并计算此搜索位置的气味浓度值,即目标函数;③选择群体中最佳浓度值果蝇位置,群体移动至此位置;④重复步骤②~步骤③,不断进行迭代,直至浓度值满足要求或迭代次数达到最大值。
采用SVR方法对电网工程概算进行预测。对于电网工程,影响概算的工程特征众多,不同特征与概算结果的相关性不同,一些特征可能对概算值影响很小,但是若将样本中的各项特征全部代入,极可能造成信息冗余,增加计算量和训练时长。通过灰色关联分析筛选出与概算结果相关性强的变量,降低输入变量的维数,提高训练效率。SVR模型泛化能力优秀,采用较少样本训练,仍能得到较准确的预测模型,但SVR对于参数较敏感,需选择合适的回归参数才可获得高精度的预测结果。FOA作为新兴智能算法,原理简单、计算量小、搜索效率高,其广泛应用于机器学习的参数搜寻。为解决标准FOA易陷入局部最优点而无法找到全局最优解的问题,对标准FOA算法进行改进,增大找到全局最优参数的概率,采用改进的FOA算法搜寻SVR的最优参数并训练样本,从而提高预测模型的精度。改进FOA-SVR的模型结构如图1所示。
图1 改进FOA-SVR的模型结构
选取某电力设计院2020年的30个电网工程架空线路项目为样本,采用Matlab Libsvm工具箱的ε-SVR函数建立SVR预测模型,通过Matlab自编程序实现改进FOA算法,并用来优化SVR参数。随机选择25个样本作为训练集,构建静态投资概算的预测模型;剩余5个样本作为测试样本集,使用训练好的模型预测测试样本集的静态投资概算金额,并与实际金额对比,检验模型精度。
通过企业调查,共获取电网工程架空线路项目30个,每个项目含有工程特征51项,涵盖电压等级、线路参数、地形分布情况、地质条件、基础形式、材料量价等多种因素。剔除各项目均相同的7项特征后,对剩余44项特征进行灰色关联分析,取分辨系数ρ=0.5,得到各特征与概算值的关联度。对于SVR模型,采用过少的特征进行训练可能影响模型准确性,而特征过多会增大计算量,降低训练效率,还可能导致过拟合甚至迭代失败。因此,综合考虑训练效率与精度,选择关联度最高的前11个特征作为输入变量,具体如表1所示。
表1 关联度最高的11个工程特征及关联度
筛选后的样本数据示例如表2所示。对于SVR算法,特征变化范围的绝对值越大,输出结果的影响也越大。为防止数量变化范围大的工程特征“淹没”变化范围小的特征对结果的影响,保证信息均被有效使用,通过式(3)对数据进行归一化处理。归一化处理后的数据值较小,可显著减小计算量[10]。
表2 样本数据原始值
(3)
式中:x′为归一化后的数值;x为原始数值;xmax、xmin分别为样本中该特征的最大值和最小值。
参数选择的不同会显著影响SVR模型的预测准确性及运行速度。采用RBF核函数的SVR模型需考虑的参数包括核函数参数γ、惩罚参数C和损失函数中的参数ε。其中核函数参数γ过小会导致模型过拟合,过大会使模型精准性过差;惩罚参数C过小会导致对经验误差的惩罚力度不够而使训练误差变大,过大则降低模型的泛化能力;参数ε过小会使支持向量数目过多而影响模型推广能力,过大则导致支持向量过少而降低精度。在SVR参数寻优中,需找到参数的最优组合,故需同时对3个参数进行搜寻。
考虑到标准FOA方法在参数搜寻过程中容易陷入局部最优,因此对个体单次搜索范围和确定每次迭代后群体位置的算法进行改进,使FOA算法在无法寻得局部更优解时,跳出局部位置继续在全局范围内搜寻可能的最优解;在某一搜索区域寻得更优解后,能以合适的速度缩小个体在下次搜索时的范围。具体步骤如下:
(1)确定迭代次数n、种群数量sG和目标精度值δT。目标精度值为测试样本集中各样本预测值与真实值相对误差绝对值的最大值,综合考虑结果精度及运行速度,令n=1 000,sG=20,δT=4%;
(2)初始化果蝇群体位置。SVR参数寻优问题中需同时搜寻3个参数,群体位置的坐标(XG,YG,ZG)=(rand(LX),rand(LY),rand(LZ)),其中LX、LY、LZ分别为所有种群可能出现位置在3个方向上的集合,rand()为取均匀随机数的运算。在本问题中,LX=LY=LZ=[-20,20],考虑到参数值均需大于0,且敏感性在数值较大时偏低,在0附近较为敏感,SVR模型参数与坐标值设置为指数关系,即γ=2X,C=2Y,ε=2Z。
(3)确定浓度值判定函数值d,即为SVR预测所得的5个概算结果的相对误差最大值:
(4)
式中:P′为概算预测值;P为概算真实值;δP为相对误差。
(4)执行视觉搜索过程。种群中果蝇个体的搜索位置(Xi,Yi,Zi)=(XG+rand(L),YG+rand(L),ZG+rand(L)),其中L为单次飞行位置参数,在标准FOA算法中,参数L不随迭代次数变化;在自适应FOA方法中,参数L通常设置为迭代次数的函数。参考变步长果蝇优化算法[11],设置参数L为:
(5)
式中:w为指数因子,其取值影响收敛速度和节奏,取w=0.001;i为在某一区域内连续寻得更优解的次数,当某次迭代中,区域内无更优解时,则i归0;n为最大迭代次数;δi1为本次迭代中群体内第一只果蝇搜索位置所返回的精度值;ζ为比例调整系数,取ζ=5。
(5)将此次搜索所选参数代入SVR模型,对样本集的25个样本进行训练,使用训练好的模型对预测样本集进行预测并计算与真实值的相对误差,得到浓度判定函数值d。
(6)
(7)
(8)
(9)
当本次迭代的精度优于历史最佳精度时,更新历史最优精度并以此精度值的参数所在位置作为下次迭代的种群位置;当本次迭代精度低于历史最优精度时,则将下次迭代的种群位置初始化为随机位置。
图2 改进FOA算法的参数寻优流程
考虑电网工程中对于概算的精度估计要求和算法运行效率,将SVR预测模型的精度目标δT设置为4%,最大迭代次数n设置为1 000。由于改进的FOA-SVR算法在参数寻优过程中具有一定随机性,进行15次模拟排除偶然结果的影响。记录每次模拟中FOA寻优算法迭代次数、运行时间、测试样本集最大相对误差绝对值,按精度排序的结果如表3所示。
表3 模拟精度及运行效率
使用15次模拟生成的预测模型对测试样本集进行预测,各样本的最大相对误差绝对值均在5%以内,说明该算法能够稳定地在有限迭代次数内生成高精度预测模型,对样本进行有效预测。15次模拟中,有13次模拟均在最大迭代次数内成功寻得满足目标精度值δT的SVR参数,提前终止迭代,13次模拟的平均迭代次数为144次,平均运行速度为1.11 s。可见优化FOA算法在绝大多数时间内,能以较少迭代次数、较短运行时间找到符合高精度目标的SVR参数,全局寻优能力较强。以第8次模拟为例分析预测结果,经过32次迭代,改进FOA算法成功寻得满足δT的SVR参数:γ=2-3.369 5,C=2-2.898 5,ε=2-5.995 8。第8次模拟的预测结果如图3所示,可知测试集样本均聚集在零误差参考线附近,说明预测值相当接近实际值。此次模拟的平均相对误差绝对值为2.25%,最大相对误差为3.75%,出现在P26样本。各样本具体预测情况如表4所示。
图3 第8次模拟预测结果散点图
表4 第8次模拟预测结果
图4 历史最优精度随迭代次数的变化
图5 单次搜索最优精度随迭代次数的变化
图6 种群搜索位置三维表示图
为进一步说明改进FOA算法在参数寻优方面的性能优势,与传统的网格搜索方法进行对比。网格搜索方法是在相同的[2-20,220]区间内,采用2为底的对数坐标进行网格划分,寻找SVR参数γ、C和ε的最优解,并进行预测,预测结果如表5所示。
表5 网格搜索预测结果
由表5可知,传统的网格搜索方法若想要达到同样的精度要求,只能加密网格,当网格间隔N从1.0加密至0.5时,最大相对误差绝对值仅从4.05%提升至3.97%,而算法迭代次数却呈幂函数上升,运行时间也大幅增加。故对于本问题而言,网格搜索法的精度提升缓慢,且在提升精度的过程中计算资源消耗和时间开销都大大增加,总体效率较低。
再采用标准自适应FOA对此问题进行SVR参数寻优和预测,同样以4%的最大相对误差绝对值为停止迭代条件,最大迭代次数设置为1 000,保持其他参数不变,进行15次实验,结果如表6所示。由表6可知,15次实验中有8次实验未能在1 000次迭代内寻得满足精度要求的参数,且在第8次、第12次和第15次迭代中陷入精度很低的局部最优中,导致最终训练模型的预测误差在30%左右,严重低于预设标准。可见标准变步长FOA方法在此问题中所表现的稳定性较低,无法保证训练结果的有效性。对比分析发现,改进FOA方法在SVR参数寻优问题上,有较好的效率和稳定性。
表6 模拟精度及运行效率
(1)为解决SVR预测模型参数寻优问题,笔者在标准FOA算法和自适应FOA算法的基础上,提出了一种改进FOA算法,并引入GRA数据处理,构建了一种用于电网架空线路工程概算预测的改进FOA-SVR模型。
(2)通过GRA筛选出11个与概算关联度高的电网架空线路工程特征,使用改进FOA算法对SVR模型进行最优参数搜寻,能够有效得到电网架空线路工程初步设计批复概算,且精度较高,为缺少详细数据参考的电网工程项目提供了一种较为有效的自动化概算估计方法。
(3)多次模拟验证发现,改进FOA算法能够及时突破局部最优解,具有较强的全局寻优能力,且收敛效率较高,能够较稳定地获得满足预测精度要求的SVR参数,对电网架空线路工程概算预测问题有较好的适用性。
(4)由于获取的样本数量有限,所提出模型及相关寻参算法的验证仅局限于当前样本,未能在大数据下检验模型的泛化能力。未来将考虑收集更多的样本集,构建多种机器学习模型,系统对比研究模型的泛化能力和预测精度,并基于结果进一步开展模型改进和算法优化研究。