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