Java中非线性多变量函数的约束优化

Java中非线性多变量函数的约束优化,java,mathematical-optimization,nonlinear-functions,Java,Mathematical Optimization,Nonlinear Functions,我正在寻找一个开源实现的方法,在Java中对非线性多变量函数进行约束优化。是我所知道的最健壮的解算器 它有一个虽然我不知道有多好,但我只用C++ API .< /p> 你可以看看,java中实现的约束编程框架。 最近我将米迦勒的PoeLejava的CopyLa2无导数优化器移植到了非线性目标函数和Java约束中。您可以找到源代码。有几种开源java实现可以做到这一点,例如: (apache许可证,100%java,大量示例和文档) 雅可布 巧克力 您看过Apache Commons数学吗?我

我正在寻找一个开源实现的方法,在Java中对非线性多变量函数进行约束优化。

是我所知道的最健壮的解算器


它有一个虽然我不知道有多好,但我只用C++ API .< /p> 你可以看看,java中实现的约束编程框架。

最近我将米迦勒的PoeLejava的CopyLa2无导数优化器移植到了非线性目标函数和Java约束中。您可以找到源代码。

有几种开源java实现可以做到这一点,例如:

  • (apache许可证,100%java,大量示例和文档)
  • 雅可布
  • 巧克力

您看过Apache Commons数学吗?我似乎还记得一些非线性优化实用程序……你能举一个你试图解决的问题的例子吗?你想解决的问题是离散变量还是连续变量?我对IPOPT的经验是,它是我用于大型稀疏凸问题的最有效的开源解算器。不幸的是,该库不是线程安全的,并且容易出现segfault或更糟的情况,如果您稍有错误,就会损坏内存并导致JVM出现segfault,这几乎不可能从Java进行调试。最后,我决定最好将IPOPT中的任何代码隔离到一个单独的进程中,用C++编写。欧文很有意思。从那时起,我就广泛地使用了JavaAPI,它工作可靠;没有SEGFULTS,没有内存损坏,没有内存泄漏。但是,我同意:如果可能的话,把它放在一个单独的过程中,完全避免接口困难。你可能是对的。我最终发现内存损坏的原因是,
Ipopt
的终结器在另一个线程上被调用(通常是终结器)。所以我想这一切都可能回到Ipopt不是线程安全的事实上来。