Как использовать результат функции на каждом узле в Cplex Python API? - PullRequest
0 голосов
/ 03 мая 2020

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

РЕДАКТИРОВАТЬ:

class call4clone(CPX_CB.BranchCallback):
       def __call__(self):
         print("Up-Var: ", self.get_upper_bounds(), "Down-Var: ",self.get_lower_bounds(), sep="\n")

def MyCode():
    cplexorig = cplx.Cplex("LPassign.LP")
    //Create Clone
    clone = cplx.Cplex(cplexorig)
    clone.set_problem_type(clone.problem_type.LP)
    clone.register_callback(call4clone)
    clone.solve()
    vars = list(range(clone.variables.get_num()))
    result = clone.advanced.strong_branching(vars, itlim)
    print("result of Up and Down StrongBranching: ",result)
    ...
    cplexorig.solve()

1 Ответ

2 голосов
/ 04 мая 2020

Метод strong_branching не предназначен для вызова на узлах LP. Вы можете сделать следующее:

  1. Создать копию / клон вашей модели.
  2. Зарегистрировать обратный вызов (обратный вызов устаревшей ветви или общий вызов c с контекстом BRANCHING) )
  3. В обратном вызове выберите границы локальной переменной в текущем узле, примените их к вашей копии модели и вызову strong_branch для этой копии.
...