No need to use eval_constraint
. This should point you in the right direction:
julia> using JuMP
julia> model = Model();
julia> @variable(model, x >= 0)
x
julia> @constraint(model, c, 2x <= 1)
c : 2 x ≤ 1.0
julia> @NLconstraint(model, nl_con, 0 <= sin(x) <= 0.5)
0 ≤ sin(x) ≤ 0.5
julia> variable_values = Dict(v => rand() for v in all_variables(model))
Dict{VariableRef, Float64} with 1 entry:
x => 0.379509
julia> cons = all_constraints(model; include_variable_in_set_constraints = true)
3-element Vector{ConstraintRef}:
c : 2 x ≤ 1.0
x ≥ 0.0
0 ≤ sin(x) ≤ 0.5
julia> sol = Dict(c => value(xi -> variable_values[xi], c) for c in cons)
Dict{ConstraintRef{Model, C, ScalarShape} where C, Float64} with 3 entries:
0 ≤ sin(x) ≤ 0.5 => 0.370465
x ≥ 0.0 => 0.379509
c : 2 x ≤ 1.0 => 0.759019
julia> sol[c]
0.759018812310488
julia> sol[nl_con]
0.37046482764020316
julia> sol[LowerBoundRef(x)]
0.379509406155244