乙烯裂解炉结焦程度预测(时序预测)
背景
乙烯裂解炉运行过程中,炉管内壁结焦会增加传热热阻和流动阻力,影响裂解炉的稳定运行。横跨段压力能够间接反映炉管内的流动阻力变化,因此可以结合历史运行数据,对下一时间点的第一组横跨段压力进行预测,形成连续的压力变化曲线,为分析结焦趋势、优化运行参数和延长运行周期提供数据参考。
乙烯裂解炉炉管结焦现象
本案例使用 DTEmpower 对乙烯裂解炉分钟级运行数据进行滑动滤波、白噪声检验、异常值清理和外源变量时滞对齐,在此基础上训练时序预测模型,并使用独立测试集评估模型效果。
案例数据集
输入数据集为 第一组结焦预测数据集,共 77701 条记录、12 个字段。数据时间范围为 2022-02-23 11:18:00 至 2022-04-18 10:18:00,相邻记录间隔 1 分钟。
数据集包含 日期、第一组横跨段-Mpa、第一组出口温度-℃、第一组稀释蒸汽-kg/h、O2含量%、过量空气系数、第一组进料量-kg/h、第一组稀释比、底部燃料气-kg/h、侧壁燃料气-kg/h、出口温度-℃ 和 清焦空气-kg/h。其中,第一组横跨段-Mpa 为预测目标,其余运行参数用于数据处理和模型训练。
查看原始数据集
操作流程
案例功能点概述:
通过本案例操作,用户将学习和了解如何在 DTEmpower 中完成乙烯裂解炉横跨段压力时序预测的完整流程,包括:
- 对
第一组横跨段-Mpa执行 17 点中心滑动平均,获得中心基线和滤波残差; - 使用 Ljung-Box 方法检验滤波残差是否接近白噪声;
- 根据滤波残差的 Z-score 识别异常值,并生成清理后的压力数据;
- 按固定时间位置对齐 6 个外源变量;
- 以 16 分钟为间隔生成下一时间点预测样本,并划分训练集和测试集;
- 创建时序预测任务,完成模型训练、选择和部署;
- 使用独立测试集评估已部署模型并查看预测结果。
完整流程如下图所示。
乙烯裂解炉结焦程度预测操作流程
对目标变量进行滑动滤波
结合分钟级过程数据的处理经验和压力变化规律,为保留能够反映炉管流动阻力变化的压力趋势,同时削弱疑似白噪声的分钟级波动,本步骤使用覆盖 16 分钟的 17 点中心滑动平均生成压力基线,并以原始压力与基线之差表示滤波残差。
在「流程」中选择 第一组结焦预测数据集,单击【智能数据处理】。
选择原始数据集并进入智能数据处理
在「智能数据处理」窗口中,将输入数据集设置为 第一组结焦预测数据集,将输出数据集命名为 01_滑动滤波结果,依次单击【创建】和【确认】,完成任务创建。
创建滑动滤波任务
任务创建完成后,输入以下处理要求并运行任务。
请对“第一组横跨段-Mpa”执行17点中心滑动平均,并计算滤波残差。
1. 将“日期”转换为标准日期时间类型,并按“日期”升序排列。
2. 从0开始连续生成“原始行位置”。
3. 对每条能够形成完整窗口的记录,取前8条、当前1条和后8条,共17条“第一组横跨段-Mpa”。
4. 计算17条数据的算术平均值,保存到新增字段“17点中心基线”。
5. 最前8条和最后8条记录无法形成完整窗口,其“17点中心基线”保持为空。
6. 对中心基线不为空的记录,按照以下公式计算:
滤波残差 = 第一组横跨段-Mpa - 17点中心基线。
7. 将残差保存到新增字段“滤波残差”;中心基线为空时残差也保持为空。
8. 保留全部原始字段和全部记录,不删除原有特征。
9. 输出数据集命名为“01_滑动滤波结果”。
任务运行完成后,输出数据集保留 77701 条记录,并新增 原始行位置、17点中心基线 和 滤波残差 3 个字段。其中,能够形成完整窗口的中心基线共有 77685 条。
查看滑动滤波处理结果
打开 01_滑动滤波结果,查看新增字段及其数据。
查看中心基线和滤波残差
检查滤波残差
滑动滤波的目的不是简单地让压力曲线更平滑,而是尽量分离随机扰动与具有业务意义的压力变化。只有当滤波残差接近白噪声且功率占比较低时,才能说明残差中没有保留明显的时序规律。因此,本步骤使用 Ljung-Box 检验和噪声功率占比检查滤波效果,为后续异常识别和压力趋势建模提供依据。
在「流程」中选择 01_滑动滤波结果,然后在右侧「通用方法」中单击【智能数据处理】。
选择滑动滤波结果并进入智能数据处理
在「智能数据处理」窗口中,将输入数据集设置为 01_滑动滤波结果,将输出数据集命名为 02_滤波检查结果,依次单击【创建】和【确认】。
创建滤波检查任务
任务创建完成后,输入以下处理要求并运行任务。
请检查滑动滤波后的残差是否接近白噪声,并将检验结果写回完整数据集。
1. 使用从0开始编号的“原始行位置”,选择满足以下条件的重采样中心点:
- 原始行位置大于或等于8;
- “原始行位置减8”能够被16整除;
- “17点中心基线”和“滤波残差”均不为空。
2. 按“日期”升序排列中心点,记录有效中心点总数。
3. 仅取前1000个有效中心点的“滤波残差”,执行Ljung-Box白噪声检验。
4. 滞后阶数设置为5,显著性水平设置为0.05,输出Q统计量和p值。
5. p值大于或等于0.05时,判断为“不能拒绝白噪声假设,未发现显著自相关”;否则判断为“拒绝白噪声假设,残差仍存在显著自相关”。
6. 使用全部有效中心点计算“17点中心基线”的总体方差和“滤波残差”的总体方差,方差自由度均使用0。
7. 按照以下公式计算:
噪声功率占比(%) = 残差总体方差 ÷ 中心基线总体方差 × 100。
8. 保留输入数据的全部字段和全部记录。
9. 在全部记录中新增以下字段,并将同一次检验得到的结果写入这些字段:
- 有效中心点总数
- 白噪声检验样本数
- 白噪声检验滞后阶数
- 白噪声Q统计量
- 白噪声p值
- 噪声功率占比(%)
- 白噪声判断结果
10. 输出数据集命名为“02_滤波检查结果”。
任务识别出 4856 个有效中心点,并使用前 1000 个有效中心点的滤波残差执行 Ljung-Box 白噪声检验。
查看白噪声检验处理结果
检验滞后阶数为 5,Q 统计量为 9.984447349562624,p 值为 0.07567712489036911。由于 p 值大于显著性水平 0.05,不能拒绝白噪声假设,未发现显著自相关。噪声功率占比为 3.8595104496443424%。
查看白噪声检验指标
清理目标变量异常值
部分异常记录可能影响模型训练和测试结果。若直接使用这些压力突变点,模型可能把局部异常当作结焦过程中的压力变化规律。为降低这种干扰,本步骤根据滤波残差识别异常值,并使用对应窗口的压力基线修正异常目标值。
在「流程」中选择 02_滤波检查结果,然后在右侧「通用方法」中单击【智能数据处理】。
选择滤波检查结果并进入智能数据处理
在「智能数据处理」窗口中,将输入数据集设置为 02_滤波检查结果,将输出数据集命名为 03_异常清理结果,依次单击【创建】和【确认】。
创建异常清理任务
任务创建完成后,输入以下处理要求并运行任务。
请根据滤波残差识别并清理“第一组横跨段-Mpa”的异常值。
1. 按“日期”升序排列数据。
2. 选择“日期”早于“2022-04-01 00:00:00”且“滤波残差”不为空的记录作为Z-score计算基准。
3. 使用基准记录计算滤波残差均值和总体标准差,标准差自由度使用0。
4. 对全部有效残差按照以下公式计算:
残差Zscore = (滤波残差 - 基准残差均值) ÷ 基准残差标准差。
5. 新增字段“是否异常”:残差Zscore绝对值大于3时标记为“是”,其余记录标记为“否”。
6. 新增字段“清理后第一组横跨段-Mpa”:
- 正常记录使用原始“第一组横跨段-Mpa”;
- 异常记录使用该记录的“17点中心基线”。
7. 基于“清理后第一组横跨段-Mpa”重新计算17点中心平均值,保存到“第一组横跨段最终中心均值”。
8. 最前8条和最后8条记录的最终中心均值保持为空。
9. 保留全部已有字段和全部记录,不删除原有特征。
10. 输出数据集命名为“03_异常清理结果”。
任务使用 2022-04-01 00:00:00 之前的 52594 条有效记录计算 Z-score 基准,共识别出 1304 条异常记录,并新增 残差Z-score、是否异常、清理后第一组横跨段-Mpa 和 第一组横跨段最终中心均值 4 个字段。
查看异常清理处理结果
打开 03_异常清理结果,查看异常标记、清理后的目标变量和重新计算的中心均值。
查看异常清理新增字段
对齐外源变量
根据工艺经验和不同运行参数对横跨段压力的响应规律,进料量、稀释蒸汽、燃料气等工况变化通常不会在同一分钟完全反映到压力上。本步骤按照各变量对应的响应时间进行时滞对齐,使同一条样本中的运行参数与其对应的压力变化保持合理的时间关系。
在「流程」中选择 03_异常清理结果,然后在右侧「通用方法」中单击【智能数据处理】。
选择异常清理结果并进入智能数据处理
在「智能数据处理」窗口中,将输入数据集设置为 03_异常清理结果,将输出数据集命名为 04_时滞对齐结果,依次单击【创建】和【确认】。
创建时滞对齐任务
任务创建完成后,输入以下处理要求并运行任务。
请按照固定时间位置对齐6个外源变量。
数据已按“日期”升序排列,每条记录间隔1分钟。
1. 新增“第一组稀释蒸汽_对齐”,取当前记录之后第6条记录的“第一组稀释蒸汽-kg/h”。
2. 新增“过量空气系数_对齐”,取当前记录之后第1条记录的“过量空气系数”。
3. 新增“第一组进料量_对齐”,取当前记录的“第一组进料量-kg/h”。
4. 新增“第一组稀释比_对齐”,取当前记录的“第一组稀释比”。
5. 新增“底部燃料气_对齐”,取当前记录之后第2条记录的“底部燃料气-kg/h”。
6. 新增“出口温度_对齐”,取当前记录的“出口温度-℃”。
7. 保留全部已有字段和全部记录,不删除原有特征。
8. 输出数据集命名为“04_时滞对齐结果”。
任务保留全部 77701 条记录,并在原有字段基础上新增 6 个对齐后的外源变量。
查看时滞对齐处理结果
打开 04_时滞对齐结果,检查各外源变量是否按照指定位置完成对齐。
查看对齐后的外源变量
生成训练集和测试集
本案例通过预测横跨段压力变化曲线,为分析结焦趋势和后续运行优化提供依据。结合分钟级数据的处理经验和压力变化规律,本步骤按 16 分钟的间隔构造下一时间点预测样本;同时按运行时间先后划分训练集和测试集,使用历史阶段建立模型,并使用后续运行阶段检验模型的预测能力。
在「流程」中选择 04_时滞对齐结果,然后在右侧「通用方法」中单击【智能数据处理】。
选择时滞对齐结果并进入智能数据处理
在「智能数据处理」窗口中,将输入数据集设置为 04_时滞对齐结果,分别创建 05_训练集 和 05_测试集 两个输出数据集,然后单击【确认】。
创建训练测试集生成任务
任务创建完成后,输入以下处理要求,生成用于预测下一时间点横跨段压力的训练集和测试集。
请生成用于预测下一时间点第一组横跨段压强的训练集和测试集。
一、尾部截断与十六分钟中心点筛选
1. 仅保留“日期”小于或等于“2022-04-17 23:58:00”的记录。
2. 选择满足以下条件的记录:
- 原始行位置大于或等于8;
- “原始行位置减8”能够被16整除。
3. 按“日期”升序排列,排除目标字段或六个对齐外源变量存在空值的记录。
二、划分训练集和测试集
1. “日期”早于“2022-04-01 00:00:00”的记录输出到“05_训练集”。
2. “日期”大于或等于“2022-04-01 00:00:00”的记录输出到“05_测试集”。最终输出的是日期
字段如下:
第一组稀释蒸汽_对齐、过量空气系数_对齐、第一组进料量_对齐、第一组稀释比_对齐、底部燃料气_对齐、出口温度_对齐、第一组横跨段-Mpa
任务以当前中心点的 6 个对齐外源变量作为特征,以后一个 16 分钟中心点的 日期 和 第一组横跨段-Mpa 作为预测时间与目标,并删除无法构造下一时间点目标的最后一条记录,共得到 4817 条有效样本。
生成下一时间点预测样本
按照 2022-04-01 00:00:00 划分后,05_训练集 包含 3287 条记录,时间范围为 2022-02-23 11:42:00 至 2022-03-31 23:58:00;05_测试集 包含 1530 条记录,时间范围为 2022-04-01 00:14:00 至 2022-04-17 23:58:00。两个数据集均包含 日期、6 个对齐外源变量和 第一组横跨段-Mpa,共 8 个字段。
查看训练集和测试集
创建时序预测任务
完成滤波、异常清理和时滞对齐后,使用训练集建立从运行参数到下一时间点横跨段压力的映射关系。模型输出的连续压力预测结果可用于观察压力变化趋势,为判断炉管结焦状态提供数据参考。
在「流程」中选择 05_训练集,单击【时序预测】。
选择时序预测任务入口
在「新建时序预测任务」窗口中,将「目标变量」设置为 第一组横跨段-Mpa,将「时间变量」设置为 日期,将「任务名称」设置为 基于05_训练集的时序预测任务,然后单击【确认】。
创建时序预测任务
配置并训练时序模型
为比较不同算法对炉管压力时序规律的拟合能力,本步骤在相同训练数据和时间配置下训练多种模型,并根据验证指标选择误差较低的模型进行部署。
在「基础设置」中,将「时序类型」设置为「单时间序列」,将「时间步长」设置为 16 分钟,将「预测窗口(时间步数)」设置为 1,将「评估跳过时间步数」设置为 0,并保留预测分位数 0.1、0.5 和 0.9。
配置时序预测基本参数
在「外源变量」中,将 第一组稀释蒸汽_对齐、过量空气系数_对齐、第一组进料量_对齐、第一组稀释比_对齐、底部燃料气_对齐 和 出口温度_对齐 设置为历史外源变量。将「数值特征缩放方式」设置为「自动」,将「数值特征缺失值填充方式」设置为「不填充」。
配置历史外源变量
在「算法选择」中,启用 NHITS、TFT、Ridge Regression 和 XGBoost。
选择时序预测算法
单击【训练】,开启「启用 GPU 进行时序预测模型训练」,将「任务名称」设置为 session1。确认训练集为 3287 行后,再次单击【训练】开始训练。
开始训练时序预测模型
训练完成后,NHITS、XGBoost、Ridge 和 TFT 的 MASE 分别为 0.766、0.715、0.418 和 0.784。MASE 越低表示模型在当前验证方式下的预测误差相对越小,因此选择 Ridge 继续查看和部署。
比较模型训练结果
查看并部署模型
在 Ridge 模型卡片中单击【查看详情】。
查看最优模型详情
在「时序预测图」中查看真实值、回测预测值和未来预测值的变化趋势。还可以通过左侧导航查看模型指标、特征重要性和误差诊断等结果。
查看模型预测报告
单击【部署】,将「训练数据集」设置为 05_训练集,将「模型名称」设置为 基于05_训练集的时序预测模型,然后单击【确认】。
部署时序预测模型
使用独立测试集评估模型
独立测试集对应模型未参与训练的后续运行阶段。使用该数据集评估已部署模型,可以检查模型在后续炉况下能否保持对横跨段压力变化的预测能力,避免仅依据训练阶段的结果判断模型效果。
在「流程」中选择已部署的时序预测模型,在右侧「模型预测」中单击【评估】。
选择模型评估入口
在「新建评估」窗口中,将「评估数据集」设置为 05_测试集,并选择已部署的时序预测模型。
设置评估数据集和模型
在【输出数据集】和【指标】中分别单击【设置】,创建用于保存预测结果和评估指标的输出数据集,然后单击【确认】。
确认评估输出数据集
在「评估配置」中,将「预测时间步数」设置为 1,将「评估时间步数」设置为 0,开启「GPU 配置」,并选择 MASE、MAPE、SMAPE、MAE、MAQL、MWQL、MSE、RMSE、MSIS 和 ND 指标。完成配置后,单击【运行】。
配置并运行模型评估
评估任务运行完成后,返回「流程」查看生成的预测数据和评估指标数据。
查看已完成的评估任务
打开 测试集预测数据。该数据集包含 1530 条记录、9 个字段,在测试集原有字段基础上新增 prediction 字段。
查看测试集预测数据
打开 测试集评估指标数据。Ridge 模型在独立测试集上的 MAE 为 0.001154892437501278,RMSE 为 0.0015015748058596118,MAPE 为 0.004321888376295585,SMAPE 为 0.004322744613691443,ND 为 0.0043273647824154955,MASE 为 0.8961940960567171。由于该模型不输出分位数预测,MAQL、MWQL 和 MSIS 未生成数值。
查看测试集评估指标
案例总结
本案例围绕乙烯裂解炉横跨段压力预测,构建了从数据处理到模型评估的完整流程。通过 17 点中心滑动平均提取趋势并计算滤波残差,结合白噪声检验验证滤波效果,再使用 Z-score 清理异常值并按固定时间位置对齐外源变量,最终形成 16 分钟间隔的训练集和独立测试集。
在时序预测任务中,平台对 NHITS、TFT、Ridge Regression 和 XGBoost 进行训练比较,Ridge 获得较低的验证集 MASE。部署后使用 05_测试集 完成独立评估,并输出逐时点预测结果和多项误差指标,为后续观察横跨段压力变化提供可复用的数据处理与建模流程。
