首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将pytorch模型集成到动态优化中,例如在Pyomo或gekko中

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

Stack Overflow用户
提问于 2021-05-26 01:51:20
回答 1查看 120关注 0票数 2

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

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

所有时间步长φ的最小和(X_t)

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

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

有没有一种简单的方法可以使用像pyomo或gekko这样的动态优化工具箱做到这一点?

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

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

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-27 21:23:05

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 optimize的动态优化示例。

Keras LSTM MPC

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67693181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档