Considering multi objective vs iterative single objective
回答済みI have a utility function I want to minimize in my MILP, and I have an (integer) budget variable that influences utility.
If I model the problem as a single objective problem, then my budget is exhausted every time I solve it.
model.setObjective(utility, sense="minimize")
One way I am comfortable optimizing utility with the lowest budget is to solve my model iteratively.
BUDGET = 1I am considering reframing my model such that budget is a decision variable in a multi-objective problem.
while BUDGET < len(MAX_BUDGET):
run_model()
if model.status == GRB.Status.OPTIMAL:
break
BUDGET += 1
m.setObjectiveN(utility, 0, priorety=0)
m.setObjectiveN(budget, 1, priorety=1)
-
正式なコメント
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum, or try Gurobot, our chatbot interface offering instant, expert-level support. -
If I define the objectives below, will they have the same effect as the loop above?
No, the effect is slightly different.
You compute a Pareto front with your loop. Your approach can be seen as an alteration of the \(\epsilon\)-method. It computes several points on the Pareto front of a multi-objective optimization problem. Thus, you as the decision maker have the freedom of choice between multiple optimal solution with varying budget/utility relationships.
Gurobi will compute exactly one point on the Pareto front. It will optimize for budget first, then add a constraint to the model which does not allow to degrade the budget up to some tolerance, and finally optimize for utility. This means that Gurobi will provide the optimal point where the budget is at its minimum and you will not have the choice that you have in your first approach. For more details on Gurobi's multi-objective feature, please refer to the documentation.
Your approach is often a better one as it provides more flexibility of choice. However, if each optimization takes a long time then using Gurobi's multi-objective feature may be the way to go.
Best regards,
Jaromił0
投稿コメントは受け付けていません。
コメント
2件のコメント