问题标签 [nlopt]
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.
fortran - 编译 NLopt Fortran 示例代码时出现语法错误
我正在使用 Simply Fortran(gfortran 编译器)从http://ab-initio.mit.edu/wiki/index.php/NLopt_Tutorial练习 NLopt 示例。NLopt 库包含 libnlopt-0.def、linlopt-0.dll(用 c 编写)和 nlopt.f。这是我的主程序 test.f
它是用 Fortran 77 编写的,每行有 6 个缩进。构建文件会出现此错误:
但是,调用 nlo_add_inequality_constraint 具有正确的参数 #,由 NLopt 参考指示:
任何人都可以找出发生了什么吗?非常感谢!
python - 在python下使用nlopt从初始点没有解决方案的变化,用于非线性优化
更新:这篇文章中的 ValueError 原始值来自变量下限和上限之外的一些 xi 值,修复后,模型运行但立即以初始值结束。
我正在尝试在pytyon中使用nlopt来解决非线性问题(线性约束和非线性目标),问题是这样的
该模型有 180 个变量和 30 个约束(包括 15 个 lhs 和 15 个 rhs)这里是 python 代码:
以 xi 为起点,求解是即时的,并且始终为下限 lb。求解状态为 4,即“优化停止,因为已达到 xtol_rel 或 xtol_abs(上)”。
任何提示?谢谢。
c++ - 我可以在 nlopt 中表示一条染色体吗?
I want to find the best solution for a problem. However, the solution(chromosome) is represented as a vector of integers (length unknown).
As far as I know, NLOPT accepts double*
as an input. Furthermore, the number of attributes is a constant
. So is it possible to wrap around and pass a std::vector<int>
?
EDIT - Tiny desciption of the problem:
I have a set of points. I want to sort this point using a heuristic. This heuristic is some what complex. It is the less possible number of crossing lines between them if we draw line between each consecutive points. I was thinking of something close to the gentic algorithm where I can represent the solution as chromosome of the ordered indexes.
I pick NLOPT because I have very successful previous experiment with it. I know it could be solved using many other genetic or bees algorithms libraries. But here I am asking about NLOPT it self.
c++ - NLopt 整数步长
有没有办法强制nlopt_optimize
进入整数步?我试过了
但这似乎没有多大帮助。
使用的算法是 COBYLA
c++ - 在优胜美地上运行可执行文件时出现 C++ 链接错误
我正在尝试编译网站上给出的示例问题(对于 C++)并且遇到了一个问题:NMead.cpp 是我的程序。我使用 g++ 编译它
g++ -g -O2 -I/usr/local/Cellar/nlopt/2.4.2/include -L/usr/local/Cellar/nlopt/2.4.2/lib -o NMead -lm -lnlopt NMead.cpp -v
生成的消息是:
当我尝试运行生成的可执行文件时:
我收到以下错误:
dyld:库未加载:/usr/local/opt/nlopt/lib/libnlopt_cxx.0.dylib 引用自:/Users/dlekshmi/Documents/workspace/TUTORIALS/./NMead 原因:找不到图像 Trace/BPT 陷阱:5
我怀疑出于某种原因,它正在寻找图书馆的错误位置。我跑了
并且生成的消息表明它确实是:
./NMead:/usr/local/opt/nlopt/lib/libnlopt_cxx.0.dylib(兼容版本9.0.0,当前版本9.2.0)/opt/local/lib/libgcc/libstdc++.6.dylib(兼容版本7.0.0, 当前版本 7.21.0) /usr/lib/libSystem.B.dylib (兼容版本 1.0.0, 当前版本 1213.0.0) /opt/local/lib/libgcc/libgcc_s.1.dylib (兼容版本1.0.0,当前版本 1.0.0)
我是 C++ 和 nlopt 的新手,我不确定我做错了什么。
julia - NLopt 中 ftol_abs 和 ftol_rel 的意外行为
更新:对于访问此页面的其他任何人,值得看看这个 SO 问题和答案,因为我怀疑那里的解决方案与我在这里遇到的问题有关。
这个问题与我在julia-users mailing list上提出的问题重复,但我还没有在那里得到回复(诚然只有 4 天),所以我想我会在这里问。
我从 Julia 调用 NLopt API,尽管我认为我的问题与 Julia 语言无关。
我正在尝试使用 COBYLA 解决优化问题,但在许多情况下我未能触发停止标准。我的问题相当复杂,但我可以用一个更简单的例子重现问题行为。
具体来说,我尝试x1^2 + x2^2 + 1
使用 COBYLA 最小化,并将两者都ftol_rel
设置ftol_abs
为0.5
. 我的目标函数包括一个将当前值打印到控制台的语句,因此我可以观察收敛情况。收敛期间打印到控制台的最后五个值是:
我的理解是,这些步骤中的任何一个都应该触发停止标准。所有步骤都小于0.5
,所以应该触发ftol_abs
。此外,每个值大约是1
,并且0.5*1 = 0.5
,因此所有步骤也应该触发ftol_rel
。事实上,收敛例程中的最后 8 个步骤也是如此。
NLopt 已经存在了一段时间,所以我猜问题在于我对如何ftol_abs
和ftol_rel
工作的理解,而不是一个错误。
谁能解释为什么没有更早地触发停止标准?
如果它有任何用处,可以使用以下 Julia 代码片段来重现我刚才所说的所有内容:
matlab - 将 MATLAB 优化函数转换为 julia
我正在尝试将 Matlab fmincon 优化函数转换为 julia。但没有太多的运气。
我认为可以使用 NLopt 或 IPopt。默认示例有效,但是当我尝试更改值时,它似乎没有迭代。
这个工作正常。它给出了 2 个结果和 11 次迭代
这不起作用,它只是给出一个结果和 0 次迭代
这只是给了我一个结果和 0 次迭代。
有人知道我做错了什么吗?
julia - NLopt SLSQP discards good solution in favour of older, worse solution
I'm solving a standard optimisation problem from Finance - portfolio optimisation. The vast majority of the time, NLopt is returning a sensible solution. However, on rare occasions, the SLSQP algorithm appears to iterate to the correct solution, and then for no obvious reason it chooses to return a solution from about one third of the way through the iterative process that is very obviously suboptimal. Interestingly, changing the initial parameter vector by a very small amount can fix the problem.
I have managed to isolate a relatively simple working example of the behaviour I am talking about. Apologies that the numbers are a bit messy. It was the best I could do. The following code can be cut-and-pasted into a Julia REPL and will run and print values of the objective function and parameters each time NLopt
calls the objective function. I call the optimisation routine twice. If you scroll back through the output that is printed by the code below, you'll notice on the first call, the optimisation routine iterates to a good solution with objective function value of 0.0022
but then for no apparent reason goes back to a much earlier solution where the objective function is 0.0007
, and returns it instead. The second time I call the optimisation function, I use a slightly different starting vector of parameters. Again, the optimisation routine iterates to the same good solution, but this time it returns the good solution with objective function value of 0.0022
.
So, the question: Does anyone know why in the first case SLSQP abandons the good solution in favour of a much poorer one from only about a third of the way through the iterative process? If so, is there any way I can fix this?
Note: I know my covariance matrix is positive-semi-definite, rather than positive definite. This is not the source of the issue. I've confirmed this by altering the diagonal element of the zero row to a small, but significantly non-zero value. The issue is still present in the above example, as well as others that I can randomly generate.
r - 在 R 中安装 tar.gz 包时出错
当我尝试从http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz安装 R 包nlopt-2.4.2.tar.gz时,使用sudo R CMD INSTALL nlopt-2.4 .2.tar.gz,我收到以下错误:
untar2 中的错误(tarfile、文件、列表、exdir、restore_times):
不支持的条目类型“”</p>
python - NLopt 无效参数
我使用带有 python 绑定的 NLopt 库。
当我使用nlopt_algorithm = nlopt.LN_SBPLX
它时效果很好。但是,如果我使用nlopt_algorithm = nlopt.GN_DIRECT_L
,它会失败并出现错误:
ValueError:nlopt 无效参数
有谁知道这是为什么?我错过了一些论点吗?