跳转到正文

PySINDy

Brian de Silva; Kathleen Champion; Jacob Stevens-Haas; Markus Quade; Alan Kaptanoglu

PySINDy 是一个 Python 软件包,可使用稀疏系统辨识从测量数据推断动力学方程,并可选用优化方法进行受约束回归和贝叶斯回归。

条目更新 ·

概览

PySINDy 提供了一个用于系统辨识的 Python 工作流程:从测量数据估计控制动力学,而不是从预先完整指定的方程模型出发。其重点是非线性动力学系统稀疏辨识(SINDy),同时也涵盖相关研究中的方法。生成的方程模型旨在支持解释、未来状态预测、控制输入分析以及解析研究。它是一个建模软件包,并非预训练预测器,也不是完整的过程控制应用程序。

项目 README 通过两个状态变量的按时间索引观测数据展示了核心输入/输出模式。测量值排列在一个数组中,每列对应一个变量,然后将该数组与时间值和变量名称一同传入 SINDy 模型。拟合后的模型可以打印发现的微分方程。该示例使用解析生成的指数轨迹,并展示了对其控制方程的恢复;它并不能证明该方法在实验化学测量、含噪工业信号或其他系统上的性能。

可选依赖项可用于其他优化方法:通过 cvxpy extra 使用 SR3 及其子类;使用 MIOSR 进行 L0 约束分支定界优化;使用 SBR 进行带后验输出的贝叶斯回归。项目还链接了教程、对象模型参考资料、贡献指南和学术引用指南。软件包元数据声明 Python >=3.11,但该声明并不能证明兼容性经过独立测试。对于化学或工程应用,在将推断出的模型用于预测或控制之前,应先使用有代表性的测量数据评估其适用性。

主要功能

  • 使用 SINDy 和相关系统辨识方法,从测量数据拟合动力学方程模型。
  • 在文档所述的拟合工作流程中,接受状态观测数组、时间值和特征名称。
  • 通过模型的 print 方法打印拟合得到的控制方程。
  • 通过 cvxpy extra 提供对 SR3 及其子类的可选支持。
  • 提供可选的 MIOSR 优化器,用于 L0 约束分支定界优化。
  • 提供可选的 SBR 贝叶斯回归优化器,并输出后验结果。

使用场景

  • 预期评估用途:从测得的浓度或其他化学过程状态轨迹中推断候选动力学方程,然后将其与留出的观测数据进行比较。
  • 预期评估用途:在将推断出的方程模型集成到控制工作流程之前,评估其是否适用于过程控制分析。
  • 预期评估用途:研究由测量数据推导出的方程模型能否作为数字孪生的组成部分,而不是将 PySINDy 当作完整的数字孪生平台。
  • 将 README 中的合成双变量示例作为拟合和检查发现方程的入门练习。

使用方式

  1. 从官方 README开始,了解 SINDy 工作流程及其合成数据示例。明确拟议研究将提供哪些测量状态变量和时间值。
  2. 在规划安装前查看软件包元数据。其中声明 Python >=3.11,并列出必需和可选依赖项;README 介绍了 pip 和 conda 安装方式。
  3. 按照文档中链接的入门资料进行操作。以 README 中每列对应一个变量的观测数组作为输入模式的起点,并在拟合时提供时间值和描述性特征名称。
  4. 使用文档所述的 print 方法检查拟合方程。选择组件或考虑使用 cvxpy、miosr 或 sbr extras 之前,请查阅对象模型参考资料。
  5. 对于预期的科学评估,在依赖预测结果或控制决策之前,先将推断出的动力学与留出的测量数据进行比较。问题可通过问题跟踪器提出;引用建议请参阅学术用途指南。

相关资源

do-mpc

开源工具

do-mpc 是一个 Python 工具箱,用于非线性和鲁棒模型预测控制、移动时域估计及仿真,并支持微分代数模型和不确定性。

开源Python

过程控制 · 数字孪生

GEKKO

开源工具

GEKKO 是一个用于微分代数系统的 Python 建模与优化工具包,支持过程模拟、参数估计、混合整数优化和非线性预测控制。

开源Python

工艺优化 · 过程控制

SysIdentPy

开源工具

SysIdentPy 是一个 Python 工具包,用于通过 NARMAX 系列模型识别非线性动态系统,涵盖结构选择、参数估计、仿真和预测。

开源Python

过程控制 · 预测性维护

相关指南

工作流

评估化学工程中的 AI 工作流

规划评估方案,将过程建模、反应优化和控制区分开来。在考虑用于实际运行之前,先定义输入、运行限制、考虑时间因素的验证方式和审批关卡。