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)
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).