Skip to main content

Hierarchical optimization and RelTol

Answered

Comments

3 comments

  • Matthias Miltenberger
    Gurobi Staff Gurobi Staff

    Hi Alexia,

    Such degradation may occur depending on your settings. Please refer to this part of our documentation about Multiobjective optimization, especially the section about "Allowing Multiple-Objective Degradation".

    I hope that helps.

    Cheers,
    Matthias

    0
  • Alexia Payan
    Gurobi-versary
    First Comment
    Curious

    Hello Matthias,

    Thank you for your help. I am aware of the RelTol parameter for a hierarchical optimization but my rationale is as follows: 

    When optimizing the first objective, I am adding a penalty on the cost of adding one machine to the optimization to calculate the total revenue. Depending on the gap I get at the end of the revenue maximization, it is not guaranteed that the minimum number of machines were used.

    So, the purpose of the second objective function is to minimize the number of machines from the previously obtained solution, which is equivalent to using each machine more without degrading the revenue, hence the idea of RelTol = 0. My question is, if I choose to set RelTol to 0 to minimize the number of machines used, will Gurobi try to minimize the number of machines or will it think that since RelTol = 0, the revenue solution value needs to stay the same and hence no minimization can be made since reducing the number of machines would change the revenues?

    Maybe, I am missing something...

    Regards.

    0
  • Matthias Miltenberger
    Gurobi Staff Gurobi Staff

    Hi Alexia,

    When you set ObjNRelTol to 0 (which is the default value), Gurobi will not deteriorate the objective value from the previous optimization. But there may be other solutions with the same objective value that can be realized with a smaller number of machines. This is the main idea of multi-objective optimization and your approach sounds reasonable.

    Although, you should be careful about the cost definition in the first objective: If this already penalizes the number of machines, there is probably not much to optimize for the second objective making the multi-objective approach somewhat redundant.

    I hope this makes sense and I recommend formulating a smaller toy instance of your model to verify your implementation.

    Cheers,
    Matthias

    0

Please sign in to leave a comment.