一种基于细菌觅食优化算法的中长期径流预报方法与流程

文档序号:11691366阅读:228来源:国知局
一种基于细菌觅食优化算法的中长期径流预报方法与流程

本发明属于水文预报技术领域,特别涉及一种基于细菌觅食优化算法的中长期径流预报方法。



背景技术:

在水文学中,径流是指降雨及冰雪融水或者在浇地的时候在重力作用下沿地表或地下流动的水流。径流预报属于水文预报范畴,是应用水文学的一个重要组成部分,它是建立在掌握客观水文规律的基础上,预见未来径流变化的一门应用科学技术,是水资源调度、水利防汛和抗旱科学实施的前提。径流预报按预见期可分短期径流预报和中长期径流预报,划分的标准一般以流域汇流时间为界,凡预报的预见期小于或等于流域汇流时间的称为短期预报,预报的预见期大于流域汇流时间的称为中长期预报。

中长期径流预报是指根据前期或现时已出现的水文、气象等信息,应用水文学、气象学、水力学、统计学等相关学科的原理和方法,对河流、水库、湖泊等水体未来3天以上、1年以内的径流情况和趋势作出定量或定性预报。定量预报是指根据历史数据和资料,应用数理统计方法来预测径流的未来,或者利用径流发展的因果关系来预测径流的未来。而利用直观的材料,依靠个人的经验判断和分析能力对径流未来的发展进行预测叫做定性预报,也称之为直观预报。

受气候、气象、下垫面、人类活动等诸多因素的综合影响,流域中长期径流预报过程具有一定的时空不确定性。从趋势性、周期性、随机性、区域性等方面分析径流的时空演变规律是水文学的重要研究内容之一,也是中长期径流预报的基础。从诸多水文-气象因子中为特定流域选取合适的预报因子集合,并构建预报因子集合与流域径流之间的关系,是中长期径流预报的难点。

中长期径流预报的方法很多,如传统的物理成因分析法、数理统计方法和包括模糊数学法、灰色系统方法、人工神经网络在内的现代预报方法。作为一种新兴的机器学习方法,支持向量机(supportvectormachine,svm)目前也被越来越多的应用在中长期径流预报中。支持向量机是以统计学习理论的vc维理论以及结构风险最小化原理为理论基础的。支持向量机具有严格的数学理论基础、良好的泛化能力和直观的几何解释,在解决小样本、非线性、高维度等问题时表现优异。支持向量回归机(supportvectormachineforregression,svr)是建立在svm思想上的回归算法,具有坚实的理论基础,已成为继人工神经网络之后机器学习领域新的研究热点,越来越多的应用在中长期径流预报中。

svr的基本思想是用少数支持向量代表整个样本集,利用一个非线性映射

将训练集映射到一个高维特征空间,使得在输入空间中非线性函数估计问题转换为高维特征空间中的线性函数估计问题。目前应用较多的基于粒子群算法的支持向量回归机中长期径流预报方法流程如图1所示,该方法主要包括以下步骤:

1)确定回归函数。一般地,svr模型的回归函数如式(1)所示:

式中,x为输入样本,l表示样本数量,αi、αi*为拉格朗日乘子,αi、αi*∈[0,c],c为误差惩罚参数,用于在结构风险和经验风险之间进行平衡,增加c值将相应增加规则化的经验风险,且满足αiαi*=0;b为常数,取值依据实际问题而定;为内积运算。

可以看到,在上面的优化问题中需要计算高维特征空间中的内积运算,为了避免“维数灾难问题”,支持向量机理论只考虑高维特征空间的点积运算k(xi,x)为核函数。在径流预报问题中核函数选择了径向基函数,即此时svr模型的回归函数(即式(1))经过抽象可以表示为:

y=f(x|c,ε,σ)(2)

式中,ε为不敏感损失系数,y为径流实测值,σ为核参数,c,σ称为学习参数,它们的值都是需要确定的。

2)输入初始资料,即历史年径流量数据。先根据文献资料随机选择c,σ的取值,并选择核函数(径向基函数)得到映射关系。

3)将学习参数c,σ和历史径流数据输入步骤1)得到的svr模型中,并用算法优化学习参数c,σ的值,学习参数除实验试凑等人工方法选取外,主要采用遗传算法、粒子群优化算法、蚁群优化算法等智能方法进行寻优选取。其中,将粒子群算法确定及优化c,σ的步骤如下:

3-1)确定初始群体规模、粒子的初始速度和位置、最大迭代次数,粒子群参数;

3-2)计算每个粒子的适应度值,比较适应度值,得到当前所有粒子的极值(即适应度最大的值),将当前粒子的极值作为整个群体的全局最优值;

3-3)更新粒子的速度、位置;

3-4)将更新后的粒子极值与全局最优值进行比较,若粒子极值大于全局最优值,则令粒子的极值代替全局最优值,否则保留之前的全局最优值;

3-5)若达到3-1)中设定的最大迭代次数或解不再变化(即终止条件),则终止迭代,得到c,σ的值;否则重新返回步骤3-2);

4)将3-5)中优化得到的c,σ值代入svr模型中进行预测,给定不敏感损失系数ε的值,计算预测值和实测值的误差;

5)如果误差满足设定范围(一般认为预报误差与实际值的比小于20%即为预报精度较高),则输出径流预测值;若不满足设定范围,则重新返回步骤3)。

实验结果表明,上述预测方法存在计算量大,耗时长,需要的训练样本个数多,输出的预测结果容易陷入局部最小从而预报精度不高等问题。

细菌觅食优化算法(bacterialforagingalgorithm,bfa)是美国俄亥俄州立大学的passino教授于2002年提出的一种智能优化算法,通过模拟大肠杆菌在觅食过程中体现出来的自适应优化行为,以适应度函数的优劣来指导算法的搜索。作为一种新兴的智能优化算法,与其他智能优化算法相比,该算法具有程序编写简单、参数设置少、全局寻优能力强等优点。细菌觅食优化算法的基本流程如图2所示,包括步骤简述如下:

1)首先初始化种群:设置种群规模大小,算法执行次数等。选取适应度函数,适应度函数的选取按实际问题来定。

2)遍历每个细菌个体,并分别计算它们的适应度值。

3)对算法过程中的三种行为的适应度进行评估,先进行的是趋向性的评估,当趋向性操作执行次数达到趋向行为预定次数时,趋向行为评估结束;然后进行复制行为评估,当复制操作进行次数达到复制行为预定次数时,复制行为评估结束;最后进行驱散行为评估,当驱散操作进行次数达到驱散行为预定次数时,驱散行为评估结束。当趋向行为、复制行为和驱散行为执行次数均达到预定次数后算法评估才结束(图2中,nc、nre、ned分别表示趋向行为、复制行为和驱散行为需要执行的预定次数,i、j、k的初始值均为0)。

4)评估三种行为以后,不符合条件的细菌会被淘汰。然后对剩下的细菌进行适应度值的比较,选出适应度值最大的细菌,即为所求问题的最优解。



技术实现要素:

本发明的主要目的在于针对已有中长期径流预报方法的不足,提出一种基于细菌觅食优化算法的中长期径流预报方法。本发明提高了采用支持向量回归机svr模型的中长期径流预报方法的预测精度、泛化能力以及实用性,可以作为中长期径流预报的一种有效的方法。

本发明提出的一种基于细菌觅食优化算法的中长期径流预报方法,包括以下步骤:

1)筛选预报因子:将历史的多项环流指数数据和待预报流域历史径流数据进行相关性分析,得到相应的相关系数,选取相关系数大的且对待预报流域径流有物理影响的环流指数作为预报因子,并获得相应的预报因子值;

2)把步骤1)得到的预报因子值作为svr模型的输入样本,并利用公式对输入样本进行归一化处理;其中,yt、ymax、ymin分别表示选定时间段内某一时刻任意预报因子值、选定时间段内所选预报因子值中的最大值、选定时间段内所选预报因子值中的最小值,yt*即为所选时刻该预报因子的归一化值;遍历所有的预报因子值,得到每个预报因子的归一化值;

3)选定待预报流域s年的径流量数据作为历史样本,将历史样本中前n年的径流量数据及对应年份的预报因子归一化值作为训练集,后m年的径流量数据及对应年份的预报因子归一化值作为检验集,s=n+m,n>m,s、n、m均为正整数;

4)利用步骤3)得到的训练集对svr模型进行训练,采用细菌觅食优化算法确定svr模型中误差惩罚参数c、核参数σ和不敏感损失系数ε三个参数的值:将训练集的每个样本作为一个细菌,单个细菌由取值范围内的c,σ,ε二进制值排序排列组成,分别计算每个细菌的适应度值,通过细菌觅食优化算法的三种行为对细菌适应度值进行评估以后得到满足条件的适应度值最大的细菌;

5)解码适应度值最大的细菌,即将细菌二进制的表示形式转换成十进制数值形式,得到svr模型参数c,σ,ε的最佳值;

6)将c,σ,ε的最佳值输入svr模型中进行训练,得到svr模型的初步预测结果;

7)将步骤3)中选定的检验集与步骤6)中得到的初步预测结果进行比较,分析误差,若误差不在设定范围内,则调整细菌觅食优化算法中三种行为的执行次数,重新返回步骤4);若误差在设定范围内,则输出最终预测结果。

本发明的特点及有益效果:

本发明提出的一种基于细菌觅食优化算法的中长期径流预报方法,该方法是在svr径流预报基础上加上细菌觅食优化算法,实现svr模型参数的优化选取,再将参数返回给svr,最终输出径流预报数据,达到中长期径流预报的效果。本发明克服了目前常用方法中预测精度不高和效率不好的缺点,所提出的方法编写简单、参数设置少、全局寻优能力强,可以有效避免计算量大、耗时长、需要的训练样本个数多、输出的预测结果容易陷入局部最小从而预报精度不高等问题。本发明旨在提高预报精确度和预报效率,是一种高效的中长期径流预报方法,可以应用在实际的中长期径流预报中。

附图说明

图1为已有的基于粒子群算法的支持向量回归机中长期径流预报方法流程框图。

图2为细菌觅食优化算法流程框图。

图3为本发明的基于细菌觅食优化算法的中长期径流预报方法流程框图。

具体实施方式

本发明提出了一种基于细菌觅食优化算法的中长期径流预报方法,下面结合附图和具体实施例进一步详细说明如下。

本发明提出的一种基于细菌觅食优化算法的中长期径流预报方法,流程框图如图3所示,包括以下步骤:

1)筛选预报因子:将历史的多项环流指数数据和待预报流域历史径流数据进行相关性分析,得到相应的相关系数,选取相关系数大的且对待预报流域径流有物理影响的环流指数作为预报因子,并获得相应的预报因子值,即环流指数数据;

2)把步骤1)得到的预报因子值作为支持向量回归机svr模型的输入样本,并利用公式对输入样本进行归一化处理;其中,yt、ymax、ymin分别表示选定时间段内某一时刻任意预报因子值、选定时间段内所选预报因子值中的最大值、选定时间段内所选预报因子值中的最小值,yt*即为所选时刻该预报因子的归一化值;遍历所有的预报因子值,得到每个预报因子的归一化值;

3)选定待预报流域s年的径流量数据作为历史样本,将历史样本中前n年的径流量数据及对应年份的预报因子归一化值作为训练集,后m年的径流量数据及对应年份的预报因子归一化值作为检验集,s=n+m,n>m,s、n、m均为正整数;

4)利用步骤3)得到的训练集对svr模型进行训练,采用细菌觅食优化算法确定svr模型中误差惩罚参数c、核参数σ和不敏感损失系数ε三个参数的值:将训练集的每个样本作为一个细菌,单个细菌由取值范围内的c,σ,ε二进制值排序排列组成,分别计算每个细菌的适应度值,通过细菌觅食优化算法的三种行为对细菌适应度值进行评估以后得到满足条件的适应度值最大的细菌;具体包括以下步骤:

4-1)确定细菌觅食优化算法的初始条件:步骤3)得到的训练集的样本数量代表初始种群规模,将每个样本作为一个细菌,确定细菌觅食优化算法中趋向行为、复制行为和驱散行为执行次数;设定svr模型三个参数c,σ,ε的取值范围;

4-2)采用二进制编码初始化种群:单个细菌由取值范围内的不同c,σ,ε二进制值排序排列组成,长度为三参数二进制长度之和;

4-3)选定适应度函数,计算步骤4-2)得到的初始化种群中各细菌适应度函数值;

4-4)在细菌觅食优化算法过程中对初始化种群各细菌趋向行为、复制行为和驱散行为三种行为的适应度值依次进行评估;具体步骤如下:

设p(j,k,l)={θi(j,k,l)|i=1,2,……,s}表示种群中细菌的位置,s为细菌个数,θi为细菌代号,代号由c,σ,ε二进制值排序排列组成;j(i,j,k,l)表示第i个细菌在经历了第j次趋向行为、第k次复制行为、第l次驱散行为之后的适应度值,j、k、l的值分别小于趋向行为、复制行为、驱散行为的设定次数;

4-4-1)趋向行为适应度值评估;细菌i的趋向行为表达式如式(4)所示:

式中,表示进行方向调整后选定的一个随机方向,c(i)表示按选定的方向前进的步长;

趋向行为评估具体包括以下步骤:

4-4-1-1)随机选择一个位置,并计算该位置的细菌的适应度值,然后令细菌在随机方向前进一个步长单位;设趋向行为中,m为单个细菌的游动次数,ns表示预先设定朝一个方向最多游动的次数,m≤ns;

4-4-1-2)计算新位置该细菌的适应度值,如果新位置细菌的适应度值优于原位置,则细菌游动次数加1,否则返回步骤4-4-1-1);

4-4-1-3)判断该位置细菌游动总次数是否小于ns,如果是,则该细菌继续沿该方向前进一个步长,并返回步骤4-4-1-2);否则该细菌计算终止,得到该位置细菌趋向行为的适应度值,返回步骤4-4-1-1),进行下一个位置细菌计算;

4-4-1-4)遍历所有位置的细菌,分别计算得到每个细菌趋向行为的适应度值;

4-4-2)复制行为适应度值评估;具体包括以下步骤:

4-4-2-1)将进行趋向行为计算后每个细菌的适应度值按从大到小进行排序;

4-4-2-2)把适应度值小的后一半细菌淘汰掉,剩下适应度值大的前一半细菌各自分裂出与自身完全相同的新细菌,复制行为适应度值评估结束;

4-4-3)驱散行为适应度值评估;具体包括以下步骤:

4-4-3-1)设定细菌被驱散条件,即给定驱散行为发生的概率;

4-4-3-2)对于复制行为后的所有细菌,如果某个细菌满足被驱散条件,则将其淘汰,并随机在细菌种群中产生一个新细菌代替它,然后对新细菌进行判断;如果细菌不满足驱散条件,则将其保留,再对下一个细菌进行判断;

4-4-3-3)遍历所有细菌,完成驱散行为适应度值评估。

4-5)趋向行为、复制行为和驱散行为的执行次数均达到预定次数后,则满足终止条件,三种行为评估结束;对完成三种行为评估后剩下的细菌进行适应度值的比较,选出适应度值最大的细菌。

5)解码适应度值最大的细菌,即将细菌二进制的表示形式转换成十进制数值形式,得到svr模型参数的最佳值;

6)将的最佳值输入svr模型中进行训练,得到svr模型的初步预测结果;

7)将步骤3)中选定的检验集与步骤6)中得到的初步预测结果进行比较,分析误差,若误差不在设定范围内,则调整细菌觅食优化算法中三种行为的执行次数,重新返回步骤4);若误差在设定范围内,则输出最终预测结果。

下面结合一个具体实施例对本发明进一步详细说明如下:

本发明提出的一种基于细菌觅食优化算法的中长期径流预报方法,首先从74项环流指数中挑选预报因子,把挑选好的预报因子值作为svr模型的输入样本,并对输入样本进行归一化处理(以消除奇异样本的影响,保证预报结果的准确性);选定多年的历史径流数据作为历史样本,对历史样本进行分类,一类为训练集,一类为检验集,然后,利用训练集对模型进行训练,并将训练集作为细菌觅食优化算法中的细菌种群,采用细菌觅食优化算法确定svr模型中c,σ,ε三个参数的值,然后模型训练完毕;将c,σ,ε三个参数的值代入到svr模型中,利用svr模型对检验集进行预测,获得径流预报值,并将检验值和预报值进行对比;分析误差,若误差不在设定范围内,则调整细菌觅食优化算法中三种行为的执行次数,若误差在设定范围内,则输出最终预测结果。此后即可用本发明方法对待测流域未来径流量进行预测。

该方法包括以下步骤:

1)筛选预报因子:将历史的多项环流指数数据和待预报流域历史径流数据做相关性分析,得到相应的相关系数,选取相关系数大的且对待预报流域径流有物理影响的环流指数作为预报因子;本实施例从国家气候中心官方网站下载历年74项环流指数数据,再利用本地安装的spss软件中的相关性分析模块分析得到待预报流域历史径流与74项环流指数中每个指数的相关系数,并将所得系数按从大到小进行排列,选取相关系数大(一般认为相关系数大于0.3则代表相关系数大)的指数作为初选预报因子;对初选预报因子进行物理分析,最终确定相关系数大且对待预报流域径流有物理影响的因子作为最终的预报因子,并获得相应的预报因子值;

2)把步骤1)得到的预报因子值(即环流指数数据)作为svr模型的输入样本,并利用公式对输入样本进行归一化处理,归一化处理的目的是为了消除奇异样本的影响,保证预报结果的准确性;其中,yt、ymax、ymin分别表示选定时间段内某一时刻任意预报因子值、选定时间段内所选预报因子值中的最大值、选定时间段内所选预报因子数值中的最小值,yt*即为所选时刻该预报因子的归一化值。遍历所有选择的预报因子值,得到每个预报因子的归一化值;

3)选定待预报流域s年的径流量数据作为历史样本,将历史样本中前n年的径流量数据及对应年份的预报因子归一化值作为训练集,后m年的径流量数据及对应年份的预报因子归一化值作为检验集,s=n+m,且训练集的径流量数据的年数多于检验集的径流量数据的年数,n>m;本实施例采用某河流近20年年径流量数据作为历史样本,对该样本进行分类,即将历史样本前15年的年径流量数据和步骤2)中选定的对应该前15年的预报因子归一化值作为训练集,将历史样本后5年的年径流量数据和步骤2)中选定的对应该后5年的预报因子归一化值作为检验集;

4)利用步骤3)得到的训练集对svr模型进行训练,采用细菌觅食优化算法确定svr模型中误差惩罚参数c、核参数σ和不敏感损失系数ε三个参数的值:将训练集的每个样本作为一个细菌,单个细菌由取值范围内的c,σ,ε二进制值排序排列组成,分别计算每个细菌的适应度值,通过细菌觅食优化算法的三种行为对细菌适应度值进行评估以后得到满足条件的适应度值最大的细菌;本实施例细菌觅食优化算法流程如图3中虚线框所示,具体步骤包括:

4-1)确定细菌觅食优化算法的初始条件:步骤3)得到的训练集的样本数量代表初始种群规模,将每个样本作为一个细菌,确定细菌觅食优化算法中趋向行为、复制行为和驱散行为执行次数(一般每种行为的执行次数均设为10次以内,本实施例将三种行为的执行次数分别设为5、3、2);设定svr模型c,σ,ε三个参数的取值范围(本实施例这三个值的范围均采用现有方法中的相关数据);

4-2)采用二进制编码初始化种群:单个细菌由取值范围内的不同c,σ,ε二进制值排序排列组成,长度为三参数二进制长度之和;

4-3)计算步骤4-2)得到的该初始化种群中各细菌适应度函数值,本实施例选取svr回归模型在训练集样本上的均方差mse的倒数作为适应度函数,如式(3)所示,作为评价函数计算各细菌适应度值:

f=mse-1(3)

4-4)在细菌觅食优化算法过程中对初始化种群各细菌三种行为的适应度值依次进行评估。其中,趋向行为可确保细菌的局部搜索能力,复制行为能加快细菌的搜索速度,而驱散行为则保证了细菌的全局搜索能力。

对初始化种群各细菌趋向行为、复制行为和驱散行为适应度值评估步骤具体包括:

设p(j,k,l)={θi(j,k,l)|i=1,2,……,s}表示种群中细菌的位置,s为细菌个数,θi为细菌代号,代号由c,σ,ε二进制值排序排列组成;j(i,j,k,l)表示第i个细菌在经历了第j次趋向行为、第k次复制行为、第l次驱散行为之后的适应度值(j、k、l的值小于趋向行为、复制行为、驱散行为的设定次数);其中:

4-4-1)趋向行为适应度值评估:细菌i的趋向行为表达式如式(4)所示:

式中,表示进行方向调整后选定的一个随机方向,c(i)表示按选定的方向前进的步长。

本实施例细菌觅食优化算法中趋向行为适应度值评估具体包括以下步骤:

4-4-1-1)随机选择一个位置,并计算该位置的细菌的适应度值,然后令细菌在随机方向前进一个步长单位;设趋向行为中,m为单个细菌的游动次数(m≤ns),ns表示预先设定朝一个方向最多游动的次数(一般设为10次以内,本实施例设为5);

4-4-1-2)计算新位置该细菌的适应度值,如果新位置细菌的适应度值优于原位置,则细菌游动次数加1,否则返回步骤4-4-1-1);

4-4-1-3)判断该位置细菌游动总次数是否小于ns,如果是,则该细菌继续沿该方向前进一个步长,并返回步骤4-4-1-2);否则该细菌计算终止,得到该位置细菌趋向行为的适应度值,返回步骤4-4-1-1),进行下一个位置细菌计算;

4-4-1-4)遍历所有位置的细菌,分别计算得到每个细菌趋向行为的适应度值。

4-4-2)复制行为适应度值评估:细菌经过趋向行为后,某些细菌的位置离食物源相对较远,加之未能采取正确的搜索策略,导致这些细菌由于无法得到足够的能量而被淘汰。同时为了保持整个群体规模的恒定,一部分觅食能力强的细菌进行分裂,以替换被淘汰掉的细菌。经过复制行为,群体中的较优细菌得到保护,竞争能力差的不良细菌被淘汰,更多的细菌聚集在有利于生存的区域,提高了寻找最优解的速度。

本实施例细菌觅食优化算法中复制行为适应度值评估具体包括以下步骤:

4-4-2-1)将进行趋向行为评估后每个细菌的适应度值按从大到小进行排序;

4-4-2-2)把适应度值小的后一半细菌淘汰掉,剩下适应度值大的前一半细菌各自分裂出与自身完全相同的新细菌,即复制行为操作结束。

4-4-3)驱散行为适应度值评估:算法驱散行为是按照给定的概率发生的(一般设为0.6,本实施例中概率设为0.618),经过复制行为后,如果某个细菌在概率发生范围内,则该细菌满足被驱散的条件,那么就将此细菌删除,重新生成一个新的细菌。

本实施例细菌觅食优化算法驱散行为的适应度值评估具体包括以下步骤:

4-4-3-1)设定细菌被驱散条件,即给定驱散行为发生的概率;

4-4-3-2)对于复制行为后的所有细菌,如果某个细菌满足被驱散条件,则将其淘汰,并随机在细菌种群中产生一个新细菌代替它,然后对新细菌进行判断;如果不满足驱散条件,则将其保留,再对下一个细菌进行判断;

4-4-3-3)遍历完所有细菌即完成驱散行为。

4-5)趋向行为、复制行为和驱散行为的执行次数均达到预定次数后,则满足终止条件,三种行为评估结束;对完成三种行为评估后剩下的细菌进行适应度值的比较,选出适应度值最大的细菌;

5)解码适应度值最大的细菌,即将细菌二进制的表示形式转换成十进制数值形式,得到svr模型参数c,σ,ε的最佳值;

6将c,σ,ε的最佳值输入svr模型中进行训练,得到svr模型的初步预测结果;

7)将步骤3)中选定的检验集与步骤6)中得到的初步预测结果进行比较,分析误差,若误差不在设定范围内,则调整细菌觅食优化算法中三种行为的执行次数,重新返回步骤4-1);若误差在设定范围内,则输出最终预测结果。此后即可用本发明方法对待测流域未来径流量进行预测。

本发明方法克服了已有方法计算量大、耗时长、需要的训练样本个数多,且预测精度不高、效率不好的缺点,本方法中采用细菌觅食优化算法对样本通过趋向行为、复制行为和驱散行为的依次计算使编程简单、参数设置少、全局寻优能力强,可以有效避免输出的预测结果容易陷入局部最小从而预报精度不高等问题。提高了预报精确度和预报效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1