免费|Python|【需求响应】一种新的需求响应机制DR-VCG研究

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

该程序对应文章《Contract Design for Energy Demand Response》,电力系统需求响应(DR)用来调节用户对电能的需求,即在预测的需求高于电能供应时,希望通过需求响应减少用户用电,从而满足系统平衡。程序实现新的需求响应模型DR-VCG,该模型提供了灵活的用户参与DR过程合同,并且通过投标活动保证收益分配和价格计算的合理性。通过实例证实该方法的有效性,可靠性显著提升,总费用明显降低。该程序采用python编写。

部分代码

import grid
import agent
import contract
import matplotlib.pyplot as plt
import time
import statistics
import pandas as pd
from datetime import datetime
​
​
​
def main():for i in range(1):M = 1000number_of_agents = 200number_of_simulation_per_lanbda = 100generator_price_multiply = 1gamma = [1.0,1.166,1.333,1.5,1.666,1.833,2]df_columns = ['actuel expanse','gamma','M','actuel kWh reduced','Met the demand']row_data_df = pd.DataFrame(columns=df_columns)
​Fixed_cont_avg_cost = []Fixed_cont_avg_reliability = []Fixed_single_cont_avg_cost = []Fixed_single_cont_avg_reliability = []T_F_List_Fixed_cont_Met_the_demand = []Fixed_cont_Total_expense = []gamma_used = []for lb in gamma:Fixed_cont_reduce_list = []for i in range(number_of_simulation_per_lanbda):start = time.time()print('iteration:',i)Grid = grid.grid(M,lb)Grid.introduce_self()Agents = []
​for num in range(number_of_agents):ag = agent.agent(num)Agents.append(ag)
​
​Contracts = []for i in range(10, M+1, 10):Contracts.append(contract.contract(i,0.3,0.5))
​
​single_contract = []single_contract.append(contract.contract(50,0.3,0.5))
​Grid.set_single_contract(single_contract)Grid.set_contract(Contracts)Grid.set_agents(Agents)Grid.send_contrects_to_agents()Grid.send_single_contrects_to_agents()
​
​for ag in Agents:ag.Fixed_cont_bid_on_contract()
​
​for ag in Agents:ag.Fixed_single_cont_bid_on_contract()
​Grid.Fixed_cont_get_bids_from_agent()Grid.Fixed_cont_generator_bids(price_multiply=generator_price_multiply)Grid.Fixed_cont_get_q_from_agent()Fixed_cont_sum_of_bids = Grid.knapsack(bids_type='Fixed_cont')Grid.Fixed_cont_pay_to_agents(Fixed_cont_sum_of_bids)Grid.Fixed_cont_reliability()Grid.Fixed_single_cont_get_bids_from_agent()Grid.Fixed_single_cont_get_q_from_agent()
​
​Fixed_cont_Total_expense.append(Grid.Fixed_cont_Total_expense_sum)Fixed_cont_reduce_list.append(Grid.Fixed_cont_reliability_sum_q)if Grid.Fixed_cont_reliability_sum_q >= Grid.M:met_the_demand = 1else:met_the_demand = 0T_F_List_Fixed_cont_Met_the_demand.append(met_the_demand)print('Fixed_cont- Met_the_demand: ', T_F_List_Fixed_cont_Met_the_demand)print('Fixed_cont- Total_expense: ', Fixed_cont_Total_expense)gamma_used.append(lb)
​
​row_data_df = row_data_df.append(pd.DataFrame({'actuel expanse':[Grid.Fixed_cont_Total_expense_sum],'gamma':[lb],'M': [M],'actuel kWh reduced': [Grid.Fixed_cont_reliability_sum_q],'Met the demand': [met_the_demand]}))end = time.time()print('iteration took:', (end - start), 'sec')print('-'*200)Fixed_cont_avg_cost.append(statistics.mean(Fixed_cont_Total_expense))if len(T_F_List_Fixed_cont_Met_the_demand) > 0:Fixed_cont_avg_reliability.append(T_F_List_Fixed_cont_Met_the_demand.count(True) / len(T_F_List_Fixed_cont_Met_the_demand))else:Fixed_cont_avg_reliability.append(0.0)
​filename = datetime.now().strftime('data/energy_demamd_row_data-%Y-%m-%d-%H-%M-%S.csv')row_data_df.to_csv(filename,index=False)graph_it(Fixed_cont_avg_reliability,Fixed_single_cont_avg_reliability, Fixed_cont_avg_cost,Fixed_single_cont_avg_cost)
​
def graph_it(Fixed_cont_avg_reliability =[],Fixed_single_cont_avg_reliability=[],Fixed_cont_avg_cost=[],Fixed_single_cont_avg_cost=[]):plt.rcParams["figure.figsize"] = (8, 8)fig, ax = plt.subplots()
​ax.plot(Fixed_cont_avg_reliability, Fixed_cont_avg_cost, color='blue',marker='o',label="fixed multiple cont")ax.plot(Fixed_single_cont_avg_reliability, Fixed_single_cont_avg_cost, color='black',marker='o', label="fixed single cont")ax.set(xlabel="Total_Reliability", ylabel="expenses ($)", title="(a)n= 400")fig.savefig("test.png")
​
​
​
if __name__ == "__main__":main()plt.show()

程序结果

原文结果图:

4 下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chrome 控制台不能粘贴

描述:chrome 控制台不能粘贴 解决方案:setting-Experiments-Filter中输入past,取消勾选

国际伦敦金行情分析中的趋势分析方法

国际伦敦金行情走势复杂多变。近期,金价曾经一度刷新历史的新高点至2222,但就在当天,金价又快速下跌跌超过30美元。不过这么多变的伦敦金行情也为我们的交易创造了空间,有空间就等于有机会,只要我们能够掌握国际伦敦金…

C# 多态 派生类 abstract virtual new

静态多态函数重载运算符重载 动态多态abstract 和 virtual的区别定义与用途:成员实现:继承与重写:与接口的区别: 使用抽象类的好处主要体现在以下几个方面:代码重用:设计灵活性:接口定义&#x…

HCIP作业3

第一步 给PC1配置: 先给PC2配置: 第二部 给R1的接口配置ip [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 192.168.1.252 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip ad 100.1.1.1 24 给R2的接口配置IP [R2]int g0/0/…

Java:接口应用(Comparable接口与比较器)

目录 1.引例2.Comparable接口使用3.Comparable接口的局限性4.使用comparaTo实现排序5.比较器(Comparator接口) 1.引例 class Student{private String name;private int age;public Student(String name, int age) {this.name name;this.age age;} } p…

#孩子学习编程的目的是什么?#

谢谢今日头条编辑的盛情邀请,对此,我发表自己的一点拙见。 首先,最重要的一点,学习编程可以练习打字,加强拼音输入法的掌握。对于孩子的语文成绩有一定的提高帮助,也为将来走上工作熟练使用电脑输入法打下扎…

Linux的学习之路:3、基础指令(2)

一、echo指令 这个指令在上篇文章我也用了但是忘了说了,这个指令的大概用法就是把后面跟的文本等输出在显示器上,如下代码所示打印的“Hello Linux” [rootVM-24-9-centos ~]# echo "Hello Linux" Hello Linux二、输出重定向与输入重定向 着…

vue页面实现左右div宽度,上下div高度分割线手动拖动高度或者宽度自动变化,两个div宽度或者高度拉伸调节,实现左右可拖动改变宽度的div内容显示区

实现左右或者上下div两部分拖动,宽度或者高度自动变化,实现流畅平滑的变化,还可以是实现拖动到一定宽度就不让拖动了,如果你不需要最小宽度,就直接去掉样式就行 这是页面。分左中右三部分,中间我是用来作为拖动的按钮…

Java实现猜数字游戏:编程入门之旅

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

Java研学-SpringBoot(三)

五 Spring Boot 自动配置原理 1 概念 springboot的自动装配就是从spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给spring容器来帮我们进行管理。核心注解:SpringBootApplication   调用main…

使用 Yoda 和 ClickHouse 进行实时欺诈检测

背景 Instacart 是北美领先的在线杂货公司,拥有数百万活跃的客户和购物者。在其平台上打击欺诈和滥用行为不仅对于维护一个值得信赖和安全的环境至关重要,也对保持Instacart的财务健康至关重要。在这篇文章中,将介绍了一个欺诈平台——Yoda,解释了为什么我们选择ClickHous…

奖学金NOIP2007 普及组 T1

题目背景 NOIP2007 普及组 T1 题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 55 名学生发奖学金。期末,每个学生都有 33 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同…

Linux 反引号、单引号以及双引号的区别

1.单引号—— 单引号中所有的字符包括特殊字符($,,和\)都将解释成字符本身而成为普通字符。它不会解析任何变量,元字符,通配符,转义符,只被当作字符串处理。 2.双引号——" 双引号,除了$,…

Android 14.0 SystemUI下拉状态栏增加响铃功能

1.概述 在14.0的系统产品rom定制化开发中,在对systemui的状态栏开发中,对SystemUI下拉状态栏的QuickQSPanel区域有快捷功能键开关,对于增加各种响铃快捷也是常用功能, 有需要增加响铃功能开关功能,接下来就来分析SystemUI下拉状态栏QuickQSPanel快捷功能键开关的相关源码…

API接口开发亚马逊国际获得AMAZON商品详情api采集商品详情页实时数据、实时销量、库存等参数接入演示

要获取亚马逊商品的实时数据、销量和库存等信息,您需要使用亚马逊提供的一些API接口。以下是一些可能的步骤: 注册key账号:首先,您需要注册一个账号。这将允许您访问亚马逊的各种API。 创建一个新的应用:在您的开发者…

AI智能分析网关智慧食安监管系统方案

3.15晚会刚过不久,淀粉肠的“屈辱”终于得以洗清,但某些品牌奶茶、梅菜扣肉、预制菜等等,生产过程仍是触目惊心。如何提升食品安全管理水平,保障食品从生产到消费环节的质量和安全?TSINGSEE青犀智利用智能分析网关V4Ea…

【图像合成】基于DCGAN典型网络的MNIST字符生成(pytorch)

关于 近年来,基于卷积网络(CNN)的监督学习已经 在计算机视觉应用中得到了广泛的采用。相比之下,无监督 使用 CNN 进行学习受到的关注较少。在这项工作中,我们希望能有所帮助 缩小了 CNN 在监督学习和无监督学习方面的成…

aws使用记录

数据传输(S3) 安装命令行 安装awscli: https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions 直到 aws configure list 可以运行 身份验证: 运行: aws config…

字符计数.

题目描述 给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。 元音字母包括 a,e,i,o,u,共五个,其他均为辅音字母。 输入描述 输入格式 输入一行,包含一个单词,!单词中只包含小写英文字母。单…

【QGIS从shp文件中筛选目标区域导出为shp】

文章目录 1、写在前面2、QGIS将shp文件中目标区域输出为shp2.1、手动点选2.2、高级过滤 3、上述shp完成后,配合python的shp文件,即可凸显研究区域了 1、写在前面 利用shp文件制作研究区域mask,Matlab版本,请点击 Matlab利用shp文…