Unable to retrieve solution after solving JuMP model

The y variables and con constraints are not defined in the function solveModel. You must have separate variables defined in your REPL that are missing a solver.

Option 1: use model[:y1] and model[:con1] to get the values.

function solveModel(model)
    set_optimizer(model, CPLEX.Optimizer) 
    optimize!(model)
    y1, y2, y3 = model[:y1], model[:y2], model[:y3]
    con1, con2, con3, con4 = model[:con1], model[:con2], model[:con3], model[:con4]
    sol = (value.(y1), value.(y2), value.(y3)) 
    dualVars = (dual.(con1), dual.(con2), dual.(con3), dual.(con4))
    return objective_value(model), sol, dualVars
end

Option 2: pass to solveModel

solution = solveModel(model, [y1, y2, y3], [con1, con2, con3, con4])

function solveModel(model, y, con)
    set_optimizer(model, CPLEX.Optimizer) 
    optimize!(model)
    return objective_value(model), value.(y), dual.(con)
end

Here is more documentation:
https://jump.dev/JuMP.jl/stable/variables/#What-is-a-JuMP-variable?-1
https://jump.dev/JuMP.jl/stable/constraints/#The-@constraint-macro-1

3 Likes