Как устранить ошибку: неверный этап SCIP <10> в SCIP C ++ - PullRequest
1 голос
/ 21 февраля 2020

Я чувствую, что мне не хватает чего-то очень простого и очень простого. Я пытаюсь добавить ограничение после того, как 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

Код компилируется и запускается, когда я убрать это ограничение дополнения.

Может кто-нибудь сказать мне, что не так?

1 Ответ

1 голос
/ 21 февраля 2020

Стадия 10 - SCIP_STAGE_SOLVED. Вы пытаетесь добавить ограничение после того, как ваша проблема будет решена до оптимальности Требуется ли ограничение, которое вы хотите добавить? Тогда вам, возможно, придется реализовать обработчик ограничений и добавить свое ограничение в sepalp-callback вашего обработчика. В качестве примера вы можете посмотреть пример TSP в документации по SCIP (в нем есть обработчик ограничения удаления подуровня)

...