Skip to content
On this page

单年运行仿真模型

1. 变量和符号总结

nN={0,|N|1}线tT={0,|T|1}lL={0,|L|1}线sS={0,|S|1}线/wttgn,s,tt线nsg¯n,s线nsg¯n,s,tt线nsun,s,tsucn,s,ttsdcn,s,ttcn,s1MWon,s1MWhfl,tt线lFl线lηn,s线nsηlless/

2 目标函数

目标函数由每个组件的资本成本 c 和发电机的运营成本 o 组成:

n,scn,sg¯n,s+n,scn,sh¯n,s+lclFl+twt[n,son,s,tgn,s,t+n,son,s,thn,s,t]+t[sucn,s,t+sdcn,s,t]

3 发电机约束

可以优化每个时间的发电机标称功率和发电机调度。 每个发电机都有一个调度变量,用于标记总线,标记总线上的特定发电机(例如,它可以表示聚合网络中同一总线上的风能/天然气/煤炭发电机)并标记时间。 它遵循以下约束:

g~n,s,tg¯n,sgn,s,tg¯n,s,tg¯n,s

其中 g¯n,s 是标称功率(generator.p_nom), g~n,s,tg¯n,s,t 是由于风力可用性或发电厂降级等原因对调度(每单位标称功率)的时间依赖性限制。

对于p_max_pu时变的发电机,单位可用性 g¯n,s,t 是一个时间序列; 对于p_max_pu固定的发电,单位可用性 g¯n,s,t 是一个常数。

如果发电机的标称功率 g¯n,s 也是优化的主题(generator.p_nom_extendable == True),那么也可以限制generator.p_nom_min 和 generator.p_nom_max:

g~n,sg¯n,sg^n,s

4 发电机和链路的机组组合约束

通过将 committable 设置为 True,可以为任何发电机或链路打开机组组合。 这引入了一个新的二进制状态变量的时间序列 un,s,t{0,1},保存在network.generators_t.status中,表示在时间段t内发电机/链路是运行(1)还是不运行(0)。 发电机/链路输出的限制现在变为:

un,s,tg~n,s,tg¯n,sgn,s,tun,s,tg¯n,s,tg¯n,sn,s,t

如果 un,s,t=0 ,那么 gn,s,t=0

请注意,发电机/链路不能同时扩容(generator.p_nom_extendable == True)和机组组合(generator.committable == True),因为这里变量 un,s,tg¯n,s 的耦合。

如果设置了最小正常运行时间 Tminup  (generator.min_up_time),那么我们有通用时间:

t=tt+Tminupun,s,tTminup(un,s,tun,s,t1)n,s,t

即,如果发电机/链路在某个时间t刚刚启动,那么 un,s,t1=0un,s,t=1un,s,tun,s,t1=1。因此他必须至少运行 T_min_up 个时间戳。

在snapshots模拟期之前,发电机/链路可能已经运行了一段时间,在snapshots模拟器之前,如果up_time_before小于min_up_time,那么发电机和链路将会被强制开机,以弥补二者的差值。

在snapshots结束时,如果剩余snapshots的数量小于 T_min_up,则仅对剩余snapshots强制执行约束中的最短启动时间(min_up_time)。

同样,如果最小停机时间 Tmindown (generator.min_up_time) 已设置,那么我们有:

t=tt+Tmindown(1un,s,t)Tmindown(un,s,t1un,s,t)n,s,t

您也可以在network.snapshots之前的时段定义generator.down_time_before,类似于开机时间。

对于非零启动成本 sucn,s,每个时间段t都会引入一个新变量 sucn,s,t0 , 并将其添加到目标函数中。 变量满足:

sucn,s,tsucn,s(un,s,tun,s,t1)n,s,t

因此,如果 un,s,tun,s,t1=1, 即发电机/链路刚刚启动,则它仅为非零。

同样对于关闭成本 sdcn,s,t0 ,我们有:

sdcn,s,tsdcn,s(un,s,t1un,s,t)n,s,t

5 发电机和链路的爬坡约束

可以为发电机和链路定义爬坡速率限制,以增加功率输出 run,s 和减少功率输出 rdn,s。 默认情况下,这些为 null 并被忽略。 它们应按每单位发电机标称功率给出。 发电机放电然后服从:

rdn,sg¯n,s(gn,s,tgn,s,t1)run,sg¯n,s

for t{1,|T|1}

对于具有机组组合的发电机/链路,您还可以在启动 rusun,s 和关闭 rdsdn,s 时指定爬坡限制:

[rdn,sun,s,trdsdn,s(un,s,t1un,s,t)]g¯n,s(gn,s,tgn,s,t1)[run,sun,s,t1+rusun,s(un,s,tun,s,t1)]g¯n,s

6 电储能约束

与具有一个时间相关变量的发电机相反,每个电储能具有三个:

  • 储能放电 hn,s,t(电量耗尽时):
0hn,s,th¯n,s
  • 储能充电 fn,s,t(电量增加时):
0fn,s,th¯n,s
  • 以及电量:
0socn,s,trn,sh¯n,s

其中 rn,s 是满电量状态的标称功率小时数。

这些变量是相关的:

socn,s,t=ηstand;n,swtsocn,s,t1+ηstore;n,swtfn,s,tηdispatch;n,s1wthn,s,t+wtinflown,s,twtspillagen,s,t

ηstand;n,s 是静态损耗,例如蓄热的热损耗。ηstore;n,sηdispatch;n,s 分别是充电损耗和放电损耗。

指定初始电量有以下两个选项:

    1. 设置storage_unit.cyclic_state_of_charge = False(默认),设置storage_unit.state_of_charge_initial的值
    1. 设置storage_unit.cyclic_state_of_charge = True,然后优化假设 socn,s,t=1=socn,s,t=|T|1

如果在时间序列 storage_unit_t.state_of_charge_set 中存在不是 NaN 的值,则将假定这些是该时间所需的电量状态,并且这些值将作为额外的约束添加。

7 储能约束

储能有两个时间相关变量:

  • 储能放电 hn,s,t
hn,s,t+
  • 能量:
e~n,sen,s,te¯n,s

这些变量是相关的:

en,s,t=ηstand;n,swten,s,t1wthn,s,t

ηstand;n,s 是静态损耗, 例如蓄热的热损耗。

指定初始电量有以下两个选项:

    1. 设置store.e_cyclic = False(默认),设置store.e_initial的值
    1. 设置store.e_cyclic = True,然后优化假设 en,s,t=1=en,s,t=|T|1

8 无源支流:线路和变压器

对于功率根据阻抗流动的线路和变压器,交流网络中的功率流 fl,t 由母线0处的电压角 θn,t 和母线 1 处的电压角 θm,t 之差除以串联电抗得出:

fl,t=θn,tθm,txl

此流量受线路容量F_l的限制:

|fl,t|Fl

注意:如果 Fl 也要进行优化 ( branch.s_nom_extendable -- True ),则线路的阻抗不会随着容量而自动改变。

9 可控线路潮流:链路

对于功率流可控的链路,每个组件都有一个优化变量,满足:

|fl,t|Fl

10 节点功率平衡

这是最重要的方程,它保证在每个时间t的每个总线n处的功率平衡:

sgn,s,t+shn,s,tsfn,s,tlKnlfl,t=sdn,s,twtλn,t

λn,t 是约束的影子价格,即位置边际价格,存储在 network.buses_t.marginal_price 中。

总线的作用是强制所有进出它的元素的能量守恒(即基尔霍夫电流定律)

image.png

11 全局约束

全局约束适用于多个组件。目前,定义了五种全局约束类型。如果将具有相应类型的全局约束添加到网络中,则会激活它们。默认情况下,该约束适用于所有投资期。对于数十年优化,可以通过在属性investment_period中指定全局约束,仅为一个投资期设置全局约束(例如,特定投资年的CO2限制)。每个全局约束的影子价格存储在 μ 中, 它是存储在network.global_contraints.mu中的优化的输出。

一次能源

一次能源约束( type=primary_energy )取决于电厂的效率和运营商的特定属性,比如 CO2 的排放。

如果能量载体 s 的特定排放量是 es (carrier.co2_emissions) CO2-equivalent-tonne-per-MWh , 并且在节点 n 处带有载体 s 的发电机具有效率 ηn,s, 那么 CO2 约束是:

n,s,t1ηn,swtgn,s,ten,s+n,s(en,s,t=1en,s,t=|T|1)en,sCAPCO2μ

第一个总和超过发电机;第二个总和是储能和电储能。μ 是约束的影子价格,即本例中 CO2 的价格

12 上下网约束

  • 上网约束:

全年上网总电量,小于或等于用户设置的上网约束值-up_grid_sum

  • 下网约束:

全年下网总电量,小于或等于用户设置的上网约束值-down_grid_sum

  • 上下网总额约束:

全年上网和下网的电量之和,小于或等于用户设置的上下网总额约束-up_down_grid_sum

  • 上下网差额约束:

全年上网和下网的电量之差,小于或等于用户设置的上下网差额约束-up_down_grid_substract

上网和下网电量都从Generator组件的p中获得,是变量。

13 新能源约束

  • 新能源利用率约束

全年新能源实发总电量除以全年新能源可发总电量,小于或等于用户设置的新能源利用率约束值- min_re_available_percent。

其中新能源实发电量从Generator组件的p中获得,是变量;新能源可发电量由p_max_pu *  p_nom_opt计算得来,也是变量,因为p_nom_opt不确定。

  • 新能源渗透率约束

全年新能源实发总电量除以全年负荷总电量,小于或等于用户设置的新能源渗透率约束值-min_re_load_percent。

其中新能源实发电量从Generator组件的p中获得,是变量;总负荷由常规负荷和可调负荷构成,常规负荷的电量从loads_t中获得,是常量,可调负荷的电量从Generator组件的p中获得,是变量。