况 源 ,邓荣耀 ,陈翠华 ,吴 浩 ,周小明
(1.四川省宜宾市气象局,宜宾 644000;2.三峡水利枢纽梯级调度通信中心,成都 610000)
向家坝水电站位于四川省宜宾市叙州区和云南省昭通市水富市交界的金沙江峡谷出口处,紧临云南省水富市城区。坝址控制流域面积45.88 万km2,水库正常蓄水位380m,总库容51.63 亿m3,调节库容9.03亿m3,电站装机容量6000MW[1]。水电站为调节库容会进行泄洪,下泄水流通过特定的消能设施在泄洪的同时还会在一定空间范围内以水雾或水滴的形式在空中形成雾流,这种雾流在气流和地形的作用下,在局部地区产生密集雨雾现象,这一现象称之为泄洪雾化,泄洪雾化将会对坝后的气温等气象要素值产生一定的影响。向家坝水电站大坝采用了底流消能的设计,能够有效减少水雾的产生,但由于坝区群山环抱,空间狭小(图1),泄洪时雾化现象不可避免,也必将对坝后区域的气温产生不同程度的影响。目前泄洪雾化对环境影响的研究主要集中在影响范围的研究,对气象要素的影响程度研究较少,对坝后区域气温影响程度的定量研究更是空白。本文使用向家坝坝区气象站的观测数据建立模型,研究泄洪雾化对坝后区域气温影响程度,对向家坝坝后区域的生活和生产具有参考意义[2−4]。
图1 向家坝水电站坝区地形
因向家坝蓄水前后局地气候发生变化,为保证数据的可用性和一致性,收集了坝区气象站蓄水后(2013~2019 年)逐时气象监测数据和泄洪量数据,并根据数据时次是否在泄洪,划分为泄洪时段样本数据和非泄洪时段样本数据。向家坝坝区自2005 年开始陆续建设有7 个气象站,其中2 个气象站在2018 年建设,资料年限太短不能作为样本数据;其余5 个气象站(图2)陆续在2005~2006 年建设,积累了大量数据。
图2 向家坝坝区气象站分布
向家坝坝区的5 个气象站中,安边气象站距离泄洪孔口约4km,经过对安边站历史数据分析后,发现其受泄洪雾化影响非常小,将其气温视为不受到泄洪雾化的影响。首先使用非泄洪时段样本数据建立安边站气象数据与其它各气象站气温的关系模型,将泄洪时段的样本数据输入模型,预测出在泄洪时的非泄洪状态下的理论气温,用公式1 计算出泄洪对坝区各气象站(安边站除外)气温的影响值,然后从空间变化、时间变化和影响程度三个维度对气温影响程度进行分析。技术路线流程见图3。
图3 技术路线流程
式中:△T表示在某一泄洪时次泄洪对气温的影响值(℃);T0表示该时次气象站监测到的实际气温(℃);T1表示模型预测出的该时次气象站在未泄洪状态下的理论气温(℃)。
机器学习是从数据中提取知识,它是统计学、人工智能和计算机科学交叉的研究领域,被广泛用于预测分析和统计学习。机器学习中,监督学习是将成对的输入和输出提供给算法,算法会找到一种方法(模型),实现根据给定输入计算出预期输出。Scikitlearn 是一个开源的基于Python 语言的机器学习工具包,它通过NumPy、SciPy、Matplotlib 等库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。因此本文选用Scikit-learn 的机器学习算法开展气温建模[5−7]。
气温模型是为了预测气象站在泄洪时的非泄洪状态下的理论气温,则不能选择受泄洪影响的因子作为输入变量,因此将非泄洪时段安边气象站(两要素气象站)的气温、降雨量和数据时次所在月份作为建模输入因子,将坝区某气象站(安边站除外)对应时次的气温作为建模输出因子。在建模之前还需对建模数据集进行预处理,将数据集中有数据异常和缺失的数据组删除;因月份的数值大小无特别含义,将其由数值型数据修改为文字型数据(如1 月、2 月、3 月等),但由于大多数机器学习算法都只能处理数值型数据,因此须对文字型的月份特征进行one-hot 编码[8]处理;同理将降雨量也处理为无降雨、小雨、小雨以上三种情况,并进行one-hot 编码。
为了找到表现最优的模型,本文使用Scikit-learn中K 近邻回归(K Neighbors Regressor)、线性回归(Linear Regression)、决策树回归(Decision Tree Regressor)、线性SVR 回归(Linear SVR)和人工神经网络(MLP Regressor)五种典型算法分别训练数据集。
使用网格搜索法[9−10]对K 近邻回归的K 值进行0~20 取值的调参;对决策树回归的树深度进行0~10取值的调参;对线性SVR 回归调整参数loss(损失函数,参数取值有epsilon_insensitive 和squared_epsilon_insensitive)、对参数epsilon 进行0~3 取值(步长为0.1)的调参;对人工神经网络调整参数activation(激活函数,参数取值有identity、logistic、tanh、relu)。
交叉验证[11−12]是一种评估模型泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面,能够更有效评估模型的质量和选择在数据集上表现最好的模型,被广泛用于模型选择,因此使用交叉验证方法对五种算法训练出的模型进行评估,得到了模型评估表(表1)。可以看出,用人工神经网络算法训练的模型在各气象站均表现最优,所以本文最终选用人工神经网络算法训练出的模型开展气温预测。
表1 五种机器学习算法建立的模型评估参数
为了验证模型在样本外数据中的泛化能力,将2020 年1~9 月非泄洪时段安边气象站的气温、降雨量和数据时次所在月份输入各气象站的最优模型,预测出理论气温,再与实际观测气温求平均绝对误差[13],见表2。从表中看出,除马延坡站以外,各气象站模型验证的平均绝对误差在0.5℃以内,模型表现较好;其误差值与前面测试集的误差值相当,表明模型的泛化能力较稳定。
表2 各气象站模型验证误差
将泄洪时段安边气象站的逐时气温、降雨量和数据时次所在月份作为特征值(同样需进行数据预处理)输入为坝区各气象站(安边站除外)建立的最优模型,由模型预测出坝区各气象站(安边站除外)在泄洪时的非泄洪时段状态下的理论气温T1,再使用公式1 计算出泄洪对气温的影响值△T。通过△T值可以发现,泄洪雾化对坝后区域气温的影响主要表现为使气温降低。
从空间分布来看,将各气象站的△T值在空间上进行插值,可绘制出泄洪雾化对坝后区域气温的影响程度分布图[14]。图4 为向家坝水电站6~9 月泄洪雾化对坝后区域气温影响平均值分布。坝后区域的平均气温受向家坝水电站泄洪影响较小,且影响程度随着与泄洪孔口的距离增加而迅速减小。
图4 向家坝水电站6~9 月泄洪雾化对坝后区域气温影响平均值分布(a.6 月,b.7 月,c.8 月,d.9 月,单位:°C)
从江边气象站即日气温影响程度的逐时变化(图5)来看,因受泄洪雾化的影响最为显著,其气温影响平均值分布呈峰值特征,即在每日12~18 时受泄洪雾化的影响程度最大,且在13 时达到顶峰。其它站点在时间上的峰值特征不明显。
图5 江边气象站气温影响平均值的逐时变化
从影响程度来分析,泄洪雾化状态下,坝区各气象站(安边站除外)的各气温影响值出现频次见图6。其中距离泄洪孔口最近的江边站的气温受泄洪雾化的影响程度最大,气温影响值主要在−2.0℃以内,占比81.1%;云天化站、马延坡站和莲花池站的气温影响程度较小,气温影响值分别主要在−0.7℃、−0.8℃、−0.6℃以内,占比分别为80.3%、83.4%、82.4%。
图6 坝区各气象站不同气温影响值的出现频次(a.江边站、b.云天化站、c.马延坡站、d.莲花池站)
本文使用Scikit-learn 中五种机器学习算法对向家坝蓄水后非泄洪时段的样本数据进行训练,交叉验证后训练出坝区各气象站(安边站除外)的最佳气温预测模型,应用该模型从时空变化和影响程度等方面定量分析泄洪雾化对坝后区域气温的影响,得到以下结论:
(1)从空间变化来看,坝后区域的气温受向家坝水电站泄洪影响较小,且影响程度随着与泄洪孔口的距离增加而迅速减小。
(2)从时间变化来看,距离泄洪孔口最近的江边气象站在每日12~18 时受泄洪雾化的影响程度最大,且在13 时达到顶峰,其它站点在时间上的峰值特征不明显。
(3)从影响程度来看,距离泄洪孔口最近的江边站的气温受泄洪雾化的影响程度最大,气温影响值主要在−2.0℃以内;云天化站、马延坡站和莲花池站的气温影响程度较小,气温影响值分别主要在−0.7℃、−0.8℃、−0.6℃以内。