在炼油过程中,一项关键的优化技术是利用低频采样对质量变量进行连续在线控制。这需要基于在线过程条件建立质量变量的经验预测模型。该模型随后被用作推断变量,并可用于连续控制算法。
一些模型即使具有很强的拟合统计量,在实际应用中也可能无法准确预测质量变量,这其中存在诸多陷阱。许多模型失效的原因并非工程师所能控制,例如异常的工艺条件和输入信号故障。虽然可以构建预测模型来最大限度地减少工艺外部因素的影响,但这往往会降低模型的准确性。因此,工程师面临的挑战是如何构建兼顾准确性和可靠性的预测模型。
本文探讨了使用 JMP 构建适用于在线过程控制的预测模型的模型开发过程中的几个步骤。通过使用自定义插件,可以将原始过程数据聚合为一种能够过滤过程变异性的格式。聚合后的数据会使用诸如“分布”和“异常值筛选”等工具进行筛选,以检查异常值和运行范围。模型输入会通过列公式进行转换,以进一步降低过程变异性。最后,使用“拟合模型”中的“广义回归”构建模型,以比较回归算法并最小化输入,从而提高可靠性。最终得到的模型能够提供足够的精度,以持续优化过程并满足质量约束,同时保持对过程/仪表扰动的鲁棒性。
大家好,我叫安德鲁·韦弗,是埃克森美孚公司的一名控制应用工程师。今天我们将探讨如何使用JMP构建用于在线优化控制的预测模型。在我们的化工和炼油装置中,我们使用先进的过程控制器对装置进行实时控制,以确保工艺装置符合质量标准,并通过减少产品损耗来优化产品性能。
这些先进的控制器依赖于实时测量,以便根据传感器数据反馈对过程做出瞬时响应。构建这些控制模型时面临的一个关键挑战是,许多质量变量实际上是通过实验室取样获得的,而不是通过连续测量获得的。例如,这里展示的实验室值每两小时采集一次,但正如底部图表所示,在采集样本之前可能会发生过程偏移。因此,我们的控制器需要信息来感知到这种过程偏移的发生。
解决此问题的方法是构建一个预测推理模型,该模型利用过程中的其他传感器数据,为在线控制器提供质量变量何时发生过程变化的信息。这样,我们的模型就可以实时调整,而无需等待实验室结果来观察控制措施的效果。
构建此类模型有时可能颇具挑战性,需要巧妙地平衡工程领域知识和统计建模技术。今天,我们将使用 JMP 逐步讲解如何构建这些模型,以及在构建在线过程控制模型时会遇到的一些独特挑战。今天,我想先介绍一个简化的示例,说明在在线过程控制中可能会用到推断模型。
这是一个蒸馏塔,用于将丙烷和丁烷的混合气流分离成两种组分。塔顶主要为上升的丙烷气流,塔底主要为冷凝的丁烷气流。我们想要测量的质量变量是塔顶丙烷的浓度,该浓度通过实验室取样获得。
在开始任何建模之前,了解该过程的一些物理特性至关重要,因为这些特性会影响我们所做的建模选择。例如,塔内温度对分离丁烷和丙烷混合物的蒸馏效果至关重要。随着塔内温度升高,我们预期更多较重的组分(在本例中为丁烷)会从塔内沸腾出来,从而污染我们正在测量的丙烷流。
这意味着塔顶馏出液中丙烷的浓度将会降低。这将有助于我们向模型修正预测模型,确保模型中观察到的任何温度效应都与塔顶馏出液中丙烷的浓度呈负相关。此外,我们还掌握压力数据,压力也会通过改变两种组分的沸点来影响蒸馏过程。在开始建模时,这一点也需要考虑。
最后一点是关于装置的流量测量。我们有多个流量测量值,稍后会看到,流量与丙烷浓度和塔顶馏出物浓度密切相关。特别是进料流量、回流流量和塔顶馏出物流量,分别对应流量一、二和三。然而,如果不对这些流量测量值进行任何修改就直接将其用于模型,将会带来一些后续问题,因为原始流量没有考虑系统中的任何累积或系统动态变化。为了能够使用这些数据,我们需要将它们从目前的扩展变量修改为强度变量。稍后我们将探讨如何实现这一点。
在系统构建之初就进行探索,其关键在于理解每个输入数据的物理意义,然后再开始模型构建过程。这样,我们就能清晰地了解模型的最终形态。这确保了我们的模型能够反映真实的流程行为,而不仅仅是数据中呈现的统计相关性。最终,这些洞察将指导我们如何提取输入数据、将哪些输入数据导入JMP、如何筛选这些输入数据、转换哪些变量,以及最终模型中包含哪些内容。
让我们快速浏览一下完整的模型构建工作流程,了解构建模型所需的步骤,然后我们将进入 JMP,更详细地了解其中的一些步骤。第一步是选择一个推断候选变量。这通常是一个质量变量,它已经过定期实验室采样,拥有大量数据,并且已经定义了我们需要控制的质量限值。在我们的例子中,这将是丙烷浓度,也就是我们在上一张幻灯片中提到的实验室顶棚温度。
接下来,是时候开始对该过程进行工程分析了。我们在上一张幻灯片中已经开始讨论这个问题,但在分析自身数据时,还有一些其他因素需要考虑。首先,评估任何未测量的干扰因素,例如进料质量变化及其对最终模型的影响。此外,您还需要考虑模型预期在哪些运行条件下运行。如果您在各种不同的运行条件下运行,则模型需要包含装置运行在所有这些不同条件下的数据才能有效工作。此时,您需要考虑是否有足够的数据开始建模,或者是否需要进行专门的工厂测试来确定实际需要收集哪些数据。
接下来,您可以进行输入变量选择,就像我们在上一张幻灯片中所做的那样,我们逐一分析了模型的每个潜在输入,并开始探讨它们对推断变量的物理影响。模型选定后,就可以开始收集数据了。对于我们的工艺工程而言,数据通常来自过程历史数据库,该数据库会为我们存储数据。这样我们就能获得工艺流程中每个传感器的逐分钟数据。对于适用范围广泛的模型,最好收集 6 到 18 个月的实时数据,具体时长取决于实验室的采样频率。这可以确保您拥有足够的数据,从而建立一个适用于多种不同运行条件的模型。
接下来,我们需要进行数据清洗和预处理。我们将收集所有传感器的每分钟数据。因此,每个实验室样本都会产生大量数据。我们需要将这些数据格式化为清晰的XY坐标对,稍后会使用插件来完成这项工作。此外,您还需要开始进行异常值筛选,以标记您提取的可疑数据。
需要注意的是,不应仅使用统计检验,因为异常值应该是过程中需要剔除的物理影响因素。例如,当设备未运行、出现严重故障或传感器数据存在错误时,应剔除相关数据。数据筛选完成后,我们就可以开始构建模型了。对于刚开始构建模型的人来说,一个常见的误区是将所有收集到的输入数据直接输入最小二乘算法来生成模型。但这种方法行不通,原因有以下几点。
首先,我们要确保模型中每个输入变量都具有合理的物理意义。当我们对多个变量运行回归算法时,很可能会出现一些统计上看似良好或拟合度很高,但实际上并不存在的结果。工程师需要仔细检查模型中每个输入变量的符号和大小,以确保其符合工程预期。
第二个原因,也是更微妙的原因,是当我们将这些模型投入在线控制时,必须确保这些模型的稳健性和可靠性。模型中的每个输入都是一个单点故障,一旦连接到该输入的仪器发生故障,就会造成严重后果。因此,我们会尽量减少输入的数量,以降低仪器故障的风险。模型构建完成后,就需要开始测试。首先进行离线测试,将预测结果与我们最新的实验室结果进行比较;然后进行在线测试,并将其集成到在线控制器中。这是一个循环往复的过程,因为你会发现,有些模型预测效果很好,但在闭环控制中却会失效。工程师需要反复构建新模型,直到找到一个既能作为预测器又能与控制系统兼容的模型。
现在我们已经完成了构建推断模型的步骤,接下来打开 JMP,更详细地了解一下其中的一些步骤。第一个数据表展示了原始数据池的构成。您将获得每个传感器和实验室测量的每分钟数据,这些数据涵盖了八个月的时间跨度。通过打开实验室变量的时间序列图,我们可以看到实验室测量的时间间隔并不频繁,似乎每隔几天才进行一次,并且在某些时期,我们会在短时间内采集多个实验室样本。
如前所述,我们当前的数据格式并不利于构建推断模型,因为我们需要清晰的XY关系来表示每个实验室结果和输入数据。我们将使用一个自定义的内置插件来帮助我们构建一个简化的数据表,从而建立这种XY关系。我们将通过选择实验室样本和日期来聚合数据,然后需要考虑我们希望对数据使用哪种聚合区间。
此插件将分析我们的数据表。它会检测实验室值何时发生变化,然后计算实验室变量变化前后各输入值的平均值。此过程可以全局自定义,也可以针对每个单独的输入值进行自定义。此外,此平均值计算可以采用回溯法,即从实验室样本采集时间点开始,向前回溯 X 分钟;也可以采用中心法,即在采集实验室样本时,选取采集样本前后一段时间的数据。
最终,这取决于您对实验室样本时间记录的信任程度以及您的流程变异性。在我们的示例中,我们将所有变量的全局间隔设置为 60 分钟。这将产生良好的汇总结果。运行此过程需要几分钟时间。因此,我们将直接跳到结果,即此数据表。您可以看到,每个实验室结果都有单独的一行,并且包含所有输入数据的清晰 X 值。
现在我们可以……利用这些数据,我们可以开始进行筛选、预处理,最终进行建模。首先,我们将查看数据分布,看看是否存在任何需要移除的异常值。请记住,我们不仅要从统计检验中移除异常值,还要确保移除的每个数据点都具有其背后过程的物理意义。例如,观察左侧的实验室数据,我们在分布的远端看到了一些尾部效应,但现在判断这些是真实数据点还为时过早,或者它们仅仅是我们正常处理环境中的低点。
然而,如果我们仔细观察右侧的流量图,可以看到分布图中存在一长串低进料流量,甚至还有一些负流量。由于这是进入装置的进料流量,因此准确记录装置正常运行时的进料速率至关重要。我们需要定义一个阈值,用于衡量该装置正常运行的进料流量。在本例中,我们将该阈值设置为 10,低于 10 则表示装置运行异常或已停机。我们将选择所有小于 10 的数据,并将其从数据集中排除。
浏览其余变量,唯一异常的是流量三,即回流到塔内的流量。该流量的流入量非常高,这很可能表明工艺流程出现了严重异常,因为它与我们其他操作范围内的流量完全不匹配。因此,我们也将隐藏并排除这组数据。
现在我们已经筛选了数据,可以开始研究一些关系并建立一些模型了……我们将开始建立输入数据与最终模型之间的关系。这些XY图表按最佳拟合度排序,我们可以看到,位于蒸馏塔上部的温度4和温度2与我们的丙烷实验室数据拟合度最高。
这符合我们的工程预期,因为我们知道温度对蒸馏过程有关键影响。同样,我们也观察到流量(包括产品流量和塔顶压力)与蒸馏过程之间存在密切关系。与其使用 JMP,不如尝试推断温度和压力与蒸馏过程之间的关系。我们可以将一些已知的汽液平衡概念融入模型中,方法是将压力和温度合并为一个计算变量,以便更好地用于模型构建。
我们可以使用另一个自定义内置插件来构建所谓的压力补偿温度,它会根据压力效应对温度进行修正……基于某个参考压力。我们将使用这个温度值作为最终模型,而不是直接使用原始温度值。同样,如前所述,我们不能单独使用流量,因为它是一个广延变量,必须先将其转换为强度变量。我们将通过创建一个新列并创建一个产品与进料比来实现这一点。这两个流量的比率将把它们从广延变量转换为强度变量,从而更容易对数据中的质量变化进行建模。因此,这将是我们的流量二除以流量一。
在开始建模之前,最后一步是构建一个验证列,我们会快速完成,只需将分层列覆盖即可。现在我们可以正式开始建模了。我要展示的第一种方法是,如果我们对模型的输入不太清楚,可以采用一种叫做“大杂烩”的方法,将实验室数据作为 Y 值,添加验证列,并将所有行输入作为 X 值,然后在通用回归平台上运行。
我们将采用最佳子集估计方法,在遍历每种变量组合的过程中,找出最佳变量子集。正如您所见,这里存在一个平台期,在此之后,我们可以减少变量的数量而不会对模型精度产生显著影响。如前所述,我们希望尽可能减少最终模型中的变量数量,以降低在仪器故障时对传感器的依赖性。
此外,我们注意到这里选择了温度(第二个)和压力(第一个)作为输入,之前我们已经看到它们之间存在很强的相关性。我们有充分的工程理由说明为什么应该将它们纳入模型。如果你的流程不太明确,这算是一个不错的起点。但就我们而言,基于工程分析,我们已经确切地知道哪些输入应该放入模型中。因此,我们将再次输入实验室数据,这次的 X 值将再次使用验证列计算出的变量。
这次我们直接运行标准的最小二乘算法。这将得到我们控制器中最终使用的模型。你会注意到R平方值略有不足。但这对于大型过程系统的模型运行来说是正常的,因为我们试图提取的仪器动态特性变化很大。有时很难获得非常高精度的模型。记住,我们应该避免为了进一步提高精度而向模型中添加更多输入,以免模型容易受到仪器故障的影响。
最后,我们需要检查在线控制的输入变量是否彼此独立,以及它们之间是否存在共线性。我们可以通过查看 VIF 列来验证这一点,看看这些输入变量的 VIF 值是多少。如果 VIF 值过高,几乎可以肯定该模型在应用于控制算法时会失效。但由于这两个输入变量的 VIF 值处于足够低的阈值,我们可以确信该模型能够合理地预测这一质量变量,因此我们可以开始在控制软件中对其进行建模。
现在我们回到演示环节。我们现在有了一个推断模型,可以开始将其用于在线控制。我们刚刚开发的这个模型将作为高级控制器的输入。该输入将在控制器操作设备时向其提供反馈,并实时显示控制器如何影响质量变量。
同样,这种实时反馈使我们能够优化产品质量,确保产品质量始终在我们的容差范围内。正如您可能预料到的,这是一个循环过程:首先是建立一个运行良好的模型,然后随着工艺条件的变化或设备的老化,模型最终会失效,需要从头开始建立新模型。
总之,这些推断模型弥合了我们连续控制软件与实验室样本采集频率不高之间的差距。这凸显了构建统计模型时领域知识的重要性。正如您所记得的,在打开 JMP 之前,我们花费了大量时间进行工程分析,以确保我们完全了解模型上线后的运行方式。即使在化学工程和工艺工程之外,这一原则也同样适用。工程分析应该指导模型,而不是反过来。借助这些技术,无论您身处哪个领域,都可以利用有限的数据将其转化为可操作的洞见。非常感谢您的观看。