Unsupported expression in JuMP

Given a list of sample points ,I want to find a target point which satisfy:

  1. the total distance to each points is minimum
  2. the largest distance to the target point is minimum
function optimize_factory_13(xx,yy)
    model = Model(() -> MOA.Optimizer(Ipopt.Optimizer));set_silent(model)
    set_attribute(model,MOA.Algorithm(),MOA.EpsilonConstraint())
    set_attribute(model,MOA.SolutionLimit(),10)
    @variable(model,-R <= x[1:2] <= R)
    @NLexpression(model,sumDist,sum(sqrt((xx[i]-x[1])^2 + (yy[i]-x[2])^2) for i in 1:N))
    @NLexpression(model,maxDist,maximum(sqrt((xx[i]-x[1])^2 + (yy[i]-x[2])^2) for i in 1:N))
    @NLobjective(model,Min,[sumDist,maxDist])
#     print(model)
    optimize!(model)
end

And something goes wrong with:

Unsupported expression: [subexpression[1]: sqrt((25.099036859598073 - x[1]) ^ 2.0 + (14.51339190667243 - x[2]) ^ 2.0) + sqrt((-20.29518358369601 - x[1]) ^ 2.0 + (-3.318531596118946 - x[2]) ^ 2.0)...

Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:35
 [2] _parse_expression(stack::Vector{Tuple{Int64, Any}}, data::MathOptInterface.Nonlinear.Model, expr::MathOptInterface.Nonlinear.Expression, x::Expr, parent_index::Int64)
   @ MathOptInterface.Nonlinear C:\Users\ASUS\.julia\packages\MathOptInterface\864xP\src\Nonlinear\parse.jl:127
 [3] parse_expression(data::MathOptInterface.Nonlinear.Model, expr::MathOptInterface.Nonlinear.Expression, x::Expr, parent_index::Int64)
   @ MathOptInterface.Nonlinear C:\Users\.julia\packages\MathOptInterface\864xP\src\Nonlinear\parse.jl:102
 [4] parse_expression
   @ C:\Users\.julia\packages\MathOptInterface\864xP\src\Nonlinear\parse.jl:14 [inlined]
 [5] set_objective
   @ C:\Users\.julia\packages\MathOptInterface\864xP\src\Nonlinear\model.jl:43 [inlined]
 [6] set_nonlinear_objective(model::Model, sense::MathOptInterface.OptimizationSense, x::Expr)
   @ JuMP C:\Users\.julia\packages\JuMP\H2SWp\src\nlp.jl:167
 [7] macro expansion
   @ C:\Users\.julia\packages\JuMP\H2SWp\src\macros.jl:2721 [inlined]
 [8] optimize_factory_13(xx::Vector{Float64}, yy::Vector{Float64})
   @ Main .\In[43]:8
 [9] top-level scope
   @ In[43]:12

So how to correct it ?

Unfortunately, multi-objective nonlinear programs are not directly supported just yet (although they will be in an upcoming release of JuMP. The WIP PR is Add support for VectorNonlinearFunction objectives by odow · Pull Request #68 · jump-dev/MultiObjectiveAlgorithms.jl · GitHub).

For now, you’ll need a small reformulation:

function optimize_factory_13(xx,yy)
    model = Model(() -> MOA.Optimizer(Ipopt.Optimizer));set_silent(model)
    set_attribute(model,MOA.Algorithm(),MOA.EpsilonConstraint())
    set_attribute(model,MOA.SolutionLimit(),10)
    @variable(model,-R <= x[1:2] <= R)
    @variable(model, sumDist)
    @variable(model, maxDist)
    @NLconstraint(model, sumDist >= sum(sqrt((xx[i]-x[1])^2 + (yy[i]-x[2])^2) for i in 1:N))
    @NLconstraint(model, maxDist >= maximum(sqrt((xx[i]-x[1])^2 + (yy[i]-x[2])^2) for i in 1:N))
    @objective(model, Min, [sumDist, maxDist])
    optimize!(model)
end