I can be completely lost as I do not use this kinda of optimization, but
using JuMP, Ipopt
function myfun(x :: T, y :: T) where {T <: Real}
X = zeros(T, 10,10);
X .+= x;
res1 = x^2 - sqrt(y);
res2 = x + log(y);
return maximum(abs.([res1;res2]));
end
model = Model(Ipopt.Optimizer)
JuMP.register(model, :myfun, 2, myfun, autodiff=true)
@variable(model, x >= 0.0, start=2.0)
@variable(model, y >= 0.0, start=0.7)
@NLobjective(model, Min, myfun(x,y))
optimize!(model)
gives
ERROR: LoadError: DomainError with -9.995576033539066e-9:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x))
and my tentative of fixing it (that may not be correct)
res1 = x^2 - sqrt(abs(y));
res2 = x + log(abs(y));
Seems to work.