В моем алгоритме я динамически добавляю 3 разных набора ограничений к модели (m1
), которые затем сохраняю в 3 массивах ConstraintRef[]
(а именно a,b,c
). Количество добавляемых ограничений отличается от итерации к итерации. Мне также нужно получить доступ к двойным значениям этих ограничений после его решения, что для этой модели не является проблемой (например, dual.(a)
). Однако в какой-то момент моего алгоритма мне нужно решить копию моей модели (m2
). После ее решения я не могу запросить дуалы, так как в массивах a,b,c
нет никакой информации о m2
.
Есть ли способ связать/зарегистрировать имена массивов с моделью, чтобы при копировании модели я мог эффективно получать доступ к двойным значениям?
Обновление, вот небольшой пример:
using JuMP
using GLPK
a = ConstraintRef[]
m1 = Model(GLPK.Optimizer)
@variable(m1,x)
con1 = @constraint(m1, x==2)
push!(a,con1)
optimize!(m1)
d = dual.(a)
# (..) I keep adding constraints to 'a'
m2 = copy(m1)
set_optimizer(m2, GLPK.Optimizer)
# (..) I keep populating the set of constraints in 'a'
optimize!(m2)
Что я хочу сделать, так это получить двойники всех ограничений, включенных в a, но для m2
. Очевидно, что dual.(a)
не работает. Я добавляю ограничения как анонимные, потому что заранее не знаю, сколько мне нужно добавить на каждой итерации.