【Python】Trans论文复现:基于Agent的电力市场深度决策梯度(深度强化学习)算法建模程序代码!

文摘   科学   2024-09-27 09:36   江苏  

简介


适用平台/参考论文:Python 3.7+Pytorch 1.0.1;

Agent-Based Modeling in Electricity Market Using Deep Deterministic Policy Gradient Algorithm》;

程序使用深层确定性策略梯度算法对发电商进行建模,该算法使用深度神经网络来提高性能并避免状态/动作空间的离散化。所提出的方法被用于模拟几种市场场景,包括不同设置的发电商耐心特性、不同数量的发电商和时变负载。程序中算例丰富、注释清晰、干货满满,创新性很高!下面对文章和程序做简要介绍!

创新点


1. 提出了一种基于深层确定性策略梯度算法的电力市场仿真模型。深度神经网络的使用提高了所提出的模型在处理高维连续数据方面的性能,避免了状态/动作空间的离散化。

2. 提出了一种分析市场力量的方法。所提出的模型可以通过定量调整代理的等待时间来准确地模拟不同的竞价水平,用于表征市场竞争程度和分析潜在的市场力量。

主要工作


基于强化学习(RL)的博弈论方法和仿真通常用于分析电力市场均衡。然而,前者仅限于信息完整的简单市场环境,难以直观地反映出策略的默契;而传统的RL算法仅限于低维离散状态和动作空间,收敛不稳定。针对上述问题,本文采用深度确定性策略梯度(DDPG)算法对发电商的投标策略进行建模。仿真实验,包括发电商、负载和网络的不同设置,表明该方法比传统的RL算法更准确,即使在不完全信息环境下也能收敛到完全信息的纳什均衡。此外,该方法通过定量调整发电商的等待时间参数,可以直观地反映不同的默契合谋水平,是分析市场策略的有效手段。

算法训练过程:

文章结果


程序结果


部分程序


n_agents = 2action_space = np.arange(03.10.2)n_steps = 10000a_real = np.array([15.018.0])strategic_variables = np.zeros((n_steps, n_agents))multi_agents = QLearningAgents(n_agents, action_space)for step in range(n_steps):    action = multi_agents.select_action(str(obs))    alpha = action * a_real    nodal_price, profit = market_clearing(alpha)    strategic_variables[step] = alpha    mean_price = nodal_price.mean()    bs_ = mean_price // 10 if step != n_steps - 1:        next_obs = obs_        next_obs = None    multi_agents.learn(str(obs), action, profit, str(next_obs))    obs = next_obs    if (step + 1) % 1000 == 0:        print('Step:', step + 1, 'a1: %.2f' % alpha[0], 'a2: %.2f' % alpha[1],              'r1: %.3f' % profit[0], 'r2: %.3f' % profit[1])C = np.array([[0.36, 0.58, 0.75],              [0.920.280.29]])plt.plot(strategic_variables[:, 0], lw=0.5, color=C[0], alpha=0.5, label=r"$\alpha_{1t}$")plt.plot(strategic_variables[:, 1], lw=0.5, color=C[1], alpha=0.5, label=r"$\alpha_{2t}$")plt.plot([0, 10000], [20.29, 20.29], '--', color=C[0], label=r"$\alpha_{1t}^\ast$")plt.plot([0, 10000], [22.98, 22.98], '--', color=C[1], label=r"$\alpha_{2t}^\ast$")plt.xlabel(r"$t$")plt.ylabel(r"$\alpha_{gt}$ (\$/MHh)")plt.title("Q-Learning (3-Bus System)")plt.savefig('Q-Learning.png', dpi=600)

部分内容源自网络,侵权联系删除!

欢迎感兴趣的小伙伴点击文末阅读原文获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!

更多创新性预测及优化程序请点击公众号首页:《预测优化》|《综合能源》链接!

创新优化及预测代码
免费分享研究理论及方法,基础代码资料,努力提供电力系统相关专业预测及优化研究领域的创新性代码,保质保量!面包多地址:https://mbd.pub/o/yc_yh/work
 最新文章