system: [SYSTEM]

user: 3. 求解算法 由于上述已构建模型中的线性化约束(式(2)~式(17))无需另加处理，所以原模型的求解难点是对于非线性约束(式(18)~式(21))的处理。如何在保证精度的前提下，对这些非线性因素进行线性化处理，从而构建MILP模型，是本文求解算法的关键所在。 3.1. 水位库容约束处理 水位库容曲线表征了水库水位与库容之间的非线性关系，是水库调度的重要依据。本文通过对库容进行离散实现其线性化处理。具体方法如下： 将水库i的库容进行离散，共分为A个区间，离散后的水位值表示为： { Z i a = f i ， z v ( V i a ) V i _ = V i 0 < V i 1 < ⋯ < V i a < ⋯ < V i A = V i ¯ (22) 式中： V i a 、 Z i a 分别为水库i的第a个插值点及其所对应水位值。 则水库i在t时段的库容可表示如下： ∑ a = 1 A r i ， t a = 1 (23) r i ， t a ∈ { 0 ， 1 } (24) r i ， t a V i a − 1 ≤ V i ， t a ≤ r i ， t a V i a (25) ∑ a = 1 A V i ， t a = V i a (26) 式中： r i ， t a 为水库i在t时段的库容离散区间指示变量，当 r i ， t a = 1 时，表示此时水库i在t时段的库容位于第a个库容区间内，否则 r i ， t a = 0 。 则水库i在t时段的水位可表示如下： Z i ， t = ∑ a = 1 A [ r i ， t a Z i a − 1 + Z i a − Z i a − 1 V i a − V i a − 1 ⋅ ( V i ， t a − r i ， t a V i a − 1 ) ] (27) 运用上述式(23)~(27)即可实现对水库水位库容曲线的分段线性逼近。需指出的是，对于一库多级式梯级电站中的龙头电站，其调节能力通常在季调节及以上，而短期调度的调度周期通常为1 d，因而其水位库容在调度周期内通常波动较小。因此，对于龙头电站，只需在初始水位附近进行分段线性逼近即可，此举既可简化计算，又可达到计算所需的精度要求。 3.2. 尾水位泄量约束处理 尾水位–泄量–库水位三维曲线(如图1所示)描述了在已知下游水库坝前水位的情况下，不同下泄流量对应的上游水库的尾水位情况，表征了下游水库坝前水位、上游水库下泄流量和尾水位之间的非线性关系。利用尾水位泄量曲线，可以建立梯级水库间的水头联系。在线性化模型求解中，选择合适的尾水位泄量曲线并对其进行合理的线性化显得尤为重要。 本文尾水位–泄量–库水位三维曲线线性化共分为三步：第一步，预估下游水库坝前水位的变化区间，并将其离散为3个连续的子区间；第二步，选定每个水位子区间内具有代表性的尾水位泄量曲线，并与下游水库库水位关联；第三步，对选定的尾水位泄量曲线进行分段线性处理，从而实现原三维曲线的线性化。 图1. 尾水位–泄量–库水位三维曲线 3.2.1. 下游水库库水位离散 根据已有的水库历史运行资料，并结合工程经验，预估下游水库 i + 1 的水位变动区间，记为 [ Z i + 1 _ ， Z i + 1 ¯ ] 。将该区间离散为3个连续的子区间 [ Z i + 1 0 ， Z i + 1 1 ] 、 [ Z i + 1 1 ， Z i + 1 2 ] 和 [ Z i + 1 2 ， Z i + 1 3 ] (如图2所示)，其中 Z i + 1 0 = Z i + 1 _ ， Z i + 1 3 = Z i + 1 ¯ 。那么对于水库 i + 1 在任何时段内的水位必然满足以下约束： { ∑ k = 1 3 β i + 1 ， t k = 1 β i + 1 ， t k ∈ { 0 ， 1 } ∑ k = 1 3 β i + 1 ， t k Z i + 1 k − 1 ≤ Z i + 1 ， t k ≤ ∑ k = 1 3 β i + 1 ， t k Z i + 1 k (28) 式中： β i + 1 ， t k 为下游水库 i + 1 在t时段的水位离散区间指示变量，当 β i + 1 ， t k = 1 时，表示此时水库 i + 1 在t时段的水位位于第k个水位区间内，否则 β i + 1 ， t k = 0 。 图2. 简化尾水位泄量曲线 3.2.2. 下游水库坝前水位关联尾水位泄量曲线 在下游水库坝前水位变化的3个区间内，分别选择一条特定的尾水位泄量曲线，来表征该区间下的水位所对应的所有的曲线，从而实现下游水库坝前水位与上游水库尾水位泄量曲线的关联。此时，上游水库尾水位的变化只有水库的出库流量有关，与下游水库的坝前水位无关，即实现了上游水库尾水位、下泄流量和下游水库坝前水位之间三维关系的二维转化。依据上述思路，构建上游水库尾水位泄量曲线和下游水库坝前水库关联的数学表达： − Z i d ¯ ( 1 − β i + 1 ， t 1 ) ≤ Z i ， t d − f i ， z q | z 1 ( Q i ， t ) ≤ Z i d ¯ ( 1 − β i + 1 ， t 1 ) (29) − Z i d ¯ ( 1 − β i + 1 ， t 2 ) ≤ Z i ， t d − f i ， z q | z 2 ( Q i ， t ) ≤ Z i d ¯ ( 1 − β i + 1 ， t 2 ) (30) − Z i d ¯ ( 1 − β i + 1 ， t 3 ) ≤ Z i ， t d − f i ， z q | z 3 ( Q i ， t ) ≤ Z i d ¯ ( 1 − β i + 1 ， t 3 ) (31) 式中： f i ， z q | z b ( · ) ( b = 1 ， 2 ， 3 ) 为第b个下游水库坝前水位子区间内上游水库尾水位与下泄流量的函数关系。 由式(28)可知，当下游水库坝前水位处于某个子区间时，有且只有一个 β i + 1 ， t b = 1 ( b = 1 ， 2 ， 3 ) ，则式(29)~式(31)中只有一个公式得以成立，其他两项约束式相应会被松弛，可得有且只有一个b使得 β i + 1 ， t b = f i ， z q | z b ( Q i ， t ) ，即只有一条尾水位泄量曲线被选中，从而实现下游水库坝前水位与尾水位泄量曲线的关联。 3.2.3. 尾水位泄量曲线线性化转换 3.2.2节中被选定的尾水位泄量二维曲线仍然为非线性曲线，不可直接运用到MILP模型中参与计算。参考3.1节中水位库容约束的处理方法，离散下泄流量，线性插值得到相应的尾水位，实现尾水位泄量曲线的线性处理。详细步骤此处不再赘述。 3.3. 机组动力特性约束处理 机组动力特性曲线描述的是机组的出力与发电流量、发电水头之间的三维关系。其处理方法可参考3.2节中尾水位泄量约束的线性化处理。即第一步，预估发电水头的变化区间，并将其离散为多个连续的子区间；第二步，选定每个水头子区间内具有代表性的机组动力特性曲线，并与发电水头相关联；第三步，对选定的机组动力特性曲线进行分段线性处理，从而实现原三维曲线的线性化。详细步骤此处不再赘述。 3.4. 机组振动区限制处理 水电站发电机组的振动区又称限制运行区，机组出力需避免落入此区域内，因而机组出力的可运行区域就被振动区划分为多个不连续的区间，称为机组的安全运行区。考虑机组出力的上下限，K个振动区便将机组划分为 K + 1 个安全运行区，据此机组振动区限制式(21)可转化如下： { ∑ k = 1 K + 1 α i ， n ， t k = u i ， n ， t α i ， n ， t k ∈ { 0 ， 1 } ∑ k = 1 K + 1 α i ， n ， t k p i ， n ， f k _ ≤ p i ， n ， t ≤ ∑ k = 1 K + 1 α i ， n ， t k p i ， n ， f k ¯ (32) 式中： α i ， n ， t k 为指示变量， α i ， n ， t k = 1 表示电站i的机组n在t时段的出力位于第k个安全运行区； p i ， n ， f k ¯ 、 p i ， n ， f k _ 分别为电站i的机组n的第k个安全运行区的上、下限，且有 p i ， n ， f k ¯ = p i ， n k _ ， p i ， n ， f k _ = p i ， n k − 1 ¯ 。