machine-learning - 电源管理的强化学习

标签 machine-learning power-management reinforcement-learning

我正在解决一个电源管理问题,我根据事件的发生来控制计算板的电源管理。我使用强化学习(传统的 Q 学习)进行电源管理,其中计算板作为服务提供商 (SP) 来处理请求(图像)。 SP 连接到智能相机,电源管理器 (PM) 算法在相机上运行,​​向 SP 发出适当的电源命令( sleep 、唤醒)。智能相机根据事件的发生捕获图像(请求),并为请求(图像)维护服务队列(SQ)。我还有一个基于 ANN 的工作负载估计器,它将当前工作负载分类为。因此,Q 学习算法的状态空间由 Q(s,a) 的复合组成,其中 s=(SR, SQ, SP)。 SR 是工作负载的状态。 SQ是服务队列的状态,SP是服务提供者的状态。 根据当前工作负载、队列状态和服务提供者的状态,PM 向 SP 发出某些命令( sleep 、唤醒)。 该决定是在以下阶段做出的:

  1. SP 空闲
  2. SP刚刚进入休眠状态且SQ>=1
  3. SP处于 sleep 状态,SQ从0转变为1。

对于每个操作,都会分配一个成本,该成本由该操作引起的每个请求的平均功耗和平均延迟的加权和组成。在 sleep 状态和空闲状态两者中,该 Action 包括从预定义超时值列表中选择一些超时值。我的问题如下:

当SP进入休眠状态并选择超时值时,一些请求可能会在超时值期间到达,从而导致SQ的状态发生变化。这也会改变复合状态(例如,S(0,0,0) 到 S(0,N,0))。在超时值结束时,PM 决定唤醒 SP(当 SQ>0 ). 唤醒后,SP 处理请求,当 SQ =0 时,它的状态为 (0,0,1) 或 (1,0,1)。然后它为之前的状态分配一个成本。它还会更新我的问题是,成本应该分配给状态(0,0,0)还是(0,N,0)?原则上,先前的状态是(0 ,N,0),但该请求是在队列中的某些请求到达时自动到达的,因此在此状态下不采取任何操作,并且没有可用于分配成本的操作。

最佳答案

Q-学习适用于马尔可夫决策过程 (MDP),其中在给定状态下执行操作会导致确定性转换到新状态。

目前尚不清楚您描述的问题是部分可观察马尔可夫决策过程 (POMDP) 还是 MDP。如果您有 POMDP(您在没有有关队列状态的信息的情况下决定 sleep 或唤醒),那么问题就更难解决。

如果您仅在可以观察系统状态时做出 sleep 超时决策,那么您就拥有了 MDP。在这种情况下,您应该仅在到达要选择操作的下一个状态时更新 Q 矩阵。

以下是我对示例中事件顺序的理解:

  1. 系统正在休眠状态(0,0,0)
  2. 请求到达队列,系统仍处于 sleep 状态 - (0,N,0)。
  3. 系统唤醒 - (0,N,1) 或 (1,N,1)
  4. 系统处理请求 - (0|1,0,1)

在第4步之后,系统需要再次做出超时决策并更新Q矩阵。当前状态是(0|1,0,1),这个状态应该用在Q-learning算法中。

但是,您担心更新 (0|1,0,1) 处的 Q 矩阵不会考虑系统处理休眠时到达的 N 个请求所花费的时间。 处理这个问题可能有多种选择,其中大多数可能涉及重构问题的状态空间。一种方法是在奖励函数中考虑 N 个请求 - 如果系统发现您在醒来时发现大量请求,那么它应该立即惩罚之前的操作。

关于machine-learning - 电源管理的强化学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072538/

相关文章:

python - sklearn中StratifiedKFold和StratifiedShuffleSplit的区别

python - 使用逻辑回归进行预测 (Python Scikit Learn)

c++ - 使用 SVM 训练 CK+ 地标以进行表达识别

hibernate - 如何在 Ubuntu 18.04 中 hibernate

linux - Linux 中的电源管理框架

tensorflow - 如何识别放大的图像?

sleep - 如何将 Android 应用程序安装为系统应用程序

algorithm - 学习元素的顺序

python - 在 Keras 中使用 Tensorflow Huber 损失

reinforcement-learning - 使用新 Action /扩展 Action 集强化学习