我将 Gurobi 与具有 26 个二进制变量和 26*4 交互项的 MIQP 一起使用,没有任何其他约束。速度已经很慢了......我想问一下 MIQP 求解器的最新技术是什么。通常它可以处理多少变量或者我们需要手动输入线性化技术以提高速度。谢谢:)
混合整数二次规划,最先进
对于 LP、MILP 和 QP,Gurobi 和 CPLEX 被认为是同类最佳的。他们以至少一个数量级的优势击败了任何开源通用求解器。我看不出为什么 QP 会有所不同。两家公司都有专门的团队来梳理用于构建分支定界树的各种切割的文献,并采用启发式算法在算法的不同点尝试这些不同的切割时表现良好。两种求解器还具有复杂的预求解例程,可对输入优化问题进行预处理,以加快预处理后使用的求解器算法,与不使用这些预求解例程的等效求解器相比,这些例程通常在求解时间上有很大差异。
“击败 CPLEX 和 Gurobi”的一种方法是利用结构,这已在随机编程中成功完成。对于您的问题,如果没有更多信息,很难说您是否可以利用结构来加快解决时间。配方对 MILP 和 MINLP 很重要,所以如果它对 MIQP 也很重要,我不会感到惊讶。您还可以尝试解决问题的替代公式,看看是否可以得到更好的结果,或者尝试查看 Gurobi 求解器的详细输出,看看是否可以更改求解器输入参数以加快求解时间。
我还要说变量的数量是问题难度的一个非常粗略的指标。更重要的是需要探索多少分支定界树。那里有很多不需要枚举分支定界树的大问题实例。我不经常使用 MIQP,但对于 MILP,我已经成功地解决了具有数千个整数变量的问题实例,因为必须枚举分支定界树的一小部分。显然,如果您的问题非常大(例如,数十万个没有特殊结构的整数变量),那么直接解决 MILP 是不可能的,您必须满足于解决松弛问题,或者找到一个最优性差距较大的可行点。在你的情况下,
在为求解器提供完整性削减方面,我不知道您是否可以这样做,但从理论上讲,如果您知道如何提供良好的削减,那将是有价值的。
对于另一种方法,您可以尝试使用 MINLP 求解器。最先进的代码是 BARON,但还有其他代码,比如 Couenne 等等。BARON 通常在 MINLP 上表现最好,但并不是所有问题的普遍速度最快的代码。你也可以看看一些专门用于二次问题的东西。GLOMIQO 确实适用于 MIQCQP,但可以解决您的问题。BARON 和 GLOMIQO 都与 GAMS 捆绑在一起,因此如果没有 IP 类型的问题,您可以尝试将您的问题提交到 NEOS 服务器,看看是否能更快地得到解决方案。