1. 引言
水电系统作为我国大电力系统的重要组成部分,在其优化调度时必须考虑电网安全运行约束。然而,一方面,现有研究大多集中在水电站本身的相关约束 [1] - [4] ,而对电网运行方面的限制约束关注度不够,至多仅考虑了线路功率约束 [5] ,鲜有文献将电网损耗纳入模型中,这就导致水电调度计划很有可能无法满足电网潮流限制条件,既影响了电网的安全稳定运行,又无法充分有效消纳水电,造成大量的无益发电或弃水。因此,如何建立考虑电网损耗等相关约束的优化调度模型成为水库发电调度的研究重点之一。另一方面,由于水电站之间存在着复杂的水力、电力联系,水电系统需要处理复杂多变的约束条件,属于典型的离散、非凸和非线性优化问题,虽然模型求解方面已取得了较为丰硕的成果 [6] - [9] ,大致形成了数学规划方法和模拟仿真算法 [10] [11] 两类,但目前仍无统一标准的求解方法,通常需要根据具体问题探讨分析方法的适用性。因此,如何利用现有算法并充分利用现有的电脑软硬件资源,以提高水电系统短期调度模型的求解效率和结果准确性,就成为水利工作者一直以来关注的重点。
基于上述分析,本文首先以受电侧受电量最大为目标,利用均方根电流法计算网损,建立了考虑电网运行约束的水电系统短期优化调度模型;然后通过整合遗传算法与离散微分动态规划的优势,同时结合近年来蓬勃发展的多核并行计算技术,提出了并行离散微分遗传算法(Discrete Differential Genetic Algorithm, DDGA)对模型进行求解。澜沧江流域梯级水电站实际应用结果验证了所提模型与方法的合理性与可行性。
2. 耦合电网约束的水电系统调度模型
2.1. 目标函数
水电是廉价的清洁可再生能源,电网从整个社会效益的角度出发,增大水电出力可以降低发电成本并减小污染物排放量。由于没有考虑电网运行状态,传统的水电系统优化调度多以发电量最大为目标,致使发电计划无法满足电网实际运行约束。本文在考虑传统的水力电力约束的基础上,以受电侧受电量最大为目标,建立了耦合电网运行约束的水电系统短期优化调度模型,最终形成24点日调度曲线。目标函数如下所示:
(1)
式中:
(MWh)为所有电站在受电侧的受电量,
(MW)为电站m在时段t的下网功率。
2.2. 约束条件
约束条件包括电站约束和电网约束两部分。
1) 电站约束。主要分为两个方面,一方面是水力约束,主要包括水量平衡约束、始末水位约束、发电流量约束、水位约束和出库流量约束等。
(2)
(3)
(4)
(5)
(6)
式中:
(m3)、
(m3)表示水库m在第t时段的初末库容,
(m3/s)表示水库m在第t时段各类流量之和,入库为正,出库为负,
(m3/s)、
(m)、
(m3/s)分别表示水库m在第t时段的发电流量、初水位及出库流量。
另一方面是电力约束,主要包括电站出力约束、出力爬坡约束、机组振动区约束、出力保持时间约束等
(7)
(8)
(9)
(10)
式中:
(MW)为电站m在t时段的出力,
为电站m单时段最大爬坡速率,
和
分别为电站m第k个振动区的上限和下限,
为电站m出力变化最小间隔是段数,即电站出力上升或下降后出力保持稳定的最小保持时段数。
2) 电网约束。主要包括线路损耗约束、线路容量约束、网络损耗约束等。
(11)
(12)
(13)
式中:
为电站m在t时段时,在电网输电侧输入功率,
为并网效率,一般小于1%。
(MWh)为电站m在t时段的输电损耗,
(m)、
(kV)为电站m电能输送距离及输送线路电压。
2.3. 网络损耗处理方法
精确的电网损耗需要通过潮流计算获得,计算规模较大,而短期调度涉及时段较多,对计算速度要求较高,如果耦合潮流计算会极大地加大计算规模,降低计算效率。因此需要对电网损耗进行简化计算以提高计算速度。本文中采用均方根电流法计算网络损耗 [12] [13] ,计算方法如下:
(14)
(15)
(16)
式中:
(kA)、
(Ω)、
(MWh)分别为电站m在计算时段的均方根电流、单相等效阻抗、电能损耗,
(A)为电站m在时段t的单相负荷电流,
(MVar)为线路无功量,由于线路功率因数接近于1,处理时可以忽略无功功率对电流的影响。
可根据电站上网功率
和电站出口节点电压
算出,
为受线路输送功率及温度等影响,但变化程度不大,可认为是定值,根据典型时刻潮流计算结果容易求出,为了简化计算,本文认为
为给定常量。
由于:
(17)
所以受电侧吸纳电站m的电能
为:
(18)
就单个时段而言,在时段t受电侧吸纳电站m的电能
为:
(19)
基于上述假设,单时段可表示为:
(20)
式中:
均为常数:
(21)
根据公式(20),可以得到以下关系曲线(图1)。
通过图1可以看出,随着电站出力的增加,电能损耗呈指数形式增加,而受端电量呈二次函数形式增加,增速逐渐变慢,甚至会出现受电量减小的情况。因此,合理的安排电站出力对增加受电侧受电量以及降低电网损耗具有重要的实际意义。
3. 基于并行DDGA的模型求解方法
遗传算法通过选择、交叉、变异循环计算实现寻优过程,以适应度函数值作为可行解的评价依据。经典遗传算法计算效率较低,主要有两方面原因:一方面种群规模较大,导致计算机计算能力不足;另一方面是计算后期种群个体差异变小,导致寻优速度减慢。针对上述问题,本文采用最优个体保留策略,结合DDDP算法的廊道思想,建立了基于多核并行的离散微分遗传算法对经典遗传算法进行改进,以提高结果准确性和计算效率。
3.1. 寻优速度改进
DDDP是动态规划的衍生算法,也是一种迭代优化方法,它由基本可行解开始,在基本可行解附近将状态离散化形成“廊道”,在“廊道”内利用动态规划求解,再以新的较优解代替基本可行解进行迭代计算,直到找到最优解为止。DDDP具有减少贮存量和计算时间的优点,为求解高维的水电系统优化调度问题提供了方便。
经典遗传算法后期寻优速度降低是个体差异变小和无效变异增多导致的。个体差异变小时,种群在一定程

Figure 1. The relation curve between the power station output and its related electricity
图1. 电站出力与其相关电量关系曲线
度上已经接近最优解,若仍然在全部状态空间内产生变异,容易产生不满足约束的不可行解,从而降低后期收敛速度。DDDP的“廊道”思想能有效的应对上述问题,通过逐步缩减状态空间的方法使种群在“廊道”内进化,在保证种群多样性,避免出现种群早熟的基础上,提高种群进化的优秀个体的数量,保证遗传算法后期的稳定收敛速度。此外,为了有效保持种群多样性,在缩减状态空间的同时,根据进化代数和收敛程度,增加变异概率,进而提高遗传算法后期收敛速度。上述方法用公式表示如下:
(22)
式中:
为第k代个体第m个电站在t时段的下泄流量,
第k代种群的收敛程度,可用之前若干代的最优个体适应度之差表示,
为0~1之间的随机浮点数,
为种群变异步长,
为第k代个体的变异概率。
3.2. 初始解生成策略
遗传算法允许在状态空间内随机生成初始种群,但种群中可行解的多少和种群多样程度会影响整体收敛速度,本文提出一种初始种群生成策略,在保证种群多样性的基础上自动满足流量约束和水位约束,从而提高种群中可行解的数量,以提高整体收敛速度。流程如下:
1) 根据各电站的日初、日末水位及来水量确定全天可用水量
;
2) 以水位为状态变量、流量为决策变量,每个时段在
之间随机生成流量,那么总流量的期望就是
,实际为
。
3) 计算
与
的差值,均匀分摊给电站的各个时段,使初始解的下泄流量等于可用流量,自动满足流量约束和末水位约束,从而提高初始解的可行性。
在迭代过程中容易产生末水位约束不满足的解,仍可以用流量差值分摊的方法对流量进行分摊,由于流量分摊量较小,基本不会对其他约束产生较大影响。
3.3. 最优个体保留策略
研究表明,经典的遗传算法无法收敛到全局最优解,但是,若保留每一代最优个体,遗传算法能够收敛到全局最优解 [14] ,因此,本文在计算时,采用最优解保留策略,将父代的最优解替换子代中的一个个体,从而保证算法的全局收敛性。
3.4. 多核并行计算
并行计算能够充分发挥计算机的多核优势,将一个大规模的复杂问题分解为多个子问题,提高计算效率。并行计算要求子问题之间相互独立,尤其适合遗传算法这类智能搜索算法。目前,多核并行技术已经在多个领域得到应用,有多个基本框架可供选择,本文采用Lea提出的Fork/Join框架 [15] ,该框架将总任务分解成若干个子任务,通过汇总每个子任务计算结果得到总任务的结果,并利用“工作窃取”的方法提高并行任务执行效率。Fork/Join框架已经被集成在Java开发环境中,操作较为简单,只需进行简单的任务划分便能发挥多核平台优势,取得良好的效果,达到提高计算效率的目的。有关Fork/Join框架的具体内容,文献 [15] 已经做了详细说明,本文中不再赘述。
3.5. 并行DDGA求解流程
DDGA迭代过程中,选择、交叉、变异及适应度函数计算过程都是针对一个或多个个体,且均能分解成并列的多个子任务,符合并行计算的条件。因此,本文对上述四个步骤进行改进,大幅提高了算法求解效率,求解步骤如下:
步骤1:参数初始化。设置种群规模n、交叉概率
、初始变异概率
以及初始变异范围
。
步骤2:种群初始化。根据上文所述的初始解生成方法生成规模为n的初代种群
,设置进化代数
。
步骤3:计算适应度。利用Fork/Join并行框架,以公式(1)作为适应度函数,并行计算第k代个体的适应度,并记录最优个体
。
步骤4:选择运算。采用联赛法,并行筛选出与种群规模相同个数的个体。
步骤5:交叉运算。在步骤4的基础上,利用算术交叉方法。并行进行交叉运算。
步骤6:变异计算。在步骤5的基础上,根据变异概率
以及变异范围
,并行进行变异计算。
步骤7:插入上代最优个体。在步骤6的基础上,随机选择一个个体,用步骤3记录的最优个体
替代该个体。
步骤8:进化代数
,根据进化代数逐步增加变异概率
并减小变异范围
,形成新一代种群和基本参数。判断是否满足迭代终止条件,若不满足,则返回步骤3继续进行迭代计算,若满足,则结束计算并输出最优解。
4. 应用实例
4.1. 基本资料
本文选取小湾–漫湾–大朝山梯级水电站消落期某日为计算对象,各电站计算参数如表1。通过对比有无电网约束的优化调度结果,分析上述模型与算法的有效性与合理性。
4.2. 考虑电网约束的水电系统调度结果
考虑电网约束前后的调度曲线及损耗曲线如图2所示。图2(a)为仅考虑传统约束的梯级电站优化调度曲线,图2(b)为与其对应的损耗曲线;图2(c)为考虑电网运行约束的梯级电站优化调度曲线,图2(d)为与其对应的损耗曲线。容易看出,考虑电网约束后,调度曲线和损耗曲线趋于平缓,出力峰值小幅下降就能使损耗峰值大幅降低,主要是损耗与出力平方的负相关关系所致。
通过对比图2可知,小湾电站出力的峰值由2800 MW降至2200 MW时,能使损耗峰值从128 MW降至79 MW,

Table 1. Calculation parameters for each hydropower plant
表1. 各电站计算参数表
即出力峰值的小幅降低(21.4%)能使电网损耗大幅降低(38.3%),由于电网损耗是影响送电效率和电网安全稳定运行的重要因素,本文所提能有效降低电网损耗,提高电力消纳效率和电网稳定性。
表2为耦合电网约束前后梯级水电站出力及输电损耗结果,由结果对比可知,在不考虑电网约束时,梯级总发电量为51,107.5 MWh,损耗为1397.52 MWh,受电侧受电量为49,709.98 MWh;在考虑电网约束后,梯级

Table 2. Result of output power and transmission losses of stations before and after coupling grid constraints
表2. 耦合电网约束前后梯级水电站出力及输电损耗
总发电量为51,030 MWh,损耗为1309.89 MWh,受电侧受电量为49,720.11 MWh,较于前者,虽然发电侧电量降低了22.5 MWh,但由于网损降低了6.3%,受电侧受电量反而增加了10.13 MWh,梯级受电侧电量提高了0.20‰,在大幅降低网损的同时提高了梯级受电侧的受电量,效果显著。
4.3. 并行DDGA对传统遗传算法收敛性的提高
采用DDGA对上述模型进行计算,利用3.2节所述的方法生成初始解,梯级总发电量为适应度函数,将动态变异区域与固定变异区域进行比较计算,得到图3所示的收敛速度曲线。
从图3可以看出,在固定廊道大小的情况下,窄廊道搜索在前期收敛速度较慢,但在后期会有较快的收敛

Figure 3. Convergence of three kinds of mutation methods
图3. 三种变异方式收敛性比较

Table 3. Multi-core parallel computing speed
表3. 多核并行计算速度对比
速度;宽廊道搜索在前期收敛速度较快,但在后期收敛速度较慢;本文提出的变廊道方法能在前期和后期都保持较快的收敛速度,较于前两者能更快的收敛到最优解。
采用Inter(R)Xeon(R)CPU E3-1230V5@3.4GHz四核八线程处理器平台,通过对含有100个个体的种群进行优化计算来验证并行计算的有效性。计算结果见表3。
从表3中可以看出,并行计算较串行计算(单核)速度提高显著,且核心数越多,计算耗时越短,计算速度与核心数近似成正比例关系。但是,多核并行计算较于单核串行并不是成倍的提升速度,主要有两方面原因,一方面是任务划分耗时;另一方面是算法不是每个步骤都能实现并行,有必要的串行环节。
5. 结论
本文主要在以下两方面实现了创新成果:1) 针对现有研究鲜有考虑电网损耗的弊端,建立了耦合电网损耗约束的水电站系统短期优化调度模型,在降低网络损耗的同时提高水电消纳电量;2) 结合近年来高性能计算研究成果,以离散微分动态规划与遗传算法为基础,提出了基于Fork/Join框架的多核并行DDGA方法,提高了算法的搜索性能与收敛速度。所提模型和方法的有效性和可行性通过了澜沧江梯级水电站群模拟结果的检验,可为水电系统短期优化调度问题提供有益参考。
基金项目
中央高校基本科研业务费(DUT15RC(3)077)。