为什么 SCIP 需要这么长时间并占用这么多内存?

Why is SCIP taking so long and taking so much memory?

我在 matlab 的 OPTI 工具箱中使用 SCIP 求解器来求解具有整数约束的二次优化问题。我 运行 它具有以下规格,它已经 运行 一天了,并且已经在我的系统中占用了 55GB 的 ram,并且还在计数。我是 matlab 优化的新手,我做错了什么还是这很常见?我尝试使用较少的 maxnodes 和 maxtime,但在这些情况下程序会因 'Node limit reached' 错误而停止。这是代码(H、Aeq 等已在代码的前面定义)-

X = sym('X%d%d', [104 1]);
fun = @(X) 1/2*X'*H*X;
options = optiset('solver', 'SCIP', 'maxnodes', 20000000, 'maxtime', 100000);
Opt = opti('fun', fun, 'eq', Aeq, Beq, 'xtype', xtype, 'options', options);
[xval,fval,exitflag,info] = solve(Opt)

如果二次函数是非凸函数,这并不罕见。这很容易导致无法在任何合理有限的时间内用当今的算法解决证明最优性的难题。请注意,这不仅取决于问题的大小,而且通常较小的问题(类似类型)会更容易。

话虽如此,SCIP 可能已经找到了即使超过时间或节点限制也可以访问的接近最优的解决方案。