我使用MATLAB 2010b 64bit及其cplex集成来解决工程问题。但是,由于cplex的内存泄漏,内存使用超过了cplex(100 + GB,包括虚拟内存)的可接受限制,因此我无法解决我的问题。您可以看到类似的帖子here。
然后我尝试使用优化工具箱中的MATLAB linprog
,但结果令人失望。小问题实例的算法运行时间从80 cpu sec增加到2600 cpu sec。
现在,我需要一个LP解算器集成到MATLAB,它类似于CPLEX或linprog
。通过"类似"我的意思是它以(F, A, B, Aeq, Beq, ...etc)
形式接受数据输入的方式。
我必须能够在循环中使用它。你有什么建议吗?
答案 0 :(得分:1)
如果cplex中存在内存泄漏,我会非常惊讶。如果你有一个大问题,那么内存会随着任何合理的解算器而增长。在cplex的接口中是否可能存在内存泄漏?你的问题有多大?您是否正在运行多线程,因为每个线程都会获取问题的副本,因此会占用更多内存。
你不应该惊讶地发现其他解决方案需要比cplex更长的时间来解决你的问题。当然,对于任何大问题,自由求解器将比cplex慢得多。
答案 1 :(得分:0)
经过一些试验来修复MATLAB / CPLex API的内存使用问题(内存泄漏),在参考了一些研究后,我决定转而使用Gurobi求解器。对于纯LP问题,与CPlex相比,它似乎稍微慢一点,但这可能是由于我使用Gurobi的方式。与CPlex相比,有人可能会发现Gurobi更快。我建议在以前的帖子中提出不同的问题。以下是一些学术研究[线性优化问题的商业和自由开源求解器分析] [1]
[1]:http://www.statistik.tuwien.ac.at/forschung/CS/CS-2012-1complete.pdf