NLParameter

Is there any way to register an NLParameter as part of a Model? For example, I would like to create a model

model = Model(Ipopt.Optimizer)
@variable(model, x)
@NLParameter(model, p == 0)
@NLobjective(model, Min, (x + p)^2)

and then access model[:p] so that I can update the value with set_value(model[:p], 1). I’d like to do this so that if I have multiple models, then I can just update all the parameters like

for m in models
    set_value(m[:p], 1)
end

Just do:

model = Model(Ipopt.Optimizer)
@variable(model, x)
@NLparameter(model, p == 0)
@NLobjective(model, Min, (x + p)^2)
model[:p] = p
set_value(model[:p], 2)

Update your packages. This was added in JuMP v0.22.

julia> using JuMP

julia> model = Model();

julia> @NLparameter(model, p == 0)
"p == 0.0"

julia> model[:p]
"p == 0.0"

(tmp) pkg> st
      Status `/private/tmp/Project.toml`
  [4076af6c] JuMP v0.22.1
1 Like