2012-05-16 73 views
9

我在查找开放源代码Java中实现了对非线性多变量函数进行约束优化的方法。Java中的非线性多变量函数的约束优化

+0

有你看了阿帕奇百科全书数学?我似乎记得一些非线性优化实用程序... –

+1

你能举出一个你想要解决的问题吗? –

+0

你想解决的问题是否有离散变量或连续变量? – willem

回答

3

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

  • OptaPlanner(Apache许可证,100%的java,大量的例子和文档)
  • jacop
  • 巧克力
  • ...
5

IPOPT是最强大的解算器,我知道的。

它有一个Java interface虽然我不知道有多好就是,我只使用C++ API。

+0

我对IPOPT的经验是,它是我用于处理大型稀疏凸面问题的最高性能的开源解算器。不幸的是,这个库不是线程安全的,并且容易出现段错误或者更糟糕的情况,如果你做了一些微小的错误,那么就会破坏你的内存并导致JVM在稍后发生段错误,这几乎不可能从Java进行调试。最后,我决定将使用IPOPT的代码隔离到用C++编写的单独进程中更好。 – Owen

+0

@Owen有趣。自从我广泛使用Java API以来,它的工作可靠;没有段错误,没有内存损坏,没有内存泄漏。但是,我同意:如果可以的话,只需将其放入一个单独的过程中,并完全避免接口故障。 – Ali

+0

你可能是对的。我结束了跟踪我的内存腐败的事实,即'Ipopt'的终结器正在另一个线程上调用(通常是终结器)。所以我想这可能都回来的事实,Ipopt是不是线程安全的,[这是记录(https://projects.coin-or.org/Ipopt/ticket/167)。 – Owen

0

你可以看看Choco,在Java中实现约束规划的框架。

2

我最近移植迈克尔·鲍威尔的COBYLA2免费衍生的优化非线性目标函数和约束到Java。你会发现源代码here