如何在 Apache Commons Math 中执行整数线性规划

How to perform Integer Linear Programming in Apache Commons Math

Apache Commons Math Library 中的 org.apache.commons.math3.optim.linear 包允许 线性优化 但返回值是双倍的。有什么方法可以使用此库执行 整数线性规划 吗?我试过谷歌搜索,但似乎没有任何地方提到 ILP。

或者,是否有任何其他 Java 库可以进行 ILP?请注意,我需要 运行 这个 android 所以 SCPSolver、GLPK、Or-tools。等是不可能的。

提前致谢。

由于这个问题和 'Linear Programming in Android' 通常是一个很少讨论的话题,我想我会 post 我的发现在这里供将来搜索的任何人使用。

顺便说一句,我最终使用了下面给出的 Ojalgo 端口。

这些是我发现可以很容易地导入到 android 项目中的 LP 库:

Apache Commons Math

也许是维护得最好的库,这个库支持线性优化但没有“整数”LP

The next two libraries do support Integer LP and/or Mixed Integer LP.

Choco Solver

尽管最新版本的 Choco (4.0) 是基于 Java 8,但版本 3.3.3 有一个 Java 7 变体。你可以找到它here。这将毫无问题地导入 Android Studio。

您可能 运行 遇到的另一个问题是,即使他们的网站上有版本 4 的指南和教程,您也找不到 Choco 3 的任何指南,除了 Java文档。但幸运的是,有人制作了旧指南的 PDF,您可以通过谷歌搜索 "Choco3 User Manual".

另请注意,Choco 是根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 获得许可的。所以如果你想在商业项目中使用 LP,请考虑下一个选项。

Oj! Algorithms

Ojalgo 是另一个很棒的库,它有一个 MIT Licence 并支持 Java 7。但正如我发现的那样,它使用了几个 Java 调用,这些调用在 Android.

幸运的是,MVP has ported the library to work in Android : KIC/ojAlgoAndroid

此端口 运行 没有问题。我已经在 J​​itpack 上分叉并创建了一个版本:shahimclt/ojAlgoAndroid.

只是为了修正 ShahiM 的回答: