Blended Objectives/Linear Combination

I am writing a optimization problem where I have a Utilitarian objective and MaxMin Objective. I want to have a third objective that is a linear combination of the two aka a blended objective. I am using Gurobi. My model is defined as follows

model = Model(Gurobi.Optimizer)

I see that Gurobi supports blended objectives, but does julia?

If it does, how would I go about implementing this? For example here are my Utilitarian and MaxMin objectives where u[r] is a decision variable and the rest are static variables

@objective(model, Max, sum(b_dict[r] * (p_dict[r] * u[r]) for r in od))

for r in od
     @constraint(model, t <=  p_dict[r] * u[r])
end
@objective(model,Max, t)

JuMP does not support multi-objective problems.

When you write

@objective(model, Max, x)
@objective(model, Max, y)

we are replacing the single objective, not adding a new one.

For your “blended” objective, I assume you mean something like a weighted-sum approach? I would do something like this:

@variable(model, obj[1:2])
@constraint(model, obj[1] <= sum(b_dict[r] * (p_dict[r] * u[r]) for r in od))
for r in od
     @constraint(model, obj[2] <=  p_dict[r] * u[r])
end
l = 0.5
@objective(model, Max, l * obj[1] + (1 - l) * obj[2])

By varying l between 0.0 and 1.0, you can recover the support non-dominated points of the Pareto frontier (if the problem is a linear program. If MIP, things are more difficult).

For other approaches:

1 Like

This is exactly what I meant. Thank you!

1 Like