Given a list of sample points ,I want to find a target point which satisfy:
- the total distance to each points is minimum
- 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 ?