如何在 JuMP 中将新变量添加到已经存在的变量集(基于 SparseAxisArray)?

How to add a new variable to an already existing set of variables (based on a SparseAxisArray) in JuMP?

我目前正在使用 JuMP 模型,我在其中定义了以下示例变量:

using JuMP
N = 3
outN = [[4,5],[1,3],[5,7]]

m = Model()
@variable(m, x[i=1:N,j in outN[i]] >=0)

在某些时候,我想添加,例如,一个变量x[1,7]。我怎样才能有效地做到这一点?同样,之后如何删除它?除了将其固定为 0 之外,还有其他选择吗?

提前致谢

你最好只使用字典:

using JuMP
N = 3
outN = [[4,5],[1,3],[5,7]]

model = Model()
x = Dict(
    (i, j) => @variable(model, lower_bound = 0, base_name = "x[$i, $j]")
    for i in 1:N for j in outN[i]
)
x[1, 7] = @variable(model, lower_bound = 0)
delete(model, x[1, 4])
delete!(x, (1, 4))

JuMP 不会限制您仅使用内置变量容器:https://jump.dev/JuMP.jl/stable/variables/#User-defined-containers-1