问题标签 [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.
mathematical-optimization - 非常大的非线性最小二乘优化的收敛
我正在尝试解决以下问题:我有很多(~80000)个正在生长的器官表面斑块。我随着时间的推移(18 个时间点)测量它的每个区域,并希望为其拟合一条增长曲线(双逻辑模型,例如,只是两个逻辑函数 bcs 的总和。有两个“增长突增”发生在观察期)。
我有盒子约束来确保指数项不会爆炸,并且有一个线性约束,一个增长突增必须在另一个之后发生。此外,为了在拟合参数中强制执行某种空间连续性,我在目标函数(最小二乘)中添加了一个惩罚项,作为相邻块的(某些)参数之间差异的平方和,因此个体模型拟合不再独立。
我有梯度和整个事物的粗麻布,我在越来越精细的尺度上解决它,从整体表面积开始,细分,将全局模型的参数映射到每个补丁,再次运行求解器,细分......直到我得到我想要的分辨率。
因此,使用 IPOPT 进行优化是可行的,但速度非常慢,而且由于我在所有关于优化理论的事情上都有点菜鸟,所以我想知道我是否在设置中做了一些非常愚蠢的事情。我使用 ma86 作为线性求解器,针对在具有 256G RAM 和 56 个内核以及 metis 重新排序的机器上运行的 openBLAS 编译。我使用的其他设置是:
这给了我这样的东西:
.... 在这个分辨率下时间是可以的,但是在更高的分辨率下,线性求解变得非常大并且非常慢。所以我想我的问题是:我是否可以期望这样的事情(以更高分辨率,具有约 500 000 个参数)需要几天才能解决,或者是否有任何设置我可以调整以增加收敛/减少迭代次数需要。顺便说一句,最初的猜测实际上非常好,而且我实际上正在寻找一个局部最优值。
python - Pyomo/IPOPT:检索计算变量
我想知道检索解决方案值的 Pyomo-ish 方法是什么(特别是仅针对求解器计算的变量)。
在我的例子中,变量“x”由三个集合索引,因此它的键是 3 元组,例如 x[CC,N5R_0,ntg]。在求解之前,变量“x”有 7626 个元素。求解器 (IPOPT) 报告它正在求解一个包含 1339 个元素的问题:
解决后,instance.x 组件仍有 7626 个元素。但是在查看结果时,我只想提取 1339 个计算变量的值。
我尝试只获取非零值,但如果初始值不全为零,这将不起作用。
是否有一种快速且程序化的方法来提取这 1339 个变量组件的值?(除了IPOPT输出文件的单独后解析?)
例如,此信息是否以某种方式嵌入在 .solve() 之后的模型实例对象中?
谢谢
optimization - 优化器返回错误时加载 pyomo 解决方案
在使用 ipopt 优化 pyomo 模型时,我收到以下消息:
恢复阶段收敛到原始问题的过滤器无法接受的可行点。恢复阶段中的恢复阶段失败。
这意味着 ipopt 找到了一个可行的点,但是因为它对过滤器来说是不可接受的,所以 ipopt 没有继续尝试寻找问题的局部最优值。这会将“错误”状态返回给 pyomo,我无法加载结果。尝试在实例上使用 pprint 会在它们的起点为我提供所有变量。当 ipopt 遇到恢复失败时,我想找出变量的值。有没有办法我可以做到这一点?
这是我正在使用的代码
这是输出
intel-mkl - 将 Ipopt 与 MKL 链接,MUMPS 的问题
我正在尝试将 MKL 与 IPOPT 联系起来以提高性能。我已经阅读了以下线程,它帮助解决了我的很多问题。
但是,当我使用以下命令配置 Ipopt 时。
我收到此错误,这似乎在尝试构建 ipopt 库时会导致问题。
但是,如果我只是按照https://www.coin-or.org/Ipopt/documentation/node13.html#SECTION00043100000000000000中的说明使用 ./get 通过第三方安装未优化的库,那么我会得到以下信息
我在我的 .bashrc 文件中获取 mklvar.sh,当我运行以下命令时
我明白了
这似乎表明我正确地采购了 MKL 目录。如果有人对我的问题有任何见解,将不胜感激。
python - “No package 'coinhsl' found”:IPOPT 编译并通过测试,但 pyomo 找不到?
我不知道问题是在我和 Pyomo.DAE 之间还是在我和 IPOPT 之间。我在 Windows 上的 Ubuntu (WSL) 上使用 Bash 的命令行界面来完成这一切。当我运行时:
JAMPchip@DESKTOP-BOB968S:~/examples/dae$ python3 run_disease.py
我收到以下输出:
警告:无法找到求解器 ipopt Traceback 所需的“ipopt”可执行文件(最近一次调用最后一次):结果中的文件“run_disease.py”,第 15 行 = solver.solve(instance,tee=True) 文件“ /usr/lib/python3.6/site-packages/pyomo/opt/base/solvers.py”,第 541 行,在解决 self.available(exception_flag=True) 文件“/usr/lib/python3.6/site- packages/pyomo/opt/solver/shellcmd.py",第 122 行,可用 raise ApplicationError(msg % self.name) pyutilib.common._exceptions.ApplicationError: No executable found for solver 'ipopt'
当我在 IPOPT 构建文件夹中运行“make test”时,我收到:
测试 AMPL Solver Executable... 测试通过!测试 C++ 示例...测试通过!测试 C 示例...测试通过!测试 Fortran 示例... 测试通过!
但我的一个主要担忧是,在“配置”输出中是以下内容:
检查 COIN-OR 包 HSL... 未给出:未找到包“coinhsl”
当我运行“make”时,也有一些警告。我完全不确定问题出在哪里。如何让 python3 找到 IPOPT,以及如何判断系统上是否有 IPOPT 供 pyomo.dae 查找?我非常有信心在 HSL 文件夹中有“coibhsl”,那么如何确保它被 IPOPT 找到?
pyomo - 从 IPOPT 求解器获取:CPU 时间、#iterations 、目标函数的值并将它们保存在 Pyomo 上的向量中
我知道如何在终端上打印这些值(例如:)results = solver.solve(model,tee=True)
,但我想将它们保存在 3 个变量或向量中。我需要的值是 CPU 时间、#iterations、目标函数的值。
ubuntu-16.04 - 在 Omg-tools 中使用 HSL 求解器
使用OMG 工具,我希望使用 HSL 求解器运行一个示例,例如compare_distributed_optimization_quadrotors.pyma57
中使用的。
首先,我使用 安装了 OMG-tools pip
,它还会自动安装Casadi和Ipopt。然后我按照Casadi 教程从源代码构建 HSL,我可以在其中确认包已安装在 中/usr/local/lib
,但是在运行 OMG-tools 的示例时,我总是得到Invalid_Option
选定的求解器。我添加了教程中提到的链接和环境变量。
在我的系统上使用 Ipopt 设置 HSL是否需要任何其他步骤,我需要遵循这些步骤?
我的系统正在运行Ubuntu 16.04。
c++ - IpOpt 拒绝解决无约束问题
我对 IpOpt 很陌生,我正在尝试通过它解决简单的无约束优化问题。我的问题只是二次函数f(x) = (5x - 3)^2
。
我为这个问题创建了一个简单的类:
我设置m = 0;
并nnz_jac_g = 0;
表明我没有限制
IpOpt 给了我以下输出:
但显然问题的解决方案应该是x = 3/5
.
我的问题课有什么问题?
据我所知,IpOpt 没有调用get_starting_point
看起来很奇怪的方法。
我的 IpOpt 版本是3.12.11
,gcc 是7.2.0-8ubuntu3.2
。我可以提供更多信息,但我不知道我还能展示什么。源代码应该足够漂亮
PS对不起我的英语不好
python - 将结果作为模型的初始值,但要解决恢复
你好,我用pyomo搭建了一个DAEs模型,用ipopt解决了。
但是,我发现了这些问题。
模型可以解决到可接受的水平,但是当我改变 nfe 的数量或有限元的长度时,它无法解决,并且我得到“恢复阶段收敛到一个小的原始不可行点”。
我猜这可能是由变量的初始值引起的。因此,我尝试从求解器中获取模型的结果,并将其作为新的初始值提供给模型,但失败了。
我在一个简单的例子(car_example)中得到了它,并且迭代减少了。
那么,为什么它在大型模型中会失败?</p>
非常感谢您
python - Gekko 优化包和 numpy 反函数
我正在使用 Gekko 为一组反应动力学选择 A 最优实验。目标函数是最小化迹线(inv(Z'Z)),其中 Z 是通过围绕其参数线性化 ODE 计算得出的尺度敏感度矩阵。如您所见,目标函数涉及 Z'Z 的倒数。我使用了 numpy(甚至 scipy)逆函数,但遇到以下错误:“没有找到与指定签名匹配的循环,并且为 ufunc inv 找到了强制转换”
我真的不知道怎么了。如果没有反函数,优化器可以正常工作。请,请帮助我。我被这个问题困扰了两个多星期。
代码如下: