Я хотел бы получить суффиксы .rc или .urc для моих переменных из решателя cplex, используя Pyomo с интерфейсом NL / ASL. Этот интерфейс обычно быстрее, чем интерфейс cplex по умолчанию для моих моделей. Однако я не могу заставить интерфейс NL возвращать эти суффиксы. Если я использую решатель cplex с параметрами по умолчанию, я получаю значения для суффикса rc. Однако, если я использую solver_io = 'nl' или устанавливаю для решателя значение 'cplexamp' (что, как мне кажется, делает то же самое), я не получаю значений rc. (Я могу получить двойные, но не rc.)
Вот пример кода:
from pyomo.environ import *
from pyomo.opt import SolverFactory
def show_rc(m, *args, **kwargs):
opt = SolverFactory(*args, **kwargs)
results = opt.solve(m, suffixes=['rc'])
m.solutions.load_from(results)
m.rc.pprint()
m = ConcreteModel()
m.X = Var(bounds=(0, 1))
m.obj = Objective(rule=lambda m: 3.14 * m.X, sense=maximize)
m.rc = Suffix(direction=Suffix.IMPORT, datatype=Suffix.FLOAT)
show_rc(m, "cplex") # has value 3.14
show_rc(m, "cplex", solver_io="nl") # no value returned
show_rc(m, "cplexamp") # no value returned
В документации конкретно упоминается снижение затрат с помощью суффикса, а Суффикс .rc кажется стандартным местом для этого в AMPL, но мне не удалось прочитать это через интерфейс Pyomo NL. Может кто-то указать мне верное направление?