Что означают события, которые включает в себя `SCIP_EVENTTYPE_NODESOLVED`? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь поймать изменение двойной границы, используя обработчик событий. В type_event.h нет события для перехвата этого , поэтому я хочу использовать событие SCIP_EVENTTYPE_NODEFEASIBLE.

Меня немного смущает связь между событиями, которые SCIP_EVENTTYPE_NODESOLVED состоит из (SCIP_EVENTTYPE_NODEFEASIBLE, SCIP_EVENTTYPE_NODEINFEASIBLE и SCIP_EVENTTYPE_NODEBRANCHED).Эти события не пересекаются?Что они конкретно значат?ИМХО, документация не очень ясна по этому поводу.

Мое предположение следующее (при условии, что три события не пересекаются):

  • SCIP_EVENTTYPE_NODEFEASIBLE: LP в этом узлеявляется неотъемлемой частью.
  • SCIP_EVENTTYPE_NODEINFEASIBLE: узел недопустим или был удален с помощью границы.
  • SCIP_EVENTTYPE_NODEBRANCHED: решение LP в этом узле дробное и ветвление выполнено.

Заранее спасибо!

1 Ответ

3 голосов
/ 27 июня 2019

Ваше предположение почти верно.A SCIP_EVENTTYPE_NODEINFEASIBLE выбрасывается, если текущий узел фокуса обнаружен как недопустимый, либо путем распространения, либо после решения узла LP.

Однако удаление открытых узлов в дереве путем сокращения происходит только после того, как найдено новое действующее решение.Это внутреннее действие дерева, которое не зафиксировано ни одним событием .

К счастью, вам не нужно об этом беспокоиться, потому что обрезка не влияет на двойную границу.Просто запросите двойную границу в каждом SCIP_EVENTTYPE_NODESOLVED.

...