文章解读与仿真程序复现思路——EI\CSCD\北大核心《考虑投机行为的低碳园区共享储能优化运行策略》

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

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

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

研究背景与意义

  • 随着用户侧分布式发电设备的普及,传统电力用户向兼具产能、用能属性的“产消者”转变,电力电量平衡呈现概率化、多区域、多主体协同特征。为实现新能源高比例消纳、保障电网安全稳定运行,构建多类型、多时间尺度的储能体系至关重要.
  • 用户侧服务于单一主体的储能投资成本高、短期经济效益不明显,且利用率低、无法体现规模效益,导致用户配置独立储能的积极性不足。共享储能作为一种新型商业模式,通过将储能所有权、使用权分开,利用不同使用者调节需求的时空互补特性,提升储能的经济性和灵活性.
  • 共享储能参与主体众多、利益关系耦合、信息交互复杂,需平衡不同主体的利益诉求从而实现公平交易。当前共享储能的商业模式分为非合作博弈与合作博弈两类,合作博弈鼓励参与者结盟,这种协调使整个联盟的收益增加,但联盟保持稳定的前提是具备高效、公平的收益分配机制.

研究方法

  • 合作博弈与纳什谈判:基于合作博弈理论,提出共享储能运营模式,分析联盟收益分配中的投机行为,并定义投机指数。采用纳什谈判收益分配方法,兼顾个体理性与整体理性,确保社会效益最大且每个参与者获得更高的收益.
  • 多主体投机博弈模型:构建不对称信息下的纳什谈判多主体投机博弈模型,该模型为广义纳什博弈,并计及决策者风险偏好的差异.
  • F2S分布式算法:提出F2S(Factory-to-Shared Energy Storage)分布式算法求解广义纳什均衡,并证明了算法的收敛性。该算法对参与者策略间的耦合进行高效协调,使迭代快速收敛.

实验与结果

  • 共享储能优化调度:通过算例分析,共享储能模式提高了储能的经济性,降低了园区75.19%的能源成本。工厂与储能通过合作实现能量共享,社会总成本显著下降,园区的能源效率在合作共享的驱动下得到了提升.
  • 考虑投机行为的收益分配:投机博弈模型可系统性地分析群体投机现象,随机风险偏好下分配结果偏离76%,表明了监管投机的必要性。在群体投机环境下,参与者最终能否通过投机获益与其合作贡献大小直接相关,合作贡献小的投机者收益可增加72%以上.
  • F2S算法性能:F2S算法迭代次数小于8次,投机指数快速收敛,体现了算法对参与者策略间耦合进行的高效协调,证明了算法的有效性.

关键结论

  • 基于合作博弈与非对称纳什谈判的低碳园区共享储能运营模式能显著降低园区能源成本,提升合作积极性、保证分配公平,维持联盟的稳定.
  • 多主体投机博弈模型可用于分析不对称信息结构下的投机行为,计及决策者风险偏好差异,能更全面地分析投机者的决策,体现出监管投机的必要性.
  • F2S分布式算法能有效求解投机博弈均衡,对参与者策略间的耦合进行高效协调,使迭代快速收敛,为共享储能合作模式下分布式收益分配环节所面临的投机风险提供了解决方案.

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

# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize

# 定义工厂和储能的参数
class Factory:
    def __init__(self, id, pv_capacity, load, shift_ratio, shift_sensitivity):
        self.id = id
        self.pv_capacity = pv_capacity  # 光伏发电装置容量
        self.load = load  # 用电负荷
        self.shift_ratio = shift_ratio  # 可转移负荷比例
        self.shift_sensitivity = shift_sensitivity  # 负荷转移敏感系数

class EnergyStorage:
    def __init__(self, capacity, max_power, charge_efficiency, discharge_efficiency, leakage_rate, cost_per_kwh):
        self.capacity = capacity  # 额定容量
        self.max_power = max_power  # 最大充放电功率
        self.charge_efficiency = charge_efficiency  # 充电效率
        self.discharge_efficiency = discharge_efficiency  # 放电效率
        self.leakage_rate = leakage_rate  # 储能泄露率
        self.cost_per_kwh = cost_per_kwh  # 充放电损耗成本

# 初始化工厂和储能参数
factories = [
    Factory(1, 150, np.array([...]), 0.3, 1e-5),
    Factory(2, 200, np.array([...]), 0.3, 2e-5),
    Factory(3, 250, np.array([...]), 0.3, 3e-5),
    Factory(4, 180, np.array([...]), 0.3, 4e-5),
    Factory(5, 220, np.array([...]), 0.3, 5e-5)
]
energy_storage = EnergyStorage(500, 185, 0.95, 0.95, 0.1, 0.001)

# 定义优化调度函数
def optimize_dispatch(factories, energy_storage, prices):
    # 计算工厂的光伏出力和可转移负荷
    for factory in factories:
        factory.pv_output = np.array([...])  # 光伏出力数据
        factory.shift_load = factory.load * factory.shift_ratio
    
    # 定义优化问题的目标函数
    def objective(x):
        # x包含工厂与电网交互功率、与储能交互功率等决策变量
        # 计算总能源成本
        total_cost = 0
        for factory in factories:
            # 计算负荷转移成本和购电净支出成本
            shift_cost = np.sum(factory.shift_sensitivity * (factory.shift_load - x[...]))
            grid_cost = np.sum(prices * (x[...] - x[...]))
            total_cost += shift_cost + grid_cost
        
        # 计算储能的充放电损耗成本和购电净支出成本
        storage_cost = np.sum(energy_storage.cost_per_kwh * (x[...] + x[...]))
        total_cost += storage_cost
        
        return total_cost
    
    # 定义优化问题的约束条件
    constraints = []
    # 添加工厂功率平衡约束、储能功率平衡约束等
    
    # 求解优化问题
    result = minimize(objective, x0=np.zeros(...), constraints=constraints)
    return result.x

# 定义收益分配函数
def allocate_benefits(factories, energy_storage, dispatch_results, prices):
    # 计算无共享下的成本
    individual_costs = np.array([...])
    
    # 计算共享下的成本
    shared_costs = np.array([...])
    
    # 计算共享效益
    benefits = individual_costs - shared_costs
    
    # 定义纳什谈判的目标函数
    def nash_negotiation(x):
        # x包含工厂和储能的支付意愿
        # 计算谈判效用函数乘积
        utility_product = np.prod(x - benefits)
        return -utility_product
    
    # 定义纳什谈判的约束条件
    constraints = []
    # 添加联盟不破裂约束、个体收益约束等
    
    # 求解纳什谈判问题
    result = minimize(nash_negotiation, x0=np.ones(...), constraints=constraints)
    return result.x

# 定义F2S算法函数
def F2S_algorithm(factories, energy_storage, dispatch_results, prices):
    # 初始化博弈者的投机指数
    cheating_indices = np.zeros(len(factories) + 1)  # 包括储能
    
    # 迭代更新博弈者的投机指数
    max_iterations = 100
    tolerance = 1e-4
    for iteration in range(max_iterations):
        # 工厂上报投机指数至运营商
        factory_cheating_indices = np.array([...])
        
        # 运营商更新自身投机指数并发布市场信息
        energy_storage_cheating_index = np.array([...])
        market_info = np.array([...])
        
        # 工厂根据市场信息更新自身投机指数
        new_factory_cheating_indices = np.array([...])
        
        # 计算残差
        residual = np.linalg.norm(new_factory_cheating_indices - factory_cheating_indices)
        
        # 更新博弈者的投机指数
        cheating_indices[:len(factories)] = new_factory_cheating_indices
        cheating_indices[-1] = energy_storage_cheating_index
        
        # 检查收敛条件
        if residual < tolerance:
            break
    
    return cheating_indices

# 主程序
if __name__ == "__main__":
    # 设置优化调度时间范围和电价数据
    time_horizon = np.arange(8, 20)  # 8:00~19:00
    prices = np.array([...])  # 电价数据
    
    # 进行优化调度
    dispatch_results = optimize_dispatch(factories, energy_storage, prices)
    
    # 进行收益分配
    benefits_allocation = allocate_benefits(factories, energy_storage, dispatch_results, prices)
    
    # 运行F2S算法
    cheating_indices = F2S_algorithm(factories, energy_storage, dispatch_results, prices)
    
    # 输出结果
    print("优化调度结果:", dispatch_results)
    print("收益分配结果:", benefits_allocation)
    print("投机指数:", cheating_indices)
    
    # 可视化结果
    plt.figure()
    plt.plot(time_horizon, dispatch_results[...], label='Factory 1')
    plt.plot(time_horizon, dispatch_results[...], label='Factory 2')
    plt.plot(time_horizon, dispatch_results[...], label='Factory 3')
    plt.plot(time_horizon, dispatch_results[...], label='Factory 4')
    plt.plot(time_horizon, dispatch_results[...], label='Factory 5')
    plt.plot(time_horizon, dispatch_results[...], label='Energy Storage')
    plt.xlabel('Time (h)')
    plt.ylabel('Power (kW)')
    plt.title('Optimal Dispatch')
    plt.legend()
    plt.show()

文字注释

  • 导入库:导入NumPy用于数值计算,Matplotlib用于可视化,SciPy用于优化求解.
  • 定义工厂和储能类:创建工厂和储能的类,初始化它们的参数,如光伏发电装置容量、用电负荷、可转移负荷比例、负荷转移敏感系数、额定容量、最大充放电功率、充放电效率、储能泄露率和充放电损耗成本等.
  • 初始化参数:实例化工厂和储能对象,设置具体的参数值.
  • 优化调度函数:定义优化调度函数,计算工厂的光伏出力和可转移负荷,设置优化问题的目标函数和约束条件,使用SciPy的minimize函数求解优化问题,返回最优调度结果.
  • 收益分配函数:定义收益分配函数,计算无共享和共享下的成本,定义纳什谈判的目标函数和约束条件,求解纳什谈判问题,返回收益分配结果.
  • F2S算法函数:定义F2S算法函数,初始化博弈者的投机指数,迭代更新博弈者的投机指数,计算残差并检查收敛条件,返回最终的投机指数.
  • 主程序:设置优化调度时间范围和电价数据,调用优化调度函数、收益分配函数和F2S算法函数,输出结果并可视化最优调度曲线.

以上代码提供了一个完整的仿真复现思路,涵盖了从参数设置到优化调度、收益分配和F2S算法的整个流程,帮助理解和实现论文中的研究方法.

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

论文与完整源程序_电网论文源程序的博客-优快云博客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、付费专栏及课程。

余额充值