Gurobi和CPLEX是近年来非常流行的求解器。CPLEX在许可证方面对学者来说更容易。据说它的性能也非常高。但Gurobi声称是近年来最快的求解器,并不断改进。然而,据说当约束的数量增加时,它的性能会下降。
在速度和性能方面,通常推荐哪个求解器专门用于具有二次目标函数的大规模问题,这些问题没有太多的约束?
它们在Python中的使用会影响它们的性能吗?
发布于 2020-10-27 17:49:10
数学编程本质上是困难的,并且可能总是会有一个求解器比另一个求解器更快的情况。通常,仅仅因为一些启发式方法是“幸运的”,问题就能很快得到解决。
此外,问题的大小本身并不是衡量其难度的可靠指标。虽然我们可以在很短的时间内解决数百万个约束的实例,但仍然有很小的实例没有解决。
当您正在寻找最佳性能时,您应该通过检查日志文件来分析求解器的行为,然后尝试相应地调整参数。如果你有机会测试不同的求解器,你应该去尝试一下,让它有更多可用的选项。对于任何一种已建立的、最先进的求解器,您都应该小心推荐-特别是在没有动手计算实验的情况下。
您还需要考虑建模环境/语言的难度,以及可能需要多少时间来完成建模部分。
回答你关于Gurobi的Python接口的问题:这是一个非常高性能和受欢迎的工具,适用于所有类型的应用程序,并且很可能不会影响整体求解时间。在大多数情况下,实际求解时间仍然是主导因素,而模型构建时间可以忽略不计。
发布于 2020-10-27 20:44:25
正如mattmilten已经说过的,如果你比较主要的商业解决方案在一系列问题上的表现,你会发现其中一个明显优于其他的实例。我们对我们自己的问题实例(另存为MPS文件)进行了并排比较,这些实例都是在一个大型优化问题的不同子问题上由相同的C++代码生成的。因此,它们本质上只是同一模型中的不同数据集,我们仍然在求解器之间发现了很大的差异。
https://stackoverflow.com/questions/64543863
复制相似问题