Page 94 - 《软件学报》2026年第2期
P. 94

曾文瑄 等: 云计算中基于      SAC  的多视角工作负载预测集成框架                                           573


                  3.2.3.2    状 态
                    状态空间需表征实时负载与模型预测行为, 在               SAC-MWF  中, 状态由当前历史窗口与上一时刻各模型预测误
                 差构成:

                                                        s t = {X t ,L t−1 }                          (26)
                                                                                  L t−1 = {l ,l } 编码上一时刻
                                                                                        m
                                                                                           e
                 其中, 历史窗口    X t = {x t−T , x t−T+1 ,..., x t−1 } 提供负载的时序上下文信息, 各模型误差向量
                                                                                        t−1  t−1
                 各模型的预测表现,      l m   为多视角预测模型的误差集合,       l  e   为集成模型的整体误差.
                                 t−1                       t−1
                  3.2.3.3    奖励函数
                    奖励函数的设计需准确量化集成预测性能, 同时平衡短期误差控制与长期稳定性. 基于上述目标, SAC-MWF
                 采用均方误差构建奖励函数:

                                                       1  H ∑(        ) 2
                                                 r t = 1−   y t+j−1 − ˆy ensemble                    (27)
                                                                  t+j−1
                                                       H
                                                         j=1
                 其中,   y t+j−1  和  ˆ y ensemble  分别表示第  j 个预测步长上的真实值与集成预测值, H  为预测窗口大小. 为缓解不同负载量级
                            t+j−1
                 场景下的奖励尺度差异, SAC-MWF        实验所用数据集均经过归一化处理.
                  3.2.3.4    状态转移函数
                    状态转移函数定义了环境在动作            a t 作用下的变化规律. 在     SAC-MWF  中, 状态由当前历史窗口和上一时刻的
                 预测误差组成. 历史窗口是真实负载序列中的连续值, 因此在任意时刻, 其中的数据都是确定的. 对于预测误差, 当
                 动作  a t 被确定时, t 时刻的集成模型预测值和预测误差也随之确定. 而多视角预测模型的预测误差在生成多视角
                 预测值时也已经确定. 因此, 对于确定的状态            s t 和动作  a t , 只会导致唯一的下一时刻状态      s t+1 :

                                                       s t+1 = {X t+1 ,L t }                         (28)
                                                                                  L t = {l ,l } 由  t 时刻各模型的
                                                                                       m
                                                                                         e
                 其中, 下一时刻历史窗口       X t+1 = {x t−T+1 , x t−T+2 ,..., x t } 从原始负载序列中获取, 误差向量   t  t
                 预测结果计算得到. 对于状态转移函数            P, 当且仅当下一时刻状态与公式          (28) 一致时输出概率为     1, 否则为  0:

                                                          {
                                                            1, s t+1 = {X t+1 ,L t }
                                               P(s t+1 | s t ,a t ) =                                (29)
                                                            0, otherwise
                  3.3   总体预测算法设计
                    在强化学习任务中, 经验回放池存入的内容包括本轮的状态、动作、奖励、下一状态以及是否结束. 但在任
                 务场景下, 由于无法预知下一时刻的历史窗口数据, 也因此无法确定下一时刻的状态. 为解决该问题, 本文将上一
                 时刻的状态、动作、奖励和当前时刻的状态组成经验存入经验回放池. 在训练时, 当每一回合的状态被确定后, 先
                 将经验存入回放池       (算法  1  第  12  行) 再执行后续流程. SAC-MWF  的整体训练流程如算法        1  所示.

                 算法  1. SAC-MWF  训练流程.
                                                                                              ′
                                                                                                ′
                                                                                          ′
                 输入: 最大训练轮数: M, 最大序列长度: Time, 历史窗口大小: T, 预测窗口大小: H, 归一化负载序列:             X = {x , x ,..., x ′  },
                                                                                              1  2   Time
                 SAC  网络更新频率: iteration;
                 1. 初始化  SAC  策略网络  π θ 、 经验回放池  D、价值网络与目标网络
                 2. for  epoch ← 1 to M  do
                 3.   L 0 ← 0; //初始化上一轮预测误差
                 4.   s t+1 ← ∅; //初始化上一时刻的状态
                 5.   a t ← ∅; //初始化动作向量
                 6.   r t ← 0; //初始化奖励
                 7.  for  t ← T to Time− H do
                 8.      X ← {x ′ t−T , x ′ t−T+1 ,..., x }; //生成历史窗口
                        ′
                                       ′
                                       t−1
                        t
   89   90   91   92   93   94   95   96   97   98   99