【问题标题】:Constrained optimization for nonlinear multivariable function in JavaJava中非线性多变量函数的约束优化
【发布时间】:2012-05-24 02:14:54
【问题描述】:

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

【问题讨论】:

  • 你看过 Apache Commons Math 吗?我似乎记得一些非线性优化实用程序...
  • 您能举个例子说明您要解决的问题吗?
  • 你要解决的问题是离散变量还是连续变量?

标签: java mathematical-optimization nonlinear-functions


【解决方案1】:

IPOPT 是我所知道的最强大的求解器。

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

【讨论】:

  • 我对 IPOPT 的体验是,它是我用于解决大型稀疏凸问题的性能最高的开源求解器。不幸的是,该库不是线程安全的,并且很容易出现段错误或更糟,如果您做任何轻微的错误,这会破坏您的内存并导致 JVM 稍后发生段错误,这几乎不可能从 Java 中调试。最后,我决定最好将任何使用 IPOPT 的代码隔离到一个单独的进程中,用 C++ 编写。
  • @Owen 有趣。从那以后,我就非常广泛地使用了 Java API,而且它工作可靠。没有段错误,没有内存损坏,没有内存泄漏。但是,我同意:如果可能的话,把它放到一个单独的进程中,完全避免接口的困难。
  • 你可能是对的。我最终将我的内存损坏追溯到Ipopt 的终结器在不同的线程上被调用(就像终结器通常那样)。所以我想这一切都可能回到 Ipopt 不是线程安全的事实,which is documented
【解决方案2】:

有几个开源的java实现可以做到这一点,比如:

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

【讨论】:

    【解决方案3】:

    我最近将 Michael Powells 的用于非线性目标函数和约束的 COBYLA2 无导数优化器移植到 Java。你会找到源代码here

    【讨论】:

      【解决方案4】:

      你可以看看Choco,一个用java实现的约束编程框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 2016-02-23
        相关资源
        最近更新 更多