This single objective version below works just fine:

using JuMP
using Ipopt
S, L, U = 1000, 15, 40
N = 54
r = rand(54, 2)
model = Model(Ipopt.Optimizer)
@variable(model, s[i=1:N], start=14)
@NLexpression(model, obj1, sum( r[i,1] / s[i] for i in 1:N))
@NLexpression(model, obj2, sum( r[i,2] / s[i] for i in 1:N))
@NLobjective(
model,
Min,
obj1 + obj2
)
@constraint(model, L .≤ s .≤ U)
@constraint(model, sum(s) ≤ S)
JuMP.optimize!(model)
value.(s)

If I change the objective to this:

@NLobjective(
model,
Min,
[obj1, obj2]
)

I get an Unsupported expression error. Is it because of the solver I’m using? If someone can point me in the right direction, it would be very much appreciated!

I did try that but I don’t understand it well enough to know if what I’m doing should even be expected to work. I tried the following two variations and they both produce the same Unsupported expression error:

import HiGHS
import MultiObjectiveAlgorithms as MOA
model = JuMP.Model(() -> MOA.Optimizer(HiGHS.Optimizer))

model = JuMP.Model(() -> MOA.Optimizer(Ipopt.Optimizer))

I haven’t tried multi-objective JuMP yet, but the tutorials (Simple multi-objective examples · JuMP) seem to suggest that there is an additional step which looks somewhat like this