How to pass a SymPy expression supported by JuMP

It needs to be @NLobjective(model, Min, fn(x[1], x[2])).

using JuMP, SymPy, Ipopt
x = Sym("x")
y = Sym("y")
expr = x^2 + y
fn = lambdify(expr)
model = Model(Ipopt.Optimizer)
@variable(model, x[1:2] >= 0)
register(model, :fn, 2, fn; autodiff = true)
@NLobjective(model, Min, fn(x[1], x[2]))
optimize!(model)
2 Likes