Dual number is unidentified by OpenModelica while using user-defined function with autodiff in JuMP!

See further down for the f_prime example. Here is a clearer example:

using JuMP, Ipopt
f(x, y) = (x - 1)^2 + y^2
function ∇f(g, x, y)
    g[1] = 2 * (x - 1)
    g[2] = 2 * y
    return
end
model = Model(Ipopt.Optimizer)
@variable(model, x >= 0)
@variable(model, y >= 1)
register(model, :f, 2, f, ∇f)
@NLobjective(model, Min, f(x, y))
optimize!(model)
objective_value(model)
3 Likes