Оценка выражения pyscipopt после оптимизации

#python #scip

#python #scip

Вопрос:

У меня есть вопрос относительно PySCIPOpt: возможно ли вычислять выражения (pyscipopt.scip.Expr) после оптимизации? Аналогично вызову getVal() для аргументов типа pyscipopt.scip.Variable.

Ответ №1:

(пока) невозможно запросить действие общего ограничения. Это возможно только для линейных и квадратичных ограничений, см. http://scip-interfaces.github.io/PySCIPOpt/docs/html/classpyscipopt_1_1scip_1_1Model.html#a1e79bf20f168f7c55aa3fdf00491c898

Вы могли бы превратить свое выражение в уравнение и проверить значение новой переменной slack:

 c(x) >= b
  

превращается в

 c(x) - s == 0
s >= b
  

Комментарии:

1. Спасибо за ваш ответ. Я говорю не только об ограничениях. Например. если у меня есть переменная, которой присвоен x = scipModel.addVar (vtype=’C’, name = ‘x’, lb = 0, ub = 1) и указано y = 10 * x, тогда y присваивается тип pyscipopt.scip.Expr. Возможно ли оценить y позже?

2. Я понимаю. Для этого потребуется расширение класса Expr. Я полагаю, было бы весьма полезно. github.com/SCIP-Interfaces/PySCIPOpt/issues/280