我使用以下链接使用 openblas 编译 Ipopt:./configure --with-blas-incdir="-L/home/moritz/build/CoinIpopt_test/ThirdParty/openblas/include/" --with-blas-lib="-L/home/moritz/build/CoinIpopt_test/ThirdParty/openblas/lib/ -libopenblas_sandybridgep-r0.2.14.a"
如果我没有定义任何特定的 LAPACK 库,Ipopt 会自动使用 netlib 中的 LAPACK。openplas 是否有自己优化的 LAPACK 实现?
如果我使用--with-lapack-incdir="-L/home/moritz/build/CoinIpopt_test/ThirdParty/openblas/include/" --with-lapack-lib="-L/home/moritz/build/CoinIpopt_test/ThirdParty/openblas/lib/"
make 失败,因为无法解析某些 Lapack 例程,例如undefined reference todpotrs_
At least there is the filelapacke.h in theinclude folder but there are not LAPACK libraries in thelib` 文件夹。
我在 GitHub 上发现了这个问题:
好的,我想我想通了...您可以通过在 make 命令行上指定 NO_LAPACK=1 来构建 OpenBLAS,而不包含 LAPACK。默认情况下,它包含完整的 LAPACK 库(某些部分已优化)。
但如果是这种情况,库在哪里?
我应该针对 openblas 编译 LAPACK 吗?
如果有人能够阐明这个问题,我将不胜感激。
我正在尝试为IPOPT安装Matlab接口.我按照https://projects.coin-or.org/Ipopt/wiki/MatlabInterface上的说明进行操作.
我已成功配置Matlab来构建MEX文件.运行
mex -setup
Run Code Online (Sandbox Code Playgroud)
来自Matlab的应该生成一个文件mexopts.sh(应该位于./matlab/目录中).但是,我似乎没有这个目录在我的计算机上的任何位置.
此外,似乎从版本R2014a开始,Matlab不再使用.sh文件(参见:http://www.mathworks.com/matlabcentral/answers/124597-how-to-setup-gfortran-on-mac-osx -10-9-and-matlab-r2014a#comment_211324).
有没有人知道如何在El Capitan上为R2015a安装IPOPT的Matlab接口?在线浏览旧方向的页面并没有多大帮助.
我目前正试图让IpOpt内点求解器工作.我运行的示例,运行正常,除了选项.
每当我尝试设置选项时,例如:
app->Options()->SetStringValue("mu_strategy", "adaptive");
Run Code Online (Sandbox Code Playgroud)
我得到一个std :: bad_alloc异常.如果我从示例中删除所有选项集,它运行正常,如上所述.
我还尝试通过在初始化程序中给出路径来手动设置选项文件:
app->Initialize("C:\\ipopt.opt");
Run Code Online (Sandbox Code Playgroud)
但是,这会在initialize()中抛出异常.
我的可执行文件夹中有一个ipopt.opt文件.
关于我做错什么或我能做些什么来解决这个问题的任何线索?
我已经尝试使用实例(全部给我上bad_alloc的设置选项):
- http://codepad.org/mHIfBz3k
- https://projects.coin-or.org/Ipopt/browser#releases/3.11.0/ Ipopt /示例/ hs071_cpp
(具体:https://projects.coin-or.org/Ipopt/browser/releases/3.11.0/Ipopt/examples/hs071_cpp/hs071_main.cpp)
编辑(已解决):我正在使用在发布模式下构建的Visual Studio的预编译库.当我的项目处于调试模式时,我尝试在visual studio中使用它们,因此它崩溃了.
我正在使用 pyomo 的求解器运行优化问题ipopt。我的问题有点复杂,它是infeasible由IPOPT声明的。除非需要,我不会发布整个问题。但是,需要注意的一件事是,我为这个问题提供了一个温暖的开始,我认为这将有助于防止不可行的情况再次出现。
这是我在求解器内部设置pyomo时的输出:ipopttee=True
Ipopt 3.12.4:
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
This is Ipopt version 3.12.4, running with linear solver mumps.
NOTE: Other linear solvers might be more efficient (see Ipopt documentation).
Number of nonzeros in equality constraint Jacobian...: 104
Number of nonzeros in inequality …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 JuMP 来解决非线性问题,其中变量的数量由用户决定 - 也就是说,在编译时未知。
为了实现这一点,该@NLobjective行如下所示:
@eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
Run Code Online (Sandbox Code Playgroud)
例如,如果n=3,编译器将该行解释为与以下内容相同:
@JuMP.NLobjective(m, Min, myf(x[1], x[2], x[3]))
Run Code Online (Sandbox Code Playgroud)
问题是它@eval仅在全局范围内有效,并且当包含在函数中时,会引发错误。
我的问题是:如何在函数的本地编译范围内完成相同的功能(使用可变数量的参数@NLobjective进行调用)?myfx[1],...,x[n]
def testme(n)
myf(a...) = sum(collect(a).^2)
m = JuMP.Model(solver=Ipopt.IpoptSolver())
JuMP.register(m, :myf, n, myf, autodiff=true)
@JuMP.variable(m, x[1:n] >= 0.5)
@eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
JuMP.solve(m)
end
testme(3)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想确保我有资格使用 Bonmin 和 Couenne 来解决 NLP 问题(但我没有整数变量),并且我渴望获得全局最优而不是局部最优。我还读到 Ipopt 首先搜索全局答案,如果没有找到,它将提供本地答案。当我使用 Ipopt 时,我如何理解我的答案是一个全局答案。另外,我想知道针对这些问题最好的 NLP 和 MINLP 开源 python 求解器是什么,可以与 Pyomo 合并?我的问题的主要原因是使用 Bonmin 的以下输出:
注意:默认情况下,您将 Ipopt 与 MUMPS 线性求解器一起使用。其他线性求解器可能更有效(请参阅 Ipopt 文档)。
问候
如何安装 IPOPT 求解器以在 Windows 中与 pyomo 一起使用。我尝试了 pip install ipopt 但收到此错误(错误:为 ipopt 构建轮子失败)
我正在使用 Windows 10 和 Python 3.7.4
我的脚本是:
from __future__ import division
import numpy
import scipy
from pyomo.environ import *
from pyomo.dae import *
from pyomo.opt import SolverFactory
m=ConcreteModel()
m.x3=Var(within=NonNegativeReals)
m.u=Var(within=NonNegativeReals)
def _con(m):
return m.x3 >=3
m.con=Constraint(rule=_con)
def _con2(m):
return 4 >= m.u >=1
m.con2=Constraint(rule=_con2)
m.obj=Objective(expr=m.x3*m.u)
opt = SolverFactory("Ipopt", executable = "/Ipopt-3.12.6/bin/ipopt")
results = opt.solve(m)
results.write()
Run Code Online (Sandbox Code Playgroud)
虽然这是一个非常简单的问题,虽然程序声明已找到最佳解决方案,但解决方案的数量为0并且没有显示任何解决方案.
有任何想法吗??
非常感谢.
我想用cyipopt解决以下(宽松的,即 v(t) \xe2\x88\x88 [0, 1])最优控制问题:
\n\n这是迄今为止我解决离散问题的方法:
\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom cyipopt import minimize_ipopt\nfrom scipy.optimize._numdiff import approx_derivative\n\n# z = (x1(t0) .... x1(tN) x2(t0) .... x2(tN) v(t0) .... v(tN))^T\n\ndef objective(z, time):\n x0, x1, v = np.split(z, 3)\n res = 0.0\n for i in range(time.size-1):\n h = time[i+1] - time[i]\n res += h*((x0[i]-1)**2 + (x1[i]-1)**2)\n return res\n\n\ndef ode_rhs(t, x, v):\n x0, x1 = x\n xdot1 = x0 - x0*x1 - 0.4*x0*v\n xdot2 = -x1 + x0*x1 …Run Code Online (Sandbox Code Playgroud) 我从gdb得到以下错误:
*** glibc detected *** /.root0/autohome/u132/hsreekum/ipopt/ipopt/debug/Ipopt/examples/ex3/ex3: free(): invalid next size (fast): 0x0000000120052b60 ***
Run Code Online (Sandbox Code Playgroud)
这是回溯:
#0 0x000000555626b264 in raise () from /lib/libc.so.6
#1 0x000000555626cc6c in abort () from /lib/libc.so.6
#2 0x00000055562a7b9c in __libc_message () from /lib/libc.so.6
#3 0x00000055562aeabc in malloc_printerr () from /lib/libc.so.6
#4 0x00000055562b036c in free () from /lib/libc.so.6
#5 0x000000555561ddd0 in Ipopt::TNLPAdapter::~TNLPAdapter ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#6 0x00000055556a9910 in Ipopt::GradientScaling::~GradientScaling ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#7 0x00000055557241b8 in Ipopt::OrigIpoptNLP::~OrigIpoptNLP ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#8 0x00000055556ae7f0 in Ipopt::IpoptAlgorithm::~IpoptAlgorithm ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#9 0x0000005555602278 in …Run Code Online (Sandbox Code Playgroud) 如何在ubuntu中安装ipopt解算器与pyomo一起使用?我已经下载了ipopt的zip文件
但是我没有找到任何具体说明如何安装它并与pyomo一起使用.
ipopt ×11
pyomo ×5
optimization ×3
python ×3
c++ ×2
blas ×1
coin-or ×1
cyipopt ×1
debugging ×1
julia ×1
julia-jump ×1
lapack ×1
macos ×1
matlab ×1
mex ×1
numpy ×1
openblas ×1
python-2.7 ×1
python-3.x ×1
ubuntu-16.04 ×1