强化学习适用于调度问题?

人工智能 强化学习
2021-11-01 06:02:18

我有一个特定的调度问题,我想知道我是否可以使用强化学习(如果可以的话,使用哪种 RL)来解决它。基本上我的问题是一个混合整数线性优化问题。我有一栋带有电加热装置的建筑物,可以将电能转化为热能。所以动作向量(决策变量)是x(t)它量化了加热设备的电功率。设备必须在一天中的每一分钟做出一个决定(因此总共有24小时×60分钟=1440变量)。这些变量中的每一个都是一个连续变量,并且可以具有以下之间的任何值02000W.

状态空间包含几个连续变量:

  • 每分钟外部变动电价:介于0美分和100每千瓦时的美分(能量)
  • 建筑物的内部温度:基本上在每个可能的值之间,但温度之间存在限制20°C22°C
  • 建筑物的热需求:之间的任何值0W10.000W
  • 改变电加热装置的“效率”14(取决于外部外部温度)

目标是最小化电力成本(在灵活的电价下)并且不违反建筑物的温度限制。如前所述,这个问题可以通过数学优化(混合整数线性规划)来解决。但我想知道你是否也可以通过强化学习来解决这个问题?由于我是强化学习的新手,所以我不知道该怎么做。我对此有些担忧。

在这里,我有一个非常大的具有连续值的状态空间。所以我无法建立一个全面的Q表,因为有很多值。此外,我不确定问题是否是强化问题的动态规划问题(大多数/全部?)。从优化的角度来看,它是一个混合整数线性问题。

谁能告诉我是否以及如何通过使用 RL 来解决这个问题?如果可能的话,我想知道哪种类型的 RL 方法适合这个。也许是 Deep-Q-Learning,还有一些 Monte-Carlo 策略迭代或 SARSA?我应该为此使用无模型还是基于模型的 RL?

提醒:没有人知道我是否以及如何使用强化学习来解决这个问题?我非常感谢每一条评论。

没有人可以就我的问题给我更多信息吗?我将非常感谢每一条评论,并非常感谢您提供更多见解和帮助。

1个回答

细节很重要,您的问题可能最好使用经典控制(求解状态方程)或运筹学风格优化来解决。但是,RL 也是一个不错的选择,因为它可以用来学习一个在出现问题时不会变脆的控制器。

对于 RL,您必须接受的一件事是约束将是软约束,即使您对它们进行严厉惩罚。也就是说,您可以预期内部温度可能会漂移到界限之外。在学习过程中肯定会。在为强化学习构建问题时,一个主要的设计问题是如何加权代表你目标的不同奖励。您可以将严格约束的权重更高,但至少最初它们需要足够低,以使成本节省不会完全被淹没。

我建议您的最坏约束失败惩罚略大于单个时间步长的最高可能电力成本。这意味着代理总是被激励在必要时花钱,而不是打破约束,同时仍然能够探索当它确实打破约束时会发生什么,而不必应对大量预测。

RL 有很多种类型。有些人更擅长处​​理不同类型的问题。我会将您的问题描述为:

  • 偶发 - 但只是为了方便描述问题。事实上,您的代理会受到 24 小时剧集的激励,让内部温度在 24 小时结束时下降以节省资金,而此时它并不关心之后可能立即发生的事情。根据当时的电价,花更多钱可能会更理想。这可能与真正的最优行为只有很小的差异,但您可以通过将问题重新构建为一个连续的问题来发挥 RL 的优势(其中混合整数线性优化可能更难构建)。

  • 连续状态空间,低维。

    • 如果事先知道价格,您可能希望扩大状态空间,以便代理知道它在当前价格下还有多长时间以及下一个价格是更高还是更低。或者,如果它们始终遵循相同的时间表,您可以将当前时间添加为状态变量。无论哪种方式,这都允许代理利用温度范围。例如,它可以在价格上涨之前加载廉价供暖,或者如果即将提供更便宜的电力,可以让温度降至可接受的最低值。
  • 大的,可能是连续的行动空间。您可能需要考虑将其近似为例如 21 个动作(0 W、100 W ...... 2000 W),因为优化这个更简单的变体将更容易编码(DQN 可以做到),同时它可能不会显着影响任何动作的最优性解决方案。

我认为你不能为了使用 Q 表而简化你的状态空间。因此,只要您愿意离散化动作空间,DQN 代理可能是您可以在这里使用的最简单的代理。

如果您不想离散化动作空间,那么您将需要使用某种形式的策略梯度方法。这将包括一个将当前状态作为输入的策略网络,然后输出功率水平选择的分布——例如功率选择的平均值和标准偏差。在生产使用中,您可以将标准偏差设置为零并使用平均值作为操作选择。可以使用像 A3C 这样的方法来训练这样的代理。

我建议您离散化操作并使用基于 DQN 的代理来学习适合您环境的近似最优策略。如果这返回了一个有希望的结果,您可以停在那里或尝试使用连续动作空间和 A3C 进一步完善它。

此外,在进入主项目之前,您需要练习使用 DQN 解决一个更简单的问题。这里有两个合理的学习问题可能是Cartpole-v1LunarLander-v2,它们也有一个连续动作变体充分了解有关设置相关 RL 方法来解决这些玩具问题的知识,应该可以让您在处理更复杂的问题时有一个良好的基础。

Keras 文档包含Atari Breakout 的示例 DQN,您可以将其用作构建自己的代码的基础。