Skip to content
On this page

利用小时数修正

如果风光出力需要根据小时数进行修正,需要遵循以下步骤:

  1. 求出不修正情况下的正常小时数:
    • 风电:全年风电总出力 / 风电装机量
    • 光伏:全年光伏总出力 / (光伏装机量*光伏容配比)
  2. 求出修正系数:
    • 风电:风电修正小时数 / 风电不修正情况下的正常小时数
    • 光伏:光伏修正小时数 / 光伏不修正情况下的正常小时数
  3. 根据修正系数求出修正后的风光出力:
    • 风电:风电修正系数 * 风电出力(时序数据)
    • 光伏:光伏修正系数 * 光伏出力(时序数据)

给出制定的cap,修正p_max_pu使得其满足利用小时数Hcor 原始的利用小时数 p_max_pu = sum(p_max_pu * cap) / cap = sum(p_max_pu) = Hraw 修正的利用小时数 p_max_pu' = p_max_pu * (Hcor / Hraw)

若存在大于1的index,将A序列的p_max_pu' 均降为1,差值sum(p_max_pu') - sum(p_max_pu) 分配到序列B。 若没有大于1的index,则寻找最接近1的1个数字,将其变为1,差值分配到序列B。

def convert_pu(arr1):
    arr2 = arr1.copy()
    N = len(arr2)

    if np.any(arr2 > 1):
        # replace elements greater than 1 with 1
        arr2[arr2 > 1] = 1
    else:
        arr2[np.argsort(arr2)[-1:]] = 1

    bias = sum(arr1) - sum(arr2)
    N_sub = len(arr2[(arr2 > 0.3) & (arr2 < 0.7)])
    arr2[(arr2 > 0.3) & (arr2 < 0.7)] += bias/N_sub
    return arr2
def convert_pu(arr1):
    arr2 = arr1.copy()
    N = len(arr2)

    if np.any(arr2 > 1):
        # replace elements greater than 1 with 1
        arr2[arr2 > 1] = 1
    else:
        arr2[np.argsort(arr2)[-1:]] = 1

    bias = sum(arr1) - sum(arr2)
    N_sub = len(arr2[(arr2 > 0.3) & (arr2 < 0.7)])
    arr2[(arr2 > 0.3) & (arr2 < 0.7)] += bias/N_sub
    return arr2