赛题背景
在流程工业中,生产装置将不同原料经过物理或化学反应加工成高附加值产物。在化工领域,这个转变一般是由各类反应器负责完成的。反应装置通过复杂的一系列化学反应,把进料转化为一定浓度的目标产物。生产产物的浓度是生产产物的关键质量指标之一,反应器的温度是生产过程的关键安全指标之一。通过预测生产产物的浓度和反应器的温度,产线可以提前调整生产装置中的操作变量,达到生产过程更稳定更安全保质保量的目的。挑战赛需要参赛者利用生产装置的历史数据训练一个可预测反应器关键生产变量未来趋势的模型。该模型将用于构建模型预测控制器,控制器通过预测关键指标的未来趋势,自动调整操作变量,实现产线的自动化智能控制。由于预测模型需应用于实际生产控制,对模型的可解释性、泛化性、计算效率和预测方向的准确性等方面要求较高,并需适应多种工况,并非任意结构的预测模型适合用于构建模型控制器。 因此本次赛题希望研究一些典型的线性和非线性动态模型,如FIR、State-Space、ARX、ARMAX、Hammerstein-Wiener等,探寻具备可解释性、且泛化性强的建模算法,为实现精确的过程控制与优化提供基础。
赛题描述
在化工生产过程中,反应器是决定化工产品品质、效率和过程生产能力的关键设备。化学反应过程在化工生产过程中重点生产环节,且由于化学反应过程高度复杂,其动态响应具有显著的非线性特性,对关键生产指标的准确预测和有效控制都提出了挑战。
对于下图所示的生产装置而言,进料为某成分A,在反应器内发生反应生成产物B。进料浓度为C_{A,f}CA,f,物料温度为T_{f}Tf。进料进入反应器内,通过一系列的反应,形成出料,其中出料的温度为TT,出料中剩余成分A的浓度为C_{A}CA。反应器的温度可通过控温装置进行调整,控温装置的温度设定值为T_{c}Tc,如果反应器温度过高,有可能触发安全事故,需要提前调整控温装置的温度,使生产保持在合理的温度区间内。如果反应器温度过低,可能导致出料浓度不达标,也需要提前调整控温装置的温度,避免产物不达标造成的经济效益的损失。
本次赛题为预测算法赛题,本次大赛采用的数据集为7天的反应生产过程数据(约为2万条),参赛选手需要基于历史生产数据,通过预测算法,预测反应器未来的关键生产变量的浓度和反应器的温度。
由于本赛题中涉及的预测模型最终用于构建模型预测控制器,以提升对关键指标的控制效果,因此限定使用如下的预测模型结构:
注:出于可解释性的模型,非线性转化或回归因子的类型仅限于polynomial、piecewise linear、dead-zone、saturation、exp、wavelet、sigmoid、Gaussian process regression这8种形式及限定非线性结构间的组合
数据及提交说明
数据集包含进料浓度C_{A,f}CA,f、进料温度T_{f}Tf, 冷却水温度T_{C}TC, 反应釜浓度C_{A}CA和反应釜温度T等信息。数据集分为训练集和验证集,文件格式为CSV UTF-8,其中训练集包含约2万条的生产数据,每条数据的采样时间为30s一次。预测赛题的比赛任务为预测出料浓度C_{A}CA和反应器温度TT。参赛选手需将出料浓度C_{A}CA和反应器温度TT的预测结果以CSV的形式上传到天池,CSV命名规定为"predict.csv"。CSV中需要包含两个字段cv1cv1和cv2cv2各5001条,其中cv1cv1指代反应器温度TT, cv2cv2指代反应器浓度C_{A}CA。若文件格式不匹配、文件名称不匹配、字段命名不匹配或数据条数不匹配可能导致无法正确计算评价指标。
赛题数据
数据集包含进料浓度C_{A,f}(dv1)CA,f(dv1),进料温度T_{f}(dv2)Tf(dv2), 冷却水温度T_{C}(mv1)TC(mv1), 反应釜温度T(cv1)T(cv1) 和反应釜浓度C_{A}(cv2)CA(cv2) 共五个字段,其中进料浓度C_{A,f}CA,f和进料温度T_{f}Tf为系统的扰动变量,冷却水温度T_{C}TC为反应釜的操作变量,反应釜浓度C_{A}CA和反应釜温度TT为被控变量,同时也是预测赛题的预测目标。本赛的反应器浓度有效范围为0及以上,由于存在测量仪表噪声,可能存在浓度偶尔略小于0的情况。反应器温度的有效范围为200~600 ^\circ C∘C。数据集包含多种生产的工况,包括稳定生产,浓度切换等。
本次赛题数据集如下:
train.csv: 参赛选手用于模型训练,约2万条,每条数据间隔30s
predict.csv: 评价数据集,共5001条,包含进料浓度C_{A,f}CA,f,进料温度T_{f}Tf 冷却水温度T_{C}TC的全部数据,C_{A}CA和TT的初始点和部分离散点的数据(用于参赛选手校正模型),每条数据间隔30s。注: dv1(0)=1,dv2(0)=350,mv1(0)=300,cv1(0)=324,cv2(0)= 0.877dv1(0)=1,dv2(0)=350,mv1(0)=300,cv1(0)=324,cv2(0)=0.877是初始稳态值,即此前系统均保持在这个状态。
answer.csv: 评价数据集,共5001条,每条数据间隔30s,不会发布给选手,仅用于模型评估
sample_submission.csv: 选手结果上传文件的示例文件,其格式与前面数据一致,选手需按照该文件格式准备结果并上传
文件示例
train和predict文件均包含的如下字段的数据,以“,”分隔数据,其数据格式示例如下:
time,dv1,dv2,mv1,cv1,cv2
2022/11/17 0:00:00,0.97 ,351.13 ,305.50 ,324.85 ,0.91
2022/11/17 0:00:30,1.05 ,349.27 ,310.28 ,325.30 ,0.87
2022/11/17 0:01:00,0.96 ,350.02 ,315.82 ,324.13 ,0.86
最终提交结果文件需要同sample_submission.csv保持一致
评价标准
预测评价指标R^2R2:决定系数, 表示模型的预测值\hat y_{i}y^i可以解释的真实值y_{i}yi的比例。R^2R2越接近于1, 模型对真实值的解释性越高。
其中nn为预测点个数,y_{i}yi为真实值,\bar y_{i}yˉi为真实值的均值,\hat y_{i}y^i为预测值。 最终的成绩为两个cv 预测结果平均后的R^2R2。
评测方式
评测数据为5001条反应器温度数据和5001条出料浓度数据,参赛者需要在天池上传:
1)预测数据集(数据集需要以规定的predict.csv的方式命名);
2)打榜结束后续提交预测模型的python源代码(用于验证是否生成所提交的数据集,不支持直接调用现有产品的工具包,比如MATLAB的sysID toolbox);
完成课题后,参赛者需要以csv的形式上传模型预测数据,并在天池提交界面确认提交,然后在比赛平台上进行评估得到对应的得分。在使用赛题给定的模型结构的前提下,分数越接近1越好。
代码规范
- 请确保实验结果可以由提交的代码复现,所使用到的源码都要包含在提交的文件中
- 请使用Python,推荐 3.6的版本,需要安装的Python package,都需要在README文件中写明,以确保运行环境可复现
- 请提供
main.py
或者main.ipynb
,确保可以通过执行该文件来运行所有代码,得到最终结果,并将结果保存到submit文件夹 - 不可使用外部预训练模型和外部数据训练模型
- 生成结果的代码需要基于赛题给定的模型结构
- 读入文件的路径尽量使用相对路径,比如
../data/XX
赛事声明
- 为了确保整个大赛顺利、公正地进行,以及保证参赛选手的合法权益,参赛选手报名时应阅读和确认大赛官网上的参赛协议,自觉遵守协议规定。
- 如果发现有作弊行为,则程序无效,且取消参赛资格。
- 在大赛举办过程中,竞赛规程可能会有少量的变更和调整,所有内容均以大赛官网为准。
- 本大赛规程的最终解释权归阿里云所有。
cstr2023_baseline: https://tianchi.aliyun.com/competition/entrance/532046/introduction