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

