Я хочу решить задачу целочисленного программирования, в которой переменные решения ограничены определенным набором.
Например, переменные решения xi должны быть выбраны в [2,5,7,10].
Для тестирования я написал код Python с помощью Pyomo следующим образом:
from pyomo.environ import *
model = AbstractModel()
model.X = Set(initialize=[2, 5, 7, 10])
model.x = Var(within=model.X)
model.obj = Objective(expr=model.x+1)
m = model.create_instance()
opt = SolverFactory("glpk")
results = opt.solve(m)
Когда эти коды выполняются, я получил сообщение об ошибке: «TypeError: недопустимый тип домена для переменной с именем 'x'. Переменная не является непрерывной, целочисленной или двоичной»
Вот мои вопросы:
- В чем причина этой ошибки?
- Как с этим бороться?
- Есть ли другие инструменты оптимизации, которые могут справиться с подобными проблемами?
Спасибо за помощь!