现代流程工业涉及到的生产环节越来越多,复杂程度越来越高,而且中间歇性生产工艺占比较大,例如,医药中间体生产、钢铁冶炼、玻璃烧制等,涉及到化工、钢铁、冶金、医药等行业,主要是针对间歇性生产过程中的工艺改进,通过利用数据挖掘、数据分析、质量预测等手段,提高产品的品质与合格率。
一、技术背景
对于间歇性生产过程的质量预测,在生产中具有很高的附加值和重要性。现在,许多传感器已经安装在生产设备上,可以在生产阶段测量到有用的信息并记录下来,通过机器学习、深度学习等数据挖掘手段探索更多的有用信息,但是此类数据驱动算法对流程行业的生产过程中在线应用的实时性有一定的要求,特别是对于快速变化的过程或者比较敏感的时段中关键性数据与产品质量具有很强的关联性的时候,效果收效甚微,若是参与在线预测,甚至可能直接影响到产品的品质与合格率,此类算法在此类场景下的适用性还有待商讨。
流程行业的数据一般具有高维度、非线性、强相关性等特点,也限制了此类算法的具体应用。
常规类的数据挖掘方法在处理流程行业的质量数据时往往具有一定的滞后性,并不能及时有效的反映生产状况,而质量数据的滞后一旦运用到生产中,极有可能导致产品质量的下滑、产品不合格,甚至造成生产故障而导致事故的发生。
在现实生产中若是现场出现缓慢的不易察觉的故障时,现有的算法的灵敏度很难达到要求,会导致由于微小故障信息淹没在噪声中,导致高阶统计量中的样本变量无法显示出相应的高阶信息量。
二、技术方案
在复杂工业过程中,如间歇发酵过程,如出现缓慢的不易察觉的故障时,以往的算法会出现精确度下降、稳定性变差等,若是坚持使用将会出现许多误报和漏报现象。由于微小的变化信息往往被噪声淹没,包含在高阶统计量中,而传统的方法只能提取到二阶统计量信息,并不能很好的表达初始样本变量的高阶信息量。
通过分析生产工艺流程找出各个变量之间的逻辑关系,再分析历史数据,找到其质量控制的相关性,构建运行模型,得出实时预测数据可以很好的提高流程行业中间歇性生产过程中的质量控制标准。
1、核熵偏最小二乘法(KEPLS)的计算过程为:
第一步,计算过程变量在高维空间的得分向量;
第二步,计算质量变量的负载矩阵;
第三步,计算质量变量的得分矩阵;
第四步,迭代计算第二步~第四步,知道得分矩阵收敛;
第五步,计算核矩阵的特征与PLS中广义特征的残差信息;
2、基于IFS-KEPLS的过程监测及质量预测的步骤为:
第一步,用IFS进行特征采样,得到特征基向量集;
第二步,利用特征基向量集计算数据的核矩阵;
第三步,利用特征基向量集计算得到KEPLS;
第四步,结合IFS与KEPLS进行质量预测;
3、基于SV-KCD与KEPLS相结合的过程质量控制步骤:
第一步,对沿批次展开标准化后的数据,计算每一列的均值向量,再沿着变量方向展开;
第二步,计算质量变量的预测值;
第三步,在线监测质量的预测值与标准预测值的差异;
第四步,计算展开变量矩阵的变量值;
第五步,变量矩阵替换,得到新变量矩阵;
第六步,计算新变量矩阵的预测值;
第七步,若未达到约束条件,从第四步开始循环;
第八步,绘制核空间贡献图;
三、实施方式
一、核熵PLS(KEPLS)模型
KEPLS模型通过核映射将数据从低维输入空间投影到高维特征空间,将数据的非线性转化为线性,然后在高维特征空间内根据熵的大小选取特征,实现数据的降维。
以信息熵作为衡量系统不确定性量度。根据实验采用Renyi熵作为成分分析的方法效果最好,定义如下:
-数据D的概率密度函数;
用Parzen窗密度对其进行估计为:
function [t, u, W, P] = KEPLS(X, Y, sigma, tol)
% 输入:X-过程变量矩阵(n×m),Y-质量变量矩阵(n×p),sigma-高斯核带宽,tol-收敛阈值
% 输出:t-X得分矩阵,u-Y得分矩阵,W-权重矩阵,P-负载矩阵
n = size(X, 1);
% 1. 计算高斯核矩阵K
K = zeros(n, n);
for i = 1:n
for j = 1:n
K(i,j) = exp(-norm(X(i,:)-X(j,:))^2/(2*sigma^2));
end
end
% 2. 核矩阵中心化
one = ones(n, n)/n;
K_cent = K - one*K - K*one + one*K*one;
% 3. 特征分解与Renyi熵选择
[E, lambda] = eig(K_cent); % E-特征向量阵,lambda-特征值对角阵
lambda = diag(lambda);
[lambda_sorted, idx] = sort(lambda, 'descend');
E_sorted = E(:, idx);
% 计算Renyi熵贡献,选择最大贡献特征值对应的特征向量(文档推荐Renyi熵)
renyi_contrib = lambda_sorted / sum(lambda_sorted);
[~, max_idx] = max(renyi_contrib);
t = E_sorted(:, max_idx); % X得分向量,单位化
t = t / norm(t);
% 4. 迭代计算负载矩阵与Y得分矩阵(直到收敛)
W = []; P = [];
u_old = zeros(n, 1);
while true
% 质量变量负载矩阵 W
W = X' * t / (t' * t);
W = W / norm(W);
% 质量变量得分矩阵 u
u = Y * W / (W' * W);
u = u / norm(u);
% 收敛判断
if norm(u - u_old) < tol
break;
end
u_old = u;
% 更新X得分向量 t
t = X * W / (W' * W);
t = t / norm(t);
end
% 5. 计算残差信息(反映X与Y的关联残差)
residual = Y - t * (t' * Y);
end
二、基于IFS-KEPLS的过程监测及质量预测
实验中KEPLS算法在运行时,当数据量过大会面临维数灾难的问题,所以设计IFS与KEPLS组合的新算法,基于IFS-KEPLS的过程监测及质量预测的算法实现步骤:
① 对数据进行预处理得到特征集X;
② 提取X的特征矩阵S;
③ 计算核矩阵;
④ 在高维特征空间中对核矩阵进行中心化处理:
⑤ 用MPLS计算回归系数矩阵:
确定过程数据以及SPE的控制限;
function [Y_pred, is_fault] = IFS_KEPLS_online(X_test, model, tol)
% 输入:X_test-在线过程变量(1×m),model-离线模型,tol-收敛阈值
% 输出:Y_pred-质量预测值,is_fault-故障标志(1=故障,0=正常)
% 步骤1:数据标准化
X_norm = (X_test - model.mu_X) ./ model.sigma_X;
% 步骤2:提取与离线模型一致的特征
var_X = var(model.S, 0, 1);
[~, idx] = sort(var_X, 'descend');
X_test_S = X_norm(:, idx(1:size(model.S, 2)));
% 步骤3:计算核矩阵并中心化
n_train = size(model.S, 1);
K_test = zeros(1, n_train);
for j = 1:n_train
K_test(j) = exp(-norm(X_test_S - model.S(j,:))^2/(2*model.sigma^2));
end
one = ones(1, n_train)/n_train;
K_test_cent = K_test - one*model.K_cent - K_test*ones(n_train, n_train)/n_train + one*model.K_cent*ones(n_train, n_train)/n_train;
% 步骤4:质量变量估计与恢复
Y_norm_pred = K_test_cent * model.beta;
Y_pred = Y_norm_pred * model.sigma_Y + model.mu_Y; % 反标准化
% 步骤5:监控T2和SPE
T2 = X_test_S * model.W * (model.W' * X_test_S');
SPE = sum((Y_norm_pred - X_test_S * model.beta).^2);
is_fault = (T2 > model.T2_limit) || (SPE > model.SPE_limit);
end