Machine learning 电源管理的强化学习

Machine learning 电源管理的强化学习,machine-learning,power-management,reinforcement-learning,Machine Learning,Power Management,Reinforcement Learning,我正在研究一个电源管理问题,根据事件的发生来控制计算板的电源管理。我正在使用强化学习传统的Q-learning进行电源管理,其中计算板作为服务提供商SP处理请求和图像。SP连接到智能摄像头,Power Manager PM算法在摄像头上运行,向SP发出适当的电源命令睡眠、唤醒。智能摄像头根据事件的发生捕获图像请求,并为图像请求维护服务队列SQ。我还有一个基于人工神经网络的工作量估计器,它将当前的工作量分为低工作量和高工作量。因此,Q-学习算法的状态空间由Qs的组合组成,其中s=SR,SQ,SP。

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

SP处于空闲状态 SP刚刚进入睡眠状态,SQ>=1 SP处于睡眠状态,SQ从0过渡到1。 对于每个操作,分配一个成本,该成本由操作导致的每个请求的平均功耗和平均延迟的加权和组成。在睡眠状态和空闲状态下,操作包括从预定义的超时值列表中选择一些超时值。我的问题如下:


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

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

不清楚您描述的问题是部分可观察的马尔可夫决策过程POMDP还是MDP。如果你有一个POMDP,你在没有队列状态信息的情况下决定睡觉还是醒来,那么问题就更难解决了

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

以下是我如何理解您示例中的事件顺序:

系统正在0,0,0状态下休眠 请求到达队列时,系统仍处于休眠状态-0,N,0。 系统唤醒-0,N,1或1,N,1 系统处理请求-0 | 1,0,1 在步骤4之后,系统需要做出另一个超时决策并更新Q矩阵。当前状态为0 | 1,0,1,此状态应在Q-学习算法中使用

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

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

不清楚您描述的问题是部分可观察的马尔可夫决策过程POMDP还是MDP。如果你有一个POMDP,你在没有队列状态信息的情况下决定睡觉还是醒来,那么问题就更难解决了

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

以下是我如何理解您示例中的事件顺序:

系统正在0,0,0状态下休眠 请求到达队列时,系统仍处于休眠状态-0,N,0。 系统唤醒-0,N,1或1,N,1 系统处理请求-0 | 1,0,1 在步骤4之后,系统需要做出另一个超时决定 并更新Q矩阵。当前状态为0 | 1,0,1,此状态应在Q-学习算法中使用

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

这是一个相当密集的帖子。你有没有办法减少冗长的内容,以增加有人阅读全部内容的机会?问题是,如果我不详细解释,就没有多大意义。这是一篇相当密集的文章。你有没有办法减少冗长的内容,以增加有人阅读全部内容的机会?问题是,如果我不详细解释,就没有多大意义。你完全理解这个问题。睡眠超时决策基于对系统状态的观察。但是,我不知道是否可以将其称为MDP,因为决策还取决于过去的历史工作量预测。我计算成本如下。当系统唤醒时,它会在处理所有请求后将成本分配给前一个状态。成本包括即时平均功耗和每个请求的平均延迟的加权和。当系统空闲时,它会选择一个超时策略,并在下一个状态中评估该策略。如果在超时期间没有请求,则成本仅为平均功耗,系统将关闭。但是,如果在从空闲到睡眠的转换过程中有一些请求,那么成本将成为平均功耗和队列中请求数的加权和。在这种情况下,我不能使用平均延迟,因为请求尚未处理。如果在超时期间出现请求,将立即对其进行处理,成本是平均功耗。我的困惑是,当系统进入睡眠模式且队列为空时,状态为0 | 1,0,0。但是在超时策略期间可能会有一些请求,并且状态更改为0 | 1,N,0。当超时策略过期时,系统将唤醒并处理所有请求,并将成本分配到以前的状态。成本分配到的州是0 | 1,0,0还是0 | 1,N,0?事实上,成本分配到的是先前状态超时值中的操作。但问题是,前一个操作分配成本的前一个状态应该是什么?成本应该分配到0,0,0,因为这是系统执行最后一个超时操作的位置。您也可以在每次处理请求时执行超时操作。在这种情况下,您将更新Q0 | 1,N,0,a。这种配置可能会降低学习效率,因为在初始阶段,当队列已满时,系统可能会休眠,但额外的灵活性可能会在后续阶段导致更高的能效。您已经完全理解了这个问题。睡眠超时决策基于对系统状态的观察。但是,我不知道是否可以将其称为MDP,因为决策还取决于过去的历史工作量预测。我计算成本如下。当系统唤醒时,它会在处理所有请求后将成本分配给前一个状态。成本包括即时平均功耗和每个请求的平均延迟的加权和。当系统空闲时,它会选择一个超时策略,并在下一个状态中评估该策略。如果在超时期间没有请求,则成本仅为平均功耗,系统将关闭。但是,如果在从空闲到睡眠的转换过程中有一些请求,那么成本将成为平均功耗和队列中请求数的加权和。在这种情况下,我不能使用平均延迟,因为请求尚未处理。如果在超时期间出现请求,将立即对其进行处理,成本是平均功耗。我的困惑是,当系统进入睡眠模式且队列为空时,状态为0 | 1,0,0。但是在超时策略期间可能会有一些请求,并且状态更改为0 | 1,N,0。当超时策略过期时,系统将唤醒并处理所有请求,并将成本分配到以前的状态。成本分配到的州是0 | 1,0,0还是0 | 1,N,0?事实上,成本分配到的是先前状态超时值中的操作。但问题是,前一个操作分配成本的前一个状态应该是什么?成本应该分配到0,0,0,因为这是系统执行最后一个超时操作的位置
您还可以在每次处理请求时执行超时操作。在这种情况下,您将更新Q0 | 1,N,0,a。这种配置可能会降低学习效率,因为在初始阶段,当队列已满时,系统可能会休眠,但额外的灵活性可能会导致后期阶段更高的功率效率。