PAGE1
PAGE1
电力市场与经济调度二次开发
在上一节中,我们已经介绍了电力市场的基本概念和经济调度的基础理论。本节将深入探讨如何在GEDigitalEnergy的EMS软件中进行电力市场与经济调度的二次开发,以满足特定电力系统的需求。我们将从以下几个方面进行详细讲解:
电力市场模型的构建
经济调度算法的实现
数据接口的设计与实现
优化模型的调用与配置
案例分析与代码示例
1.电力市场模型的构建
电力市场模型是电力系统经济调度的基础。在GEDigitalEnergy的EMS软件中,电力市场模型通常包括以下几部分:
市场参与者:发电厂、负荷中心、输电线路等。
市场规则:包括竞价规则、结算规则、惩罚机制等。
市场数据:包括发电成本数据、负荷数据、输电线路数据等。
1.1市场参与者的定义
在电力市场模型中,市场参与者是指参与电力交易的各个实体。我们需要在EMS软件中定义这些实体,并赋予它们相应的属性和行为。例如,发电厂需要定义其发电成本曲线,负荷中心需要定义其负荷需求曲线。
1.1.1发电厂的定义
发电厂的定义通常包括以下属性:
名称:发电厂的唯一标识。
类型:如火电厂、水电厂、核电厂等。
发电成本曲线:描述发电厂的发电成本与发电量之间的关系。
#发电厂类定义
classPowerPlant:
def__init__(self,name,plant_type,cost_curve):
初始化发电厂对象
:paramname:发电厂名称
:paramplant_type:发电厂类型
:paramcost_curve:发电成本曲线,格式为[(发电量,成本),...]
=name
self.plant_type=plant_type
self.cost_curve=cost_curve
defget_cost(self,power):
计算给定发电量的发电成本
:parampower:发电量
:return:发电成本
#通过线性插值计算发电成本
foriinrange(len(self.cost_curve)-1):
ifself.cost_curve[i][0]=power=self.cost_curve[i+1][0]:
return(self.cost_curve[i+1][1]-self.cost_curve[i][1])/\
(self.cost_curve[i+1][0]-self.cost_curve[i][0])*\
(power-self.cost_curve[i][0])+self.cost_curve[i][1]
returnfloat(inf)#超出成本曲线范围,返回无穷大成本
#示例:定义一个火电厂
thermal_plant=PowerPlant(
name=ThermalPlant1,
plant_type=thermal,
cost_curve=[(0,0),(100,50),(200,100),(300,150)]
)
#计算150MW的发电成本
print(f150MW的发电成本:{thermal_plant.get_cost(150)})
1.1.2负荷中心的定义
负荷中心的定义通常包括以下属性:
名称:负荷中心的唯一标识。
负荷需求曲线:描述负荷中心的负荷需求与电价之间的关系。
#负荷中心类定义
classLoadCenter:
def__init__(self,name,demand_curve):
初始化负荷中心对象
:paramname:负荷中心名称
:paramdemand_curve:负荷需求曲线,格式为[(电价,负荷需求),...]
=name
self.demand_curve=