强化学习用于电源管理

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

  1. SP处于空闲状态
  2. SP刚进入睡眠状态且SQ>=1
  3. SP处于睡眠状态且SQ从0变为1

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

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


回答:

Q-learning适用于马尔可夫决策过程(MDP),在给定状态下执行一个动作会导致确定性地过渡到一个新状态。

你描述的问题是否属于部分可观察马尔可夫决策过程(POMDP)还是MDP尚不清楚。如果你有一个POMDP(你在没有队列状态信息的情况下做出睡眠或唤醒的决策),那么这个问题更难解决。

如果你只是在可以观察到系统状态时做出睡眠超时决策,那么你有一个MDP。在这种情况下,你应该只在到达下一个选择动作的状态时更新Q矩阵。

这是我对你示例中事件序列的理解:

  1. 系统在状态(0,0,0)中睡眠
  2. 请求到达队列,系统仍在睡眠中 – (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个请求 – 如果系统在唤醒时发现大量请求,那么它应该立即对前一个动作进行惩罚。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注