Почему стратегия выбора переменной CPLEX влияет на решения пользовательского ветвления? (Python)

Я последовал примеру перехода с помощью make_branch () в обратном вызове control (branch) MIP. Но я заметил, что процессы решения удивительно различаются при разных настройках стратегии выбора переменных. Как это было возможно, если я заменил все решения CPLEX своими решениями?


person Icarus    schedule 20.02.2020    source источник


Ответы (1)


CPLEX не может сказать, собираетесь ли вы запрашивать его решения о ветвлении из обратного вызова или нет. Поэтому перед вызовом обратного вызова CPLEX вычисляет, по каким переменным он будет переходить, чтобы эту информацию можно было сообщить обратному вызову.

Даже если вы никогда не запрашиваете эту информацию, она все равно вычисляется, и вычисления этой информации могут изменить остальную часть выполнения, что приведет к другим деревьям поиска.

person Daniel Junglas    schedule 20.02.2020