我觉得我错过了一些非常简单和直接的东西。我试图在求解LP之后添加一个约束(使用最优LP解决方案作为设计此约束的机制)。我是通过这段代码添加它的
432 SCIP_CONS * cons = nullptr;
433 namebuf.str("");
434 namebuf<<"cut_3_OR1";
435 SCIP_CALL(SCIPcreateConsLinear(scip, &cons, namebuf.str().c_str(), 0, nullptr, nullptr, -SCIPinfinity(scip), 1.0, /* <= 1.0 constraint */
436 true, /* initial <= 0 */
437 false, /* separate */
438 true, /* enforce */
439 true, /* check */
440 true, /* propagate */
441 false, /* local */
442 true, /* modifiable */
443 false, /* dynamic */
444 false, /* removable */
445 false /* stickingatnode */));代码编译得很好,但是在运行代码时,我收到以下错误消息
[src/scip/scip_cons.c:991] ERROR: invalid SCIP stage <10>
[src/scip/cons_linear.c:17695] ERROR: Error <-8> in function call
[src/Solver.h:445] ERROR: Error <-8> in function call
make: *** [run] Error 1当我删除此约束添加时,代码将编译并运行。
有人能告诉我出了什么问题吗?
发布于 2020-02-21 18:29:51
阶段10是SCIP_STAGE_SOLVED。在问题解决到最优状态后,您可以尝试添加约束。是否需要添加要添加的约束?然后,您可能必须实现一个约束处理程序,并在处理程序的sepalp-callback中添加您的约束。作为示例,您可以查看SCIP文档中的TSP示例(它有一个子回路消除约束处理程序)
https://stackoverflow.com/questions/60336204
复制相似问题