复现代码 《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》 首先, 基于闵可夫斯基加法提出了充电站内电动汽车集群模型的压缩方法, 并建立了日前可调度潜力预测模型和实时可调度潜力评估模型。 同时, 考虑充电站间的非合作博弈, 建立了电力零售市场下充电站的策略投标模型, 并基于驻点法将其转化为一个广义 Nash 均衡问题。 然后, 提出了基于日前报价和实时报量的两阶段市场模式, 并与合作投标模式、 价格接受模式和集中调度模式进行对比。 算例基于IEEE38节点配电系统进行,注释清晰,程序运行正常。 是学习电力市场投标,Nash均衡的经典负责。 参考文档《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》,完美复现。

最近在研究电力市场相关问题,发现《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》这篇文章里的模型和方法很有意思,决定尝试复现其代码。今天就来和大家分享一下这个过程中的收获。

文章开篇提到基于闵可夫斯基加法提出了充电站内电动汽车集群模型的压缩方法。这部分实现起来关键在于理解闵可夫斯基加法在这个场景中的应用。假设我们有两个集合A和B,闵可夫斯基加法的结果集合C中的元素c = a + b,其中a属于A,b属于B。在代码中可以这样简单示意(Python代码示例):

A = [1, 2, 3]
B = [4, 5, 6]
C = [a + b for a in A for b in B]
print(C)

这段代码通过列表推导式实现了简单的闵可夫斯基加法,虽然实际应用到电动汽车集群模型压缩会复杂得多,但原理是类似的,就是通过这种集合间的运算来对复杂的电动汽车集群进行简化表示。

接着,文章建立了日前可调度潜力预测模型和实时可调度潜力评估模型。以日前可调度潜力预测模型为例,它可能涉及到各种参数的计算和预测算法。假设我们有一些历史数据存储在一个二维数组historical_data中,每一行代表一个时间点,每一列代表不同的参数,如充电功率、车辆数量等。我们可以用如下代码片段简单模拟一个基于线性回归的预测部分(实际肯定更为复杂且需调优):

import numpy as np
from sklearn.linear_model import LinearRegression

# 假设前两列是特征,最后一列是目标值
X = historical_data[:, :2]
y = historical_data[:, -1]

model = LinearRegression()
model.fit(X, y)

这里利用了scikit - learn库中的线性回归模型,通过历史数据进行拟合,后续就可以基于这个模型对日前可调度潜力进行预测。

复现代码 《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》 首先, 基于闵可夫斯基加法提出了充电站内电动汽车集群模型的压缩方法, 并建立了日前可调度潜力预测模型和实时可调度潜力评估模型。 同时, 考虑充电站间的非合作博弈, 建立了电力零售市场下充电站的策略投标模型, 并基于驻点法将其转化为一个广义 Nash 均衡问题。 然后, 提出了基于日前报价和实时报量的两阶段市场模式, 并与合作投标模式、 价格接受模式和集中调度模式进行对比。 算例基于IEEE38节点配电系统进行,注释清晰,程序运行正常。 是学习电力市场投标,Nash均衡的经典负责。 参考文档《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》,完美复现。

考虑充电站间的非合作博弈,建立策略投标模型并转化为广义Nash均衡问题,这部分就比较考验对博弈论的理解。在代码实现上,可能会涉及到多主体之间的策略互动。比如,假设有两个充电站,每个充电站有自己的投标策略函数bidstrategy1bidstrategy2,它们会根据对方的策略和市场情况调整自己的投标。

def bid_strategy_1(strategy_2):
    # 根据对方策略计算自己的投标
    if strategy_2 == 'high_bid':
        return 'low_bid'
    else:
        return 'high_bid'


def bid_strategy_2(strategy_1):
    # 根据对方策略计算自己的投标
    if strategy_1 == 'low_bid':
        return 'high_bid'
    else:
        return 'low_bid'

这只是非常简单的模拟,实际情况需要考虑更多的市场因素和约束条件来精确实现非合作博弈下的投标策略。

文章提出的基于日前报价和实时报量的两阶段市场模式,与其他模式对比。在复现过程中,为了展示不同模式的差异,我们可以编写函数分别实现各个模式。以集中调度模式为例:

def centralized_scheduling(chargers):
    total_demand = sum([charger.demand for charger in chargers])
    available_power = get_available_power()  # 假设这个函数获取可用功率
    if total_demand <= available_power:
        for charger in chargers:
            charger.schedule()
    else:
        # 按一定规则分配功率
        power_ratio = available_power / total_demand
        for charger in chargers:
            charger.schedule(power_ratio * charger.demand)

这个函数假设每个充电站对象chargerdemand属性表示需求功率,schedule方法用于安排充电。通过这样的函数实现,我们就可以对比不同模式下充电站的运行情况。

算例基于IEEE38节点配电系统进行,整个复现过程注释清晰,程序运行正常。这次复现不仅让我对电力市场投标、Nash均衡等概念有了更深入的理解,也在代码实现能力上得到了锻炼。参考文档《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》确实是学习相关知识的经典素材,完美复现它为我的研究和学习打开了新的思路。希望我的分享也能给对这方面感兴趣的朋友一些启发。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐