概览
GEKKO 提供 Python 接口,用于访问 APMonitor 优化套件,以进行基于方程和数据驱动的建模。其文档重点涵盖时间序列和微分代数方程系统,应用场景包括模拟、估计和过程优化。它是建模工具包,而非预训练预测模型:用户需为自己的问题定义数学关系和目标。
模型由常量、参数、变量、中间表达式、方程和目标构成。符号模型表示一个数据点或时间实例,而所选求解模式会将其扩展到多个观测值或一个时间范围。APMonitor 后端会编译模型、分析其稀疏结构,并向优化求解器提供导数。对于微分代数系统,正交配置法会将动态问题转换为代数方程。求解结果会写入 results.csv,并加载回 GEKKO 的 Python 变量。
文档所述工作流程包括稳态模拟、参数更新、实时优化、移动时域估计和非线性控制。动态模拟、估计和优化可采用同时或顺序求解方法。GEKKO 还支持线性、二次、非线性和混合整数规划,使离散决策与连续动态能够在所述问题类别中结合使用。
执行可以使用远程服务器(默认方式),也可以通过 remote=False 选项使用本地 CPU。README 指出软件包中包含适用于若干平台的可执行文件,但这些摘录无法证明其兼容性已经过测试,也无法证明其相对性能。模型可能无法收敛;APMonitor 提供不可行性报告和诊断设置,以帮助排查初始化问题和不一致方程。
主要功能
- 使用常量、参数、变量、中间表达式、方程以及最大化或最小化目标构建符号模型。
- 支持线性、二次、非线性和混合整数优化,以及微分代数方程和带互补约束的问题。
- 提供稳态和动态模式,用于模拟、参数估计、实时优化和非线性预测控制。
- 为动态模拟、估计和优化提供同时与顺序求解方法。
- 后端模型编译、通过自动微分生成稀疏导数,以及用于微分代数系统的正交配置法。
- 支持远程或本地执行;求解结果会返回 Python 变量,求解失败时可查看不可行性报告。
使用场景
- 拟议评估:建立包含微分方程和代数方程的过程模型,然后将模拟轨迹与有代表性的过程测量值进行比较。
- 拟议评估:使用测量时间序列和用户定义的模型,拟合不确定的过程参数,或评估移动时域估计。
- 拟议评估:在考虑部署之前,使用过程约束和明确的运行目标,对非线性预测控制进行原型验证。
- 拟议评估:在混合整数优化问题中表示离散运行选项和连续过程变量。
使用方式
- 从官方文档和建模示例入手。选择符合预期问题的模拟、估计或优化工作流程。
- 查阅仓库 README以了解其中提供的 pip 安装说明,并参阅PyPI 页面获取软件包信息。不要将打包分类器视为已测试兼容性的证据。
- 定义常量、参数、变量、方程和目标。对于动态任务,请根据文档准备相关时间范围和观测值;区分测量输入与待估计量。
- 选择合适的求解模式和执行位置。远程求解是文档所述的默认方式;remote=False 用于选择本地执行。请考虑输入数据是否适合进行远程处理。
- 评估一个有代表性的示例,检查返回到 Python 的数值,并将其与预期行为进行比较。如果求解失败,请查看 infeasibilities.txt,并参考文档中的诊断和初始化选项,再扩大模型规模。