微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 pytorch 模型集成到动态优化中,例如在 Pyomo 或 gekko

如何解决如何将 pytorch 模型集成到动态优化中,例如在 Pyomo 或 gekko

假设我有一个 pytorch 模型,它描述了一些基于自身状态 x 和外部执行器 u 的多维系统的演化。所以 x_(t+1) = f(x_t,u_t) 其中 f 是来自 pytorch 的人工神经网络。

现在我想解决一个动态优化问题,以找到一个最优的 u 值序列,以最小化依赖于 x 的目标。像这样:

所有时间步长的最小总和 phi(x_t)

s.t.: x_(t+1) = f(x_t,u_t)

此外,我对 x 中的一些变量也有一些上限和下限。

是否有使用动态优化工具箱(例如 pyomo 或 gekko)的简单方法

我已经编写了一些代码,将前馈神经网络转换为 numpy 函数,然后可以将其作为约束传递给 pyomo。这种方法的问题在于,每次神经网络结构发生变化时,都需要大量的重新编程工作,因此快速测试变得困难。此外,循环神经网络的集成也变得困难,因为必须将隐藏的细胞状态作为附加变量添加到优化问题中。

我认为一个好的解决方案可能是在 Torch 中进行函数评估和梯度计算,然后以某种方式将结果传递给动态优化器。我只是不知道该怎么做。

非常感谢您的帮助!

解决方法

Tensorflow 或 Pytorch 模型目前无法直接集成到 GEKKO 中。但是,我相信您可以从 Tensorflow 和 Pytorch 中检索衍生品,这允许您将它们传递给 GEKKO。

下面的链接中有一个 GEKKO Brain 模块和示例。您还可以找到使用 GEKKO 前馈神经网络进行动态优化的示例。

GEKKO Brain Feedforward neural network examples

MIMO MPC example with GEKKO neural network model

GEKKO Brain 模块中的循环神经网络库目前正在开发中,可以轻松使用 GEKKO 的所有动态优化功能。

同时,您可以通过将 TensorFlow 或 PyTorch 模型包装在可用的优化求解器(例如 scipy 优化模块)中来使用顺序方法。

查看以下链接,了解使用 Keras LSTM 模型和 scipy 优化的动态优化示例。

Keras LSTM MPC

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。