python - CPLEX 和 Gurobi 之间的比较
问题描述
Gurobi 和 CPLEX 是近年来非常流行的求解器。就许可而言,CPLEX 对学者来说更容易。据说它的性能也非常高。但 Gurobi 据称是近年来最快的求解器,并且不断改进。但是,据说当约束数量增加时其性能会降低。
在速度和性能方面,对于没有太多约束的二次目标函数的大规模问题,一般推荐使用哪种求解器?
它们在 Python 中的使用会影响它们的性能吗?
解决方案
数学编程本质上是困难的,并且可能总是存在一个求解器比另一个求解器快的情况。通常,仅仅因为一些启发式方法是“幸运的”,问题就会很快得到解决。
此外,仅问题的大小并不是衡量其难度的可靠衡量标准。虽然我们可以在很短的时间内解决具有数百万个约束的实例,但仍有一些微小的实例尚未解决。
当您在寻找最佳性能时,您应该通过检查日志文件来分析求解器的行为,然后尝试相应地调整参数。如果你有机会测试不同的求解器,你应该去争取更多的选择。您应该谨慎对待针对任何已建立的、最先进的求解器的建议——尤其是在没有动手计算实验的情况下。
您还需要考虑建模环境/语言的难度以及完成建模部分可能需要多长时间。
回答您关于 Gurobi 的 Python 界面的问题:这是一个非常高性能和流行的工具,适用于各种应用程序,并且很可能不会影响整体求解时间。在大多数情况下,实际求解时间仍然是主要因素,而模型构建时间可以忽略不计。
推荐阅读
- python - 如何让我的程序输入从相机拍摄的图像?
- python - Python 包,最简单的例子不起作用。ModuleNotFoundError:没有名为“simple_package”的模块。十亿次
- python - 根据 pandas Python 中另一个数据帧的条件从一个数据帧中删除行
- reactjs - React-select 多个下拉 onChange 实现
- jenkins - 有没有办法查看詹金斯的工作有多少失败的构建?
- gitlab-ci - 将要持续的 Mkdocs gitlab-ci 模板,为什么要使用变体?
- flutter - “onError”处理程序无法返回“Null”类型的值
- php - Laravel 数据透视表与附加模型
- c++ - 为什么 C++ 中的函数没有 constexpr 参数?
- django - 多个用户使用 django-allauth 注册。两个注册表单未呈现