【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现)

2024-01-12

???????????????? 欢迎来到本博客 ❤️❤️????????

????博主优势: ???????????? 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️ 座右铭: 行百里者,半于九十。

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Python代码及文章


????1 概述

文献来源:

摘要:
具有恒温控制的负载,如冰箱,非常适合作为灵活的需求资源。本文提出了一种用于冰箱的分散式负载控制算法。该算法改编自现有的连续时间控制方法,旨在实现低计算复杂性和处理可变长度离散时间步骤的能力,这些是嵌入在电器和高吞吐量模拟中的理想特性。大量异质电器的模拟结果说明了对功耗的准确集中控制和高计算效率。冰箱和其他恒温控制负载的物理特性使它们非常适合作为向电网提供灵活性的低成本提供者:它们的功耗可以在十几分钟内移位而不会对冷却性能产生明显影响。这种灵活性可以用于提供响应和储备服务,以减少极端负载水平并缓解爬坡约束[1]。鉴于涉及的设备数量庞大,可以使用随机控制方案有效地分散控制大规模电器群体,如[2]–[4]中提出的。实际实施还必须考虑实施、计算和通信方面的约束,如[5]、[6]中所讨论的。

在[7]中引入了一种用于异质TCL的健壮分散式控制方案,并在[8]中进行了扩展,以允许TCL集体从电网吸收能量的情景。该控制策略具有令人满意的特性,即它只需要单向广播信息,但可以实现对预期参考信号的跟踪(即对大量设备来说是精确的),而不违反各个设备的温度限制。然而,其连续时间形式的积分形式不利于在嵌入式控制器上实施或者同时快速模拟多个设备。本文通过推导一种离散时间控制算法来解决这一缺点,该算法实施了[7]、[8]中提出的控制策略。该算法特别适用于具有计算约束的设备上的实施。具体而言,它避免了数值积分,并使用可变大小的贪婪时间步长,以便放宽实时性能要求。首先,描述了一个离散化过程,针对分段常数控制信号的情况,并重新构造了控制器的自然坐标。然后,推导出了控制设备行为的每个开关过程的表达式。最后,提供了一个明确的控制算法,并利用基于Python的模拟展示了其对异质冰箱群体的有效性。

???? 2 运行结果


# Two subplots, the axes array is 1-d
fig, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(time_list/3600,70*dcycles.mean() * np.array(pi_profile),'k', label='$\Pi$')
axarr[0].plot(time_list/3600,70*results.mean(axis=0),'r',label='100k')
axarr[0].plot(time_list/3600,70*results1k.mean(axis=0), label='1k')
axarr[0].legend(loc='lower right')

axarr[1].plot(time_list/3600,70*(results.mean(axis=0)- dcycles.mean() * np.array(pi_profile)),'r',label='100k')
axarr[1].plot(time_list/3600,70*(results1k.mean(axis=0)- dcycles1k.mean() * np.array(pi_profile)),label='1k')
axarr[1].legend(loc='lower right')

#plt.axes().set_aspect(1)
fig.set_size_inches(3.5,3.5)
axarr[1].set_xlabel('time [h]')
axarr[0].set_ylabel('consumption \nper appliance [W]')
axarr[1].set_ylabel('deviation \nper appliance [W]')  


plt.plot(z_list)  

plt.plot(rate1_list, label='rate_off_on')
plt.plot(rate2_list, label='rate_on_off')
plt.legend()


# Two subplots, the axes array is 1-d
fig, axarr = plt.subplots(3, sharex=True)
axarr[0].plot(time_list/3600, pi_profile,'k')
axarr[1].plot(time_list/3600, control_list,'k')
axarr[2].plot(time_list/3600, temperature_list,'k')

fig.set_size_inches(3.5,3.5)
axarr[2].set_xlabel('time [h]')
axarr[0].set_ylabel('reference $\Pi$')
axarr[0].set_ylim((0.5,1.5))
axarr[1].set_ylabel('control state $c$')
axarr[2].set_ylabel('temperature [${}^\circ C$]')  


pi_profile1 = np.array([1.0 for time in time_list_small])
pi_profile2 = np.array([1.0 + 0.3 * np.sin(2*np.pi*time/1800) for time in time_list_small])
pi_profile3 = np.array([1.0 + 0.3 * signal.square(2*np.pi*time/1800) for time in time_list_small])
pi_profile4 = np.array([1.0 + 0.3 * signal.sawtooth(2*np.pi*time/1800) for time in time_list_small])

pi_profile = np.concatenate((pi_profile1, pi_profile2, pi_profile3, pi_profile4, pi_profile1))

plt.plot(time_list/3600, pi_profile)
plt.gca().set_xlabel('hours');
plt.gca().set_ylabel('$\Pi$');  

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

???? 4 Python代码及文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现) 的相关文章

  • (Django) (外键问题) model.person_id 不能为 NULL

    我知道这在 Django 圈子里似乎是一个被过度询问的问题 但我不敢说我 还没有找到解决方案 我的模型 from djago import User class InfoPersonal models Model person models
  • Pytorch 损失为 nan

    我正在尝试用 pytorch 编写我的第一个神经网络 不幸的是 当我想要得到损失时遇到了问题 出现以下错误信息 RuntimeError Function LogSoftmaxBackward0 returned nan values in
  • 以类似字典的方式将新项目添加到某些结构化数组中

    我想扩展 numpy 中的结构化数组对象 以便我可以轻松添加新元素 例如 对于一个简单的结构化数组 gt gt gt import numpy as np gt gt gt x np ndarray 2 dtype names A B fo
  • 隐藏控制台并执行 python 脚本

    我正在尝试使用 pyinstaller 在 Windows 10 上使用 pyqt5 模块编译在 python 3 中构建的 python 脚本 该脚本在运行时隐藏窗口 为了编译我的脚本 我执行了以下命令 pyinstaller onefi
  • 这是我尝试安装 pip3 时得到的结果

    这是我尝试安装 pip3 时得到的结果 sudo apt get install python3 pip Reading package lists Done Building dependency tree Reading state i
  • 使用 asyncore 读取网站

    我想异步阅读一个网站 据我所知 这是不可能的 urllib 现在我尝试使用普通套接字进行阅读 但是 HTTP 给我带来了麻烦 我遇到了各种时髦的编码 例如传输编码 分块 必须手动解析所有这些东西 我现在想编码 C 而不是 python 难道
  • 使用 Pandas 滚动差异

    您好 我正在尝试使用 Pandas 滚动函数来计算下表中的滚动差异 我正在尝试生成 每月可用项目 列中的值 但没有得到任何结果 请帮忙 Item Adds Subtracts Month Monthly Available items A
  • 使用python同时播放两个正弦音

    我正在使用 python 来播放正弦音 音调基于计算机的内部时间 以分钟为单位 但我想根据秒同时播放一个音调 以获得和谐或双重的声音 这就是我到目前为止所拥有的 有人能指出我正确的方向吗 from struct import pack fr
  • python中remove方法的安全使用

    我从列表继承了一个 UserList 类并实现了以下方法来删除标记为已删除的条目 def purge deleted self for element in list iter self if ele mark deleted lt 1 s
  • 设置区域设置和字符串模块

    这个简单的脚本 from locale import LC ALL setlocale print setlocale LC ALL from string import letters print letters 给我这个输出 tr TR
  • Python 中 Goto 标签的替代方案?

    我知道我不能使用 Goto 我也知道 Goto 不是答案 我读过类似的问题 但我只是想不出解决我的问题的方法 所以 我正在编写一个程序 你必须在其中猜测一个数字 这是我遇到问题的部分的摘录 x random randint 0 100 I
  • 遍历 globals() 字典

    我 尝试 使用globals 在我的程序中迭代所有全局变量 我就是这样做的 for k v in globals iteritems function k v 当然 这样做时 我只是创建了另外 2 个全局变量 k and v 所以我得到这个
  • __subclasses__ 没有显示任何内容

    我正在实现一个从适当的子类返回对象的函数 如果我搬家SubClass from base py 没有出现子类 subclasses 它们必须在同一个文件中吗 也许我从来没有直接导入subclass py对Python隐藏子类 我能做些什么
  • “分页文件太小,无法完成此操作”尝试训练 YOLOv5 对象检测模型时出错

    我有大约 50000 个图像和注释文件用于训练 YOLOv5 对象检测模型 我在另一台计算机上仅使用 CPU 训练模型没有问题 但需要太长时间 因此我需要 GPU 训练 我的问题是 当我尝试使用 GPU 进行训练时 我不断收到此错误 OSE
  • Emacs:调试Python的方法

    我把这个贴在程序员 stackexchange com https softwareengineering stackexchange com questions 29844 emacs methods for debugging pyth
  • 调试 python Web 服务

    我正在使用找到的说明here http www diveintopython net http web services user agent html 尝试检查发送到我的网络服务器的 HTTP 命令 但是 我没有看到按照教程中的建议在控制
  • captureWarnings 设置为 True 不会捕获警告

    我想记录所有警告 我以为这样的设定captureWarnings to True应该可以解决问题 但事实并非如此 代码 import logging import warnings from logging handlers import
  • 矩阵求逆 (3,3) python - 硬编码与 numpy.linalg.inv

    对于大量矩阵 我需要计算定义为的距离度量 尽管我确实知道强烈建议不要使用矩阵求逆 但我没有找到解决方法 因此 我尝试通过对矩阵求逆进行硬编码来提高性能 因为所有矩阵的大小均为 3 3 我预计这至少会是一个微小的改进 但事实并非如此 为什么
  • 应用程序的外观 - Py2exe / wxPython

    所以我的问题是我的应用程序的外观和感觉 因为它看起来像一个旧的外观应用程序 它是一个 wxPython 应用程序 在 python 上它运行良好并且看起来不错 但是当我使用 py2exe 将其转换为 exe 时 外观很糟糕 现在我知道如果你
  • 如何访问模板缓存? - 姜戈

    I am 缓存 HTML在几个模板内 例如 cache 900 stats stats endcache 我可以使用以下方式访问缓存吗低级图书馆 例如 html cache get stats 我确实需要对模板缓存进行一些细粒度的控制 有任

随机推荐