system: [SYSTEM]

user: 3. 求解方法 期末蓄能最大模型是求解梯级水电站短期负荷分配优化问题常用的模型，这一类问题是具有强系统性约束的非线性优化问题，常利用拉格朗日松弛法进行求解，它通过引入拉格朗日乘子将具有复杂约束的原优化问题，转化为不包括强约束的松弛问题。其建立的对偶优化问题如下： min B max A F 1 = F + ∑ t = 1 T [ λ t ( ∑ m = 1 M p m t − N t ) ] (17) 式中：F为优化问题的目标函数期末蓄能值， λ t 为t时段拉格朗日乘子向量分量。 A = { p 1 1 ， p 1 2 ， ⋯ ， p 1 T p 2 1 ， p 2 2 ， ⋯ ， p 2 T ⋯ p M 1 ， p M 2 ， ⋯ ， p M T } 是各电站各时段的出力集合， B = { λ 1 ， λ 2 ， ⋯ ， λ T } 拉格朗日乘子向量集合。 该对偶问题是由两部分优化问题组成，外层是以拉格朗日乘子B为决策变量的优化问题，内层是以各电站的出力A为决策变量的优化问题。因此，除原问题需要求解的决策变量外，还多出了新的需要求解的变量集合B。求解中需要对B中的拉格朗日乘子进行多次迭代更新： λ t i + 1 = λ t i − μ t i ( ∑ m = 1 M p m t − N t ) ，其中 λ t i + 1 和 λ t i 为乘子 λ t 在第i + 1和i轮次迭代的取值， μ t i 为乘子更新步长，可随迭代轮次逐步减小。每个时段均对应一个拉格朗日乘子，所以该对偶问题共含有T个乘子。由于短期优化调度对时段的划分较细，使得该集合包含的乘子数量较多，加大了求解困难，明显降低求解效率，影响求解质量。如在以15分钟为计算时段时，日调度计划的优化需要迭代确定96个乘子的取值，所以为实现对偶问题的简化，对求解方法进行了适当的改进，使其能有效降低拉格朗日乘子个数，提升求解效率。 为此，本文提出一种简化方法。约束条件式(16)等价于 | ∑ m = 1 M p m t − N t | = 0 ，对于T个负荷平衡约束，每个时段一个的约束式 | ∑ m = 1 M p m t − N t | = 0 等价于 max 1 ≤ t ≤ T f ( t ) = 0 ， f ( t ) = | ∑ m = 1 M p m t − N t | 。因此，可使 替换约束条件(16)。 由于最大值形式的约束条件在求解中难以处理，可进一步采用凝聚函数法将 max 1 ≤ t ≤ T f ( t ) 近似转化为式(18)。 F p ( t ) = 1 p ln ∑ t = 1 T exp ( p f ( t ) ) (18) 其中p为控制参数，取值为0.01。 经上述变换后，建立新的对偶问题，其目标函数为式(19)： (19) 式中： γ 为拉格朗日乘子。 对比式(17)和(19)可明显看出，拉个朗日乘子由含有T个乘子的集合B变为单个乘子 γ ，大大地减少了需求解的变量个数，简化了迭代流程，能有效的降低求解复杂度，提升求解效率。 需要说明的是，无论原问题还是简化后的问题，都不能完全满足拉格朗日松弛法的收敛条件，计算结果存在对偶间隙，表现为电站出力和总负荷的不平衡，需要在求解后进行电站出力的进一步调整。 优化求解流程 求解利用拉格朗日松弛法所构造的对偶问题时，关键点在于拉格朗日乘子的更新迭代。常采用次梯度法，该方法是沿次梯度的方向搜索，找到函数的极值点。本文采用逐次逼近法和次梯度法进行对偶问题的求解和乘子的更新。简化问题的计算流程如下(图1)： 1) 初始化拉格朗日乘子 γ i ， i = 1 ； 2) 采用逐次逼近的算法求解2中所建立的数学模型，目标函数此时 F 2 = 1 P ln { ∑ t = 1 T e P [ f ( t ) − max 1 ≤ t 0 ≤ T f ( t 0 ) ] } + max 1 ≤ t ≤ T f ( t ) ； 3) 采用次梯度法更新乘子，即 γ i + 1 = γ i + μ i * F 2 ， 为乘子更新步长，设 i = i + 1 ； 4) 收敛判断： | γ i + 1 − γ i | < ε ， ε 为收敛精度；或 ∑ t = 1 T | ∑ m = 1 M p m t − N t | < δ ， δ 也为收敛精度，代表总负荷约束误差和的微小变化值；又或 i > I ，设终止迭代次数I。满足收敛条件，结束整个迭代流程，否则转步骤(2)。 图1. 简化方法求解流程图 在使用逐次逼近算法对问题进行求解时，要考虑模型未被松弛的其它约束，其中发电流量上限、水电站出力上限、库水位、水量平衡等约束通过单时段以水定电计算满足，电站出力下限和出库下限约束可采用惩罚函数处理，惩罚项为 a max ( p _ m t − p m t ， 0 ) 2 + b max ( r _ m t − r m t ， 0 ) 2 ，其中a、b为惩罚系数。本文重点对模型中与电站出力升降相关的3个时间耦合型约束进行处理。为便于3个约束的处理，减小计算量，将其转化为以发电流量表示的约束，并采取合适的方式修正调整以满足约束条件，具体方法如下： 1) 为满足电站出力波动限制约束，在初始解的基础上(如图2(a))，调整发电流量(如图2(b))。在t时段发电流量由 q m t 变成 q ` m t ，向前扩展时段 t − 1 ， t − 2 ， t − t v m / 2 的出力，向后扩展时段 t + 1 ， t + 2 ， t + t v m / 2 的出力，使其满足约束 ( q m t − Δ − q m t − Δ − 1 ) ( q m t − q ` m t ) ≥ 0 。 2) 为满足出力爬坡约束，在上述调整时段的边缘对出力变化幅度进行修正(如图2(c))。在上一步扩展调整后，扩展的范围为 [ t 1 ， t 2 ] 。首先向t1以前寻找最大的时段t0，使其满足 | q m t 0 − q m t 1 | ≤ Δ q ¯ m ( t 1 − t 0 ) ，( t 0 < t 1 )，再顺次依照爬坡出力值调整 t 1 − 1 ， t 1 − 2 ， ⋯ ， t 0 + 1 的发电流量；然后向t2以后寻找最小的时段t3，使其满足 | q m t 3 − q m t 2 | ≤ Δ q ¯ m ( t 3 − t 2 ) ，( t 3 > t 2 )，再顺次依照爬坡出力值调整 ， t 2 + 2 ， ⋯ ， t 3 − 1 的发电流量。 3) 为满足出力升降时段数约束，在上两步的基础上，对发电流量变化范围的两侧进行检验和修正(如图2(d))。在经过上述调整后，发电流量范围为 [ t 0 ， t 3 ] 。首先向t0以前寻找最大的时段t4，其能满足 ( q m t 4 − 1 − q m t 4 ) ( q m t 0 − q m t 0 + 1 ) < 0 ，若 | t 0 − t 4 | > t v m ，则通过检验；否则在t0后和t4前继续寻找t5，t6使 | t 5 − t 6 | ≥ t v m ， t 5 ≥ t 0 ， t 6 ≤ t 4 完成前半部分的流量修正。t3以后的修正方法同上。 4) 为满足出力升降时段数约束，对发电流量继续进行修正(如图2(e))。在此阶段发电流量范围为 [ t 6 ， t 7 ] ，t7为上一步由t3时段向后修正时得到的最大时段号。首先向t5以前寻找最大的时段t8，其能满足 ( q m t 8 − 1 − q m t 8 ) ( q m t 5 − q m t 5 + 1 ) < 0 ，( t 8 ≤ t 5 )若 | t 5 − t 8 | < t p m ，则继续搜索距离最大的t9，使得 ( q m t 9 − q m t 5 ) ( q m t 9 + 1 − q m t 5 ) < 0 ，( t 9 < t 8 )修正后 [ t 9 ， t 5 ] 间满足约束要求，完成前半部分修正。t7以后的修正方法同上。 图2. 修正调整示意图