基于混合编程的梯级水库群综合集成仿真调度平台构建

2017-03-21 07:27王振龙刘晓丽
中国农村水利水电 2017年3期
关键词:梯级水电站编程

周 婷,王振龙,朱 梅,刘晓丽

(1.安徽农业大学,合肥 230036; 2. 安徽省水利部淮河水利委员会水利科学研究院, 安徽 蚌埠 233000)

0 引 言

水电站水库群优化调度能够在不增加工程投入的情况下显著提高系统效益,围绕水电站水库群的运行优化一直是科研界和生产单位的关注热点。目前针对水库水电站群优化调度的研究多侧重于优化理论算法,较少对优化模型的实现进行专门深入的探讨。然而,随着优化理论研究的深入,各种智能算法被引入水库群调度决策中,水库群运行仿真的复杂性将大大提高,成为水库水电站群优化调度理论方法研究面临的现实性问题[1-3]。在隐随机优化调度理论发展初期,调度规则形式较为简单,大多为多项式形式,不会给仿真带来太大难度;但当智能算法被引入调度规则提取中后,神经网络等“黑箱模型”成为调度规则计算工具,若调度规则和仿真运行的程序语言不同,则很难将这些程序直接嵌入仿真程序中。例如MATLAB程序中有神经网络、支持向量机(Support Vector Machine, SVM)、遗传算法等大量算法的工具包,可以直接调用,但水电站群仿真运行可能在C语言下运行,这种实现平台的不统一成为了制约隐随机优化理论及其应用的重要因素。在当前越来越多的水电站和水库投入运行的背景下,为优化调度规则投入实际运用构建统一的运行平台是一项极具实际价值的工作。

本文针对目前调度规则制定方法和实现环境多样化的特点,以SVM理论为例,构建了C++和MATLAB语言的集成仿真平台,实现MATLAB下的调度规则提取和C++环境下的水库群仿真对接,大大提高了隐随机优化调度相关算法的可移植性和可扩展性。

1 基于调度规则的水库群仿真运行背景

水量平衡和各水库之间的水力联系是梯级水库群在仿真运行中的考虑重点。上游水库的下泄流量会作为部分入库径流汇入下游水库,同时运行仿真需遵从各水库下泄流量约束、特征水位约束、预想出力和保证出力约束等,保证调度决策满足各约束条件,这是水库群仿真运行的物理背景[4,5]。

随着近年来水库水电站群优化调度研究日益发展,大量数学优化模型被用于解决水库水电站群优化调度问题,这些优化理论计算复杂,运行环境差别很大,实现这些基于优化理论的仿真运行成果需要相当的工作量。另一方面,在研究和实际生产运行中,常会有将一种优化调度方法应用于不同水库群对象、以及对同一水库群对象基于不同方法进行优化调度的需求,这也需要一个兼容性强的仿真平台作为支撑。上述情况是水库群仿真运行平台设计的现实需求。

本文基于SVM理论的调度规则提取方法为基础,构建了基于调度规则提取和仿真的混合编程仿真平台。在该平台中,梯级水电站群仿真运行在C++环境中运行,并以此作为主程序,调度规则的优化和制定在MATLAB环境中实现,作为子程序被仿真程序调用。二者在结构上相对独立,功能分区清晰,为程序移植和功能扩展提供了良好的支撑。

本文以金沙江中下游大型梯级水电站水库群作为对象,该系统共有12级水库,装机容量和调节性能均属世界前列。各电站具体参数如表1所示。

2 混合编程仿真平台的实现方法

2.1 基于C++的梯级水库群仿真主程序构建

梯级水电站水库群的运行仿真涉及时间和空间诸多变量,而且模拟运行是由调度决策驱动、变量不断滚动迭代的过程,对程序设计的要求较高。本文水电站水库群仿真运行的物理部分在C++环境中实现。C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷,非常适合编写水库群调度等大型复杂程序。针对水库群调度中反复调用的函数,如水位-库容曲线、出力计算、下泄流量-下游水位关系曲线等,C++的类函数提供了封装接口,使程序结构清晰简洁,正确率高。

表1 金沙江中下游梯级水电站水库群系统特征参数Tab. 1 Specifications of Middle-downstream Jinsha Rivercascaded power stationsreservoirs system

基于C++语言的水电站水库群运行仿真技术已经比较成熟,在此不再赘述[9,10]。在本文程序中,C++程序负责物理功能部分,即水库群在给定调度决策下的状态计算、梯级水库时间和空间上的数据传输、约束验证等;MATLAB模块则负责实现SVM模型控制下的调度决策生成。因此,程序在C++和MATLAB数据对接处应配置接口,以保证数据的调用传输顺利进行。C++与MATLAB程序的接口包括:各水库、水电站的时段状态变量(水位、出力、流量等)以及由MATLAB计算得出的调度决策。

2.2 基于MATLAB的调度规则生成

本文采用SVM理论对各水库调度规则进行推求,SVM是以结构风险最小化的机器学习理论,近年来在分类、识别和预测领域有着广泛的应用。MATLAB可直接调用的提供SVM工具包,本文采用台湾大学林智仁编写的LIBSVM工具包实现调度规则生成。具体步骤如下:

(1) 样本数据的整理和划分。将各电站长系列确定性优化结果按照月度分类重组,并构建“输出-输入”矩阵:模型输出为月调度决策(水库水位或电站出力),输入变量为与之相关的水电站水库运行状态参数。截取矩阵一部分作为训练样本,其余作为预测样本,一般训练样本容量至少应为测试样本容量3倍,以保证训练样本具有足够的代表性,排除随机性影响。

(2) 样本数据的归一化预处理。由于模型的输入输出因子量纲和数值均差距巨大,直接进行模型计算会影响预测精度,应首先对齐进行归一化。归一化的方法有[0.2,0.8]、[-1,1]、[0,1]归一化等方法。考虑在水库调度决策中,输入输出变量均为正数且数值范围较大,本文选择[0,1]归一化对输入输出变量进行预处理。决策生成后再将输出变量进行反归一化,还原至实际调度决策。

(3) SVM模型训练及参数优化。针对训练样本矩阵在LIBSVM软件中进行调度规则训练,得到训练后的模型。基于该模型对仿真程序各时段调度规则进行预测计算,得到预测结果后将其反归一化至最终预测的调度规则结果,并将此结果传送至C++主程序,以推动主程序继续滚动运行。

2.3 混合编程仿真平台实现

混合编程是指运用两种以上的程序语言进行应用程序开发的过程。每一种计算机程序语言都有其优缺点,对于不同的工程问题来说,所适宜的编程语言也不尽相同。混合编程的目的是充分利用各种编程语言的优势,合作完成目标,使程序设计更加简洁、编码效率更高[11,12]。本文C++和MATLAB混合编程平台的技术路线如图1所示。

图1 基于混合编程的水库群仿真平台示意图Fig.1 Hybrid programming based simulation platform for reservoirs system

本文基于金沙江中下游12级梯级水电站群长系列确定性优化调度成果,依据上文所述C++与MATLAB混合编程平台,实现水电站水库群系统运行仿真。图2展示了在使用SVM模型进行参数优选时,不同参数组合下的预测误差分布图,误差最小的参数组合则被选择作为实际预测模型中的参数。

图2 SVM在不同参数组合下的误差分布Fig. 2 Error distribution of parameters combination in support vector machine

3 仿真结果及评价

从运行结果耗时来看,基于混合平台的SVM模型梯级仿真模型耗时约8分钟,而单纯运用C++编程语言的仿真系统运行耗时仅需2 min。可见,基于混合编程平台的运算速度低于单一语言的运算速度,主要原因是数据跨平台传输导致耗时增加。但是混合编程仿真平台为不同语言、不同案例和不同算法的水电站群运行提供了良好的仿真平台,大大提高了程序的可扩展性,从而更加有利于隐随机优化调度理论的应用和发展。从该角度来说,混合编程平台具有更加重要的意义。

混合编程平台具有良好的可扩展性和兼容性,体现在以下两方面:

(1)在混合编程仿真平台中,C++主程序仅调用了以下四要素(见图1):水库入库流量过程、已经训练完毕的SVM预测功能动态库、最优SVM参数组合和训练样本的归一化数据信息。程序逻辑清晰,易于操作。在制定调度决策时,无须再次调用SVM参数优化模块和训练模型,提高了系统的保密性和稳定性,更加符合水电站群在实际调度运行中的需求。

(2)混合编程平台具有良好的可扩展性和兼容性,能够满足同一模型应用于不同对象或不同模型应用于同一对象的仿真功能扩展。例如,若要将SVM模型应用于其他水库群仿真中时,只需对C++模块中水库信息进行修改;若要针对本文水库群运用其他模型进行仿真时,则仅需将SVM模型替换为其他模型,无须改变方针平台的整体结构,显著降低了开发成本,体现出了优越的可扩展性和可操作性。

4 结 论

本文对梯级水电站水库群隐随机优化中的重要环节——仿真运行的实现问题进行了研究。在分析水电站水库群仿真运算的复杂性、调度规则和水库群仿真计算的复杂性基础上,阐述了构建水电站水库群混合编程仿真平台的背景和意义。建立了基于C++和MATLAB混合编程的仿真平台,实现了调度规则指导下的梯级水电站水库群仿真运行。仿真结果说明,该平台具有优越的可扩展性和兼容性,为水电站水库群隐随机优化理论的发展和应用实践提供了高效的工具和支撑。

[1] 纪昌明,苏学灵,周 婷,等. 梯级水电站群调度函数的模拟与评价[J]. 电力系统自动化,2010,34(3):33-37.

[2] 刘 攀,依俊楠,徐小伟,等. 水文资料长度对隐随机优化调度规则的影响研究[J]. 水电能源科学,2011,29(4):46-47,157.

[3] 纪昌明,喻 杉,周 婷,等. 蚁群算法在水电站调度函数优化中的应用[J]. 电力系统自动化,2011,35(20):103-107.

[4] 喻 杉. 基于改进蚁群算法的梯级水库群优化调度研究[D]. 北京:华北电力大学,2012.

[5] R U Jettmar,G. K. Young. Hydrologic Estimation and Economic Regret[J]. Water Resources Research,1975,11(5):648-656.

[6] 王健峰. 基于改进网格搜索法SVM参数优化的说话人识别研究[D]. 哈尔滨:哈尔滨工程大学,2012.

[7] Devroye L,Wagner T J. Distribution-free performance bounds for potential function rules[J]. IEEE Transaction in Information Theory,1979,25(5):601-604.

[8] 徐红敏. 基于SVM理论的水环境质量预测与评价方法研究[D]. 长春:吉林大学,2007.

[9] 杨晓静. 基于VC++和MATLAB混合编程的风电场风速预测系统的研究[D]. 北京:华北电力大学,2012.

[10] 韩顺杰. 基于SVM的工程车辆自动变速方法研究[D]. 长春:吉林大学,2009.

[11] 李亚军. 基于MATLAB与C/C++的盲处理系统混合编程模式的研究[D]. 长春:长春理工大学,2011.

[12] 周 婷. 水电站水库群调度优化及其效益评价方法研究[D]. 北京:华北电力大学,2014.

猜你喜欢
梯级水电站编程
里底水电站工程
自动扶梯梯级翻转处异响的分析及改进措施
白鹤滩水电站有多“牛”?
自动扶梯的梯级斜行原因分析及调整方法
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
《水电站设计》2020年总目录
纺织机上诞生的编程
梯级水电站多目标联合经济运行初探