Let’s consider the following model:
model = Model(with_optimizer(Ipopt.Optimizer))
@variable(model, x >= 0)
@variable(model, y >= 1)
Then the macro @objective
can be used both as:
@objective(model, Min, x+2*y)
or
@objective model Min begin
x+2*y
end
The macro @NLobjective however can be used only as:
@NLobjective(model, Min, exp(x)+y)
But NOT as:
@NLobjective model Min begin
exp(x)+y
end
The above script would indeed lead to weird error messages.
Should it be reported as a bug ?
The best solution for me would be to uniform the two APIs, but at least a better error message could be provided…