【发布时间】:2018-10-18 23:54:56
【问题描述】:
我对线性编程很陌生,我确实用 lpsolve(从 Java 调用的二进制 dll,通过 JavaILP 包装器来获得更面向对象的代码)解决了我的第一个问题,而且速度非常快(50 毫秒)。
然后我决定避免使用本机代码(如果可能)并使用 ojAlgo 重新编写所有内容,对于我的 2100 个变量问题,解决时间从 50 毫秒增加到 1089 毫秒。
这个速度是否正常/预期?
是不是因为 ojAlgo 使用了BigDecimal(不太确定,我在代码中看到过doubles)而lpsolve 可能使用了ints?
我可以做点什么吗?
另一方面,发现的最大值从1013 增加到OPTIMAL 1249,这很好。 (使用 lpsolve 我什至不知道存在更好的解决方案)
编辑: 我没有注意到一些表达式名称发生冲突,我猜这使它们相互覆盖;现在我解决了这个问题,并在 8270 毫秒内找到了 OPTIMAL 1013 解决方案。
【问题讨论】:
标签: java linear-programming ojalgo