Получить значения переменных оптимизации с выражением - PullRequest
0 голосов
/ 26 марта 2019

Я использую PySCIPOpt для решения проблемы ILP. Тип переменных, которые я использую, является двоичным или целочисленным.

При получении переменных с использованием model.getVal(VariableName) я получаю эту ошибку для некоторых переменных:

TypeError: Argument 'var' has incorrect type (expected pyscipopt.scip.Variable, got pyscipopt.scip.Expr)

Это связано с тем, что для этих переменных PySCIPOpt возвращает выражение вместо значения. Выражение выглядит так:

{1: Expr({Term(): 0.0, Term(W(14,10)): 0.0,
 Term(W(14,9)): 0.0, Term(W(1,2)): 0.0,
 Term(W(13,10)): 0.0, Term(W(4,3)): 0.0,
 Term(W(13,9)): 0.0, Term(W(5,3)): 0.0,
 Term(W(12,10)): 0.0, Term(W(12,9)): 0.0,
 Term(W(2,2)): 0.0, Term(W(9,7)): 0.0,
 Term(W(11,10)): 0.0, Term(W(2,1)): 1.0}

Можно ли заставить PySCIPOpt возвращать значение?

Я попытался изменить тип переменной с целого на непрерывный, но это не меняет того факта, что вместо значения возвращается выражение.

Я ожидаю, что PySCIPOpt вернет одно значение, а не полное выражение, представляющее зависимость между интересующей переменной и другими переменными.

Спасибо

1 Ответ

0 голосов
/ 26 марта 2019

Проблема заключалась в том, что для этого конкретного ограничения я забыл добавить model.addCons ().Что меня смутило, так это то, что SCIP все еще действовала и разрешилась.

...