首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IPOPT在Pyomo中指定梯度

如何使用IPOPT在Pyomo中指定梯度
EN

Stack Overflow用户
提问于 2019-04-18 20:43:53
回答 2查看 631关注 0票数 1

初级问题

当在Pyomo中求解NLP时,使用IPOPT作为求解器,如何告诉IPOPT目标函数和/或约束的梯度是多少?我必须传递一个可调用函数,它返回目标值--我同样可以传递一个可调用函数来计算梯度值吗?

二级问题

默认情况下,Pyomo+IPOPT是如何处理这个问题的?当我用Pyomo+IPOPT解决一个简单的非线性方程组时,它的部分输出包括“目标梯度评估的数目”...but,它是如何计算梯度的?有限差分的数值,还是别的什么?

我在Python3.6和IPOPT3.7中使用Pyomo5.6。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-22 13:42:12

Pyomo使用Ampl解决程序库(ASL)中的自动区分特性提供一阶和二阶导数信息。当调用IPOPT时,Pyomo使用'.nl‘文件格式输出模型,该文件格式由ASL读取并链接到IPOPT。所以你不需要做任何事情来提供梯度信息,这是自动完成的。

票数 1
EN

Stack Overflow用户

发布于 2019-04-22 13:47:10

后面的算法称为欧迪夫。基本上,它使用原子函数图(加法、减法、乘法、除法,或者exp和log)来计算任何函数的梯度。然后利用微积分中的链规则计算任意输入的整体梯度。

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

https://stackoverflow.com/questions/55753497

复制
相关文章

相似问题

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