问题标签 [ipopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
225 浏览

python - 使用 pyipopt 进行优化,在 jupyter notebook 中使用 pyipopt 的问题

我将制作一个脚本来优化潮汐涡轮机在溪流中的位置。为此,我将找到使涡轮机阻力最大化的位置。

我打算使用 ipopt 来做这个位置的优化。我目前正在学习如何使用 ipopt,这就是我现在面临的问题。

我正在使用 jupyter notebook 我面临的问题是当调用 nlp.solve(obj_poss) 时,

1.)solve()函数不会打印出有关内部发生的事情的信息,因为它应该发生见:https ://www.coin-or.org/Ipopt/documentation/node36.html

2.) 当发送给solve()的参数有错误时,它不会打印出错误的原因。示例尝试将 low_var 更改为 low_var = np.array([0.5, 0.5 , 0.5, 0.5])。

代码说明:代码试图最小化函数 eval_Psum。在函数 eval_g_func 的约束下。

0 投票
2 回答
581 浏览

python - Gekko 非线性优化,约束函数评估 if 语句中的对象类型错误

我正在尝试解决非线性优化问题。我通过创建下面的代码复制了我的问题。Python 返回TypeError: object of type 'int' has no len(). 如何在约束函数中包含 IF 语句?

控制台打印以下内容:

-

-

我希望 GEKKO 在约束中使用 IF 语句运行,我不关心代码中的优化问题是否有解决方案。先感谢您。

0 投票
1 回答
265 浏览

python-3.x - IPOPT 不支持 Pyomo 的 quicksum 功能吗?不支持的表达式类型的 ValueError

我正在尝试使用 ipopt 求解器解决 Pyomo 上的非线性可行性问题。问题有 2 个组合大小为 28 的 RangeSet 声明、4 个组合大小为 68 的 Param 声明和 5 个组合大小为 88 的 Var 声明。还有 90 个约束声明(2 个冗余),其中一些是线性的,一些是非线性的。

该模型应该模拟化学系统。调用model.pprint()会提供它必须的所有信息:所有声明,如上所述。这是我收到的错误输出:

我认为这是一个相当简单的计算,不应该有任何问题,但现在我不知道出了什么问题。我不确定它引发的价值错误是什么意思。我是否要求它以非线性术语打印一些线性表达式?我能想到的只有一件事:我使用了两次quicksum,它使用了linear_expression对象。我应该用其他一些求和表达式(如求和)替换它(不确定求和是否使用相同的对象)?

编辑:我将错误追溯到这个特定的约束。约束给出了摩尔分数和摩尔之间的关系。

不知何故,sum_productSummation是引发 ValueError 的原因。如果有人能看出这个表达式有什么问题,那就太好了。

如果我禁用此约束,求解器将返回不同的错误:

但是,这个错误至少告诉我求解器正在尝试求解模型,即使它找不到解决方案。

0 投票
2 回答
518 浏览

python-3.x - 如何使用 IPOPT 在 Pyomo 中指定渐变

主要问题

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

次要问题

Pyomo+IPOPT 默认如何处理这个问题?当我用 Pyomo+IPOPT 解决一个简单的 NLP 时,IPOPT 输出的一部分包括“客观梯度评估的数量”......但是它是如何评估梯度的?数值上具有有限差异,还是什么?

我将 Pyomo 5.6 与 Python 3.6 和 IPOPT 3.7 一起使用。

0 投票
1 回答
586 浏览

python - 如何使用 pyomo 建模框架在 ipopt 中使用(/安装)pardiso 线性求解器?

我正在开发一个使用 pyomo 和 python 的优化模型(python 3 - 我在 windows 上使用 anaconda 管理包)。我需要使用非线性求解器 ipopt。似乎 ipopt(mumps 或 ma27)使用的默认线性求解器相对较慢且不可线程,我希望将 pardiso 求解器用于 ipopt 的线性部分。它似乎有两个版本:MKL-intel pardiso 版本“独立”版本——我对它们中的任何一个都很好。- 但我无法使用 pardiso。

我有 ipopt 工作,我通过以下方式为我的 pyomo 问题选择它:

我使用 ipopt 选项选择“pardiso”作为线性求解器

我收到以下错误:

我猜这意味着未安装求解器。如果我选择“腮腺炎”或不指定任何内容,一切正常。

但是它说 pardiso 求解器来自 mkl 库(我有),现在理想情况下我想知道我必须从 anaconda 安装哪些软件包才能使 pardiso 求解器工作?

这篇文章规定,为了工作,必须将特定的 Anaconda 库文件夹添加到系统路径中,我这样做了

没有什么变化

或者,我从https://www.pardiso-project.org/下载了 pardiso 模型,它给了我 3 个文件 libpardiso600-WIN-X86-64.dll .exp 和 .lib,我不知道该做什么或在哪里放置(求解器网站上没有解释)

感谢您的帮助,

0 投票
1 回答
673 浏览

pyomo - pyomo 指定求解器位置

看起来很简单,但我如何将 Pyomo 指向本地安装的求解器?我能够从本地计算机从 NEOS 获得解决方案,因此我知道该模型设计得当。昨天我将 COIN-OR tarfile 安装到 Azure Ubuntu VM 上,并希望使用 Jupyter 在该 VM 上运行我的模型。

这是我到目前为止所拥有的:

错误信息:

0 投票
1 回答
521 浏览

c++ - 无法链接 ipopt 库(MacOS Mojave 上的 C++)

我想在 MacOS Mojave 上使用ipoptcppad在我的软件中。C++

编译停止,如下所示。

为什么它编译并且链接器仍然失败。

有人可以帮忙吗?

我试过这个XcodeCLion。两个 IDE 都给我同样的错误。我还经常使用 brew 重新安装 cppad 和 ipconfig。

include_paths似乎工作。我可以包含如下标题:

CMakeOutput.log更新:这里是更改为 -v 选项后的前半部分内容:

0 投票
1 回答
1477 浏览

pyomo - 如何知道优化问题是否不可行?Pyomo 警告:问题可能不可行

Pyomo 可以找到解决方案,但它给出了以下警告:警告:将具有警告状态的 SolverResults 对象加载到模型 =(SecondCD)中;来自求解器的消息=Ipopt 3.11.1\x3a 收敛到本地不可行点。问题可能是不可行的。

我如何知道问题是否不可行?

这个 pyomo 模型优化了农场的投入分配决策。

...

如果我设置 b >=1,(例如:参数 b := 土地 1 劳动力 1 资本 1 肥料 1),pyomo 可以找到最优解;

但如果我设置 b < 1,(例如:参数 b := 土地 0.1 劳动力 0.1 资本 0.1 肥料 0.1),并设置 opt.options["tol"] = 1E-64,pyomo 可以找到解决方案,但会发出警告.

我期待一个最佳解决方案,但实际结果给出了上述警告。

0 投票
1 回答
352 浏览

python - pyomo 的 AbstractModel VS ConcreteModel?"opt.options["tol"]" 如何在寻找最佳解决方案方面发挥作用?

我有一个 AbstractModel 和一个 ConcreteModel 解决同样的问题,但它们的表现不同。主要是关于变量的初始值和ipopt的容差。

  1. 当我将变量 model.x 初始化为 10 并且 opt.options["tol"] = 1E-64: ConcreteModel 可以找到最优解,而抽象模型“Solved To Acceptable Level”。(但他们找到的解决方案其实是一样的)

  2. 当我将变量 model.x 初始化为 100 和 opt.options["tol"] = 1E-64 时: ConcreteModel 可以找到最佳解决方案,而抽象模型有时“解决到可接受的水平”,有时“无法加载 SolverResults 对象不良状态:错误”。

  3. 如果我只使用ipopt的默认值tolerance,无论我如何初始化变量model.x,ConcreteModel和AbstractModel都能找到相同的最优解。

所以我想知道 opt.options["tol"] 如何有所作为?为什么在这种情况下 ConcreteModel 总是能够找到最佳解决方案,而 AbstractModel 却不能?

多变的

AbstractModel 的求解脚本

具体模型的求解脚本

0 投票
1 回答
261 浏览

cplex - pyomo中非线性随机规划的求解器?

我在 pyomo 编程解决非线性优化问题(使用 ipopt 求解器)。稍后,我想在模型中添加随机元素。我知道在 Pyomo 中您可以使用 CPLEX 来处理随机规划,但 CPLEX 只能处理线性规划、混合整数规划和二次规划。

一般非线性随机规划问题是否有求解器?如果没有,我们如何使用现有的求解器来处理它?