【问题标题】:Why is SCIP taking so long and taking so much memory?为什么 SCIP 需要这么长时间并占用这么多内存?
【发布时间】:2015-08-11 22:17:13
【问题描述】:

我在 matlab 的 OPTI 工具箱中使用 SCIP 求解器来求解具有整数约束的二次优化问题。我使用以下规格运行它,它已经运行了一天,并且已经在我的系统中占用了 55GB 的内存并且还在计数。我是matlab优化的新手,我做错了什么还是这很常见?我尝试使用更少的 maxnodes 和 maxtime,但在这些情况下,程序会因“达到节点限制”错误而停止。这是代码(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)

【问题讨论】:

  • 第一行创建的X未被使用。
  • 我使用它创建了目标函数'fun',并在 opti() 中使用该函数。我应该如何使用它?
  • 该代码似乎适用于 16x1 X 矢量并在一秒钟内终止。

标签: matlab optimization nonlinear-optimization scip


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2011-08-27
    • 2011-12-07
    • 2017-09-14
    相关资源
    最近更新 更多