如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>

How to Resolve ERROR: invalid SCIP stage <10> in SCIP C++

本文关键字:SCIP 无效 gt lt 段无效 C++ 解决 何解决 错误 中的      更新时间:2023-10-16

我觉得我错过了一些非常简单和直接的东西。我试图在求解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

当我删除此添加的约束时,代码将编译并运行。

有人能告诉我怎么了吗?

第10阶段为SCIP_STAGE_SOLVED。你试图在你的问题被解决到最优性之后添加一个约束。是否需要添加约束?然后,您可能需要实现一个约束处理程序,并在处理程序的sepalp回调中添加约束。作为一个例子,您可以查看SCIP文档中的TSP示例(它有一个子路径消除约束处理程序(