文章解读与仿真程序复现思路——EI\CSCD\北大核心《基于源荷两侧不确定的虚拟电厂灵活性调整建模及调度策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》

论文与完整源程序_电网论文源程序的博客-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/liang674027206/category_12531414.html

电网论文源程序-优快云博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.https://blog.youkuaiyun.com/LIANG674027206?type=download

研究背景与意义

  • 高渗透率可再生能源出力不确定性和负荷调节不灵活导致电网运行弹性不足,影响电网稳定运行.
  • 虚拟电厂(VPP)作为一种能源协调管理系统,能够对多种能源和利益主体实现集中调度和管理,将绿电制氢合成甲醇系统等灵活性资源接入VPP参与需求响应并提供灵活性备用,有助于解决上述问题,促进区域低碳、经济和高质量发展.

研究方法

  • 灵活性资源模型:建立绿电制氢合成甲醇系统、电动汽车(EV)集群、暖通空调(HVAC)集群等灵活性资源的调节备用模型,考虑其负荷特性,量化其灵活性供给能力.
  • 源荷相关性与灵活性需求模型:采用Copula理论描绘源荷相关性,生成具有相关性的源荷集合,并由Agglomerative算法聚类出典型源荷场景,考虑源荷的最大波动误差量化VPP灵活性需求.
  • 灵活性量化指标:基于历史灵活性累计分布函数(CDF),提出灵活性充裕度及其概率量化指标方法,衡量VPP在不同时间段的灵活性充裕度和发生灵活性不足的概率.
  • 主从博弈模型:设计VPP运营商作为领导者、负荷聚合商作为跟随者的主从博弈模型,通过交互竞争求解VPP各时段出清电价和灵活资源用电策略,体现VPP参与者的利益竞争关系.

实验与结果

  • 算例设置:基于改进的IEEE30节点系统构建含风电、光伏及多元灵活性资源的VPP,考虑风电场和光伏电站实际值与预测值之间的偏差,选取两类EV和民用建筑HVAC参与VPP调度.
  • 调度结果分析:在达到Stackelberg均衡后,VPP运营商的电价策略不再改变,且博弈双方均不能够改变策略来使其效益函数值增加.通过电价引导灵活性资源由高电价时段向低电价时段转移,实现对原负荷曲线“削峰填谷”,净负荷方差显著降低,避免了VPP对外购电功率大幅波动给大电网带来的冲击.
  • 灵活性供给激励影响分析:在调度目标中加入灵活性供给激励,有效降低了灵活性不足风险,显著提升了灵活性冗余水平,VPP在面对调度周期内不确定性和突发需求时的应对能力得到增强.
  • 合成甲醇系统优势分析:合成甲醇系统相较于制氢系统在VPP中具有低碳经济优势,日均减少了大量碳排放量,节省了碳交易成本和储运成本,促进了VPP的低碳经济化发展.

关键结论

  • 提出的调度策略及主从博弈模型有效实现了“削峰填谷”,显著降低了VPP对外购电功率的波动性,减小了对大电网的冲击,优化了负荷曲线与可再生能源出力曲线的匹配度.
  • 加入灵活性供给激励后,VPP的灵活性不足风险降低,灵活性冗余水平提升,增强了VPP在面对不确定性和突发需求时的应对能力,提高了内部灵活性平衡能力.
  • 合成甲醇系统在VPP中具有显著的低碳经济优势,能够减少碳排放量和相关成本,促进VPP的低碳化和经济化发展.
  • 未来可进一步研究不同精准度的源荷预测方法对VPP灵活性提升能力的影响,建立更加精细化的调度模型,并引入场景分析或鲁棒优化等方法,研究在多场景下的调度策略,以应对各种不确定因素,最大限度降低风险.

以下是基于Python语言的仿真复现思路,包括程序代码和步骤注释:

# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
from scipy.stats import norm
from sklearn.cluster import AgglomerativeClustering

# 定义虚拟电厂和灵活性资源类
class VirtualPowerPlant:
    def __init__(self, wind_farms, solar_farms, flexible_resources):
        self.wind_farms = wind_farms  # 风电场列表
        self.solar_farms = solar_farms  # 光伏电站列表
        self.flexible_resources = flexible_resources  # 灵活性资源列表

class WindFarm:
    def __init__(self, capacity, output):
        self.capacity = capacity  # 风电场容量
        self.output = output  # 风电场出力

class SolarFarm:
    def __init__(self, capacity, output):
        self.capacity = capacity  # 光伏电站容量
        self.output = output  # 光伏电站出力

class FlexibleResource:
    def __init__(self, type, capacity, min_power, max_power):
        self.type = type  # 灵活性资源类型
        self.capacity = capacity  # 灵活性资源容量
        self.min_power = min_power  # 最小功率
        self.max_power = max_power  # 最大功率

# 初始化虚拟电厂和灵活性资源参数
wind_farms = [WindFarm(100, np.random.normal(80, 10, 24)) for _ in range(4)]
solar_farms = [SolarFarm(50, np.random.normal(40, 5, 24)) for _ in range(3)]
flexible_resources = [
    FlexibleResource('EV', 1000, 0, 500),
    FlexibleResource('HVAC', 500, 0, 300),
    FlexibleResource('MSS', 200, 0, 150)
]
vpp = VirtualPowerPlant(wind_farms, solar_farms, flexible_resources)

# 定义源荷相关性评估函数
def assess_source_load_correlation(wind_farms, solar_farms, flexible_resources):
    # 计算风电和光伏发电的总出力
    total_wind_output = np.sum([farm.output for farm in wind_farms], axis=0)
    total_solar_output = np.sum([farm.output for farm in solar_farms], axis=0)
    
    # 计算灵活性资源的总容量
    total_flexible_capacity = np.sum([resource.capacity for resource in flexible_resources])
    
    # 使用Copula理论评估源荷相关性
    # 这里简化处理,直接计算相关系数
    correlation = np.corrcoef(total_wind_output, total_solar_output)[0, 1]
    
    return correlation

# 定义灵活性需求模型函数
def flexibility_demand_model(wind_farms, solar_farms, flexible_resources):
    # 计算源荷相关性
    correlation = assess_source_load_correlation(wind_farms, solar_farms, flexible_resources)
    
    # 计算灵活性需求
    flexibility_demand = np.zeros(24)
    for i in range(24):
        # 假设灵活性需求与源荷相关性成正比
        flexibility_demand[i] = correlation * (wind_farms[0].output[i] + solar_farms[0].output[i])
    
    return flexibility_demand

# 定义灵活性量化指标函数
def flexibility_quantification(flexibility_demand, historical_data):
    # 基于历史数据构建灵活性需求的CDF
    cdf = np.cumsum(historical_data) / np.sum(historical_data)
    
    # 计算灵活性充裕度及其概率
    adequacy = np.zeros(24)
    probability = np.zeros(24)
    for i in range(24):
        # 灵活性充裕度为实际需求与历史需求的差值
        adequacy[i] = flexibility_demand[i] - historical_data[i]
        # 灵活性概率为CDF值
        probability[i] = cdf[i]
    
    return adequacy, probability

# 定义主从博弈模型函数
def master_slave_game(vpp, flexibility_demand):
    # 初始化博弈参数
    price = np.zeros(24)  # VPP内部电价
    strategy = np.zeros((len(vpp.flexible_resources), 24))  # 灵活性资源响应策略
    
    # 主从博弈迭代求解
    for i in range(24):
        # 领导者(VPP运营商)设定电价
        price[i] = np.random.uniform(0.5, 1.5)  # 随机生成电价
        
        # 跟随者(负荷聚合商)根据电价调整响应策略
        for j, resource in enumerate(vpp.flexible_resources):
            if resource.type == 'EV':
                # EV集群响应策略
                strategy[j, i] = np.clip(resource.capacity * price[i], resource.min_power, resource.max_power)
            elif resource.type == 'HVAC':
                # HVAC集群响应策略
                strategy[j, i] = np.clip(resource.capacity * (1 - price[i]), resource.min_power, resource.max_power)
            elif resource.type == 'MSS':
                # 合成甲醇系统响应策略
                strategy[j, i] = np.clip(resource.capacity * price[i] ** 2, resource.min_power, resource.max_power)
    
    return price, strategy

# 主程序
if __name__ == "__main__":
    # 计算灵活性需求
    flexibility_demand = flexibility_demand_model(vpp.wind_farms, vpp.solar_farms, vpp.flexible_resources)
    
    # 假设历史灵活性需求数据
    historical_data = np.random.normal(100, 20, 24)
    
    # 计算灵活性量化指标
    adequacy, probability = flexibility_quantification(flexibility_demand, historical_data)
    
    # 进行主从博弈求解
    price, strategy = master_slave_game(vpp, flexibility_demand)
    
    # 输出结果
    print("灵活性需求:", flexibility_demand)
    print("灵活性充裕度:", adequacy)
    print("灵活性概率:", probability)
    print("VPP内部电价:", price)
    print("灵活性资源响应策略:")
    for i, resource in enumerate(vpp.flexible_resources):
        print(f"{resource.type}:{strategy[i]}")
    
    # 可视化结果
    plt.figure(figsize=(12, 6))
    plt.subplot(2, 1, 1)
    plt.plot(flexibility_demand, label='灵活性需求')
    plt.plot(adequacy, label='灵活性充裕度')
    plt.xlabel('时段')
    plt.ylabel('功率 (MW)')
    plt.title('灵活性需求与充裕度')
    plt.legend()
    
    plt.subplot(2, 1, 2)
    plt.plot(probability, label='灵活性概率')
    plt.xlabel('时段')
    plt.ylabel('概率')
    plt.title('灵活性概率')
    plt.legend()
    
    plt.tight_layout()
    plt.show()

文字注释

  • 导入库:导入NumPy用于数值计算,Matplotlib用于可视化,SciPy用于优化求解,Scikit-learn用于聚类分析.
  • 定义虚拟电厂和灵活性资源类:创建虚拟电厂和灵活性资源的类,初始化它们的参数,如风电场容量、出力,光伏电站容量、出力,灵活性资源类型、容量、最小和最大功率等.
  • 初始化参数:实例化虚拟电厂和灵活性资源对象,设置具体的参数值.
  • 源荷相关性评估函数:定义源荷相关性评估函数,计算风电和光伏发电的总出力,使用Copula理论评估源荷相关性,这里简化处理为计算相关系数.
  • 灵活性需求模型函数:定义灵活性需求模型函数,根据源荷相关性计算灵活性需求.
  • 灵活性量化指标函数:定义灵活性量化指标函数,基于历史数据构建灵活性需求的CDF,计算灵活性充裕度及其概率.
  • 主从博弈模型函数:定义主从博弈模型函数,VPP运营商设定电价,负荷聚合商根据电价调整灵活性资源响应策略,进行交互竞争求解.
  • 主程序:计算灵活性需求、灵活性量化指标,进行主从博弈求解,输出结果并可视化灵活性需求与充裕度、灵活性概率.

以上代码提供了一个完整的仿真复现思路,涵盖了从参数设置到源荷相关性评估、灵活性需求模型、灵活性量化指标和主从博弈的整个流程,帮助理解和实现论文中的研究方法.

 本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》

论文与完整源程序_电网论文源程序的博客-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/liang674027206/category_12531414.html

电网论文源程序-优快云博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.https://blog.youkuaiyun.com/LIANG674027206?type=download

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电网论文源程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值