Until now, I used CPLEX to solve single-objective optimization problems only, but now I need to solve a two-objective mixed-integer linear optimization problem and I noticed that CPLEX 12.6.9 (unlike its previous versions) is able to accomplish this.
So, I'm wondering about two questions:
- Which algorithm does CPLEX use to solve two-objective problems?
Maybe this piece of text (copied from CPLEX Official Page) could answer my question..
The CPLEX multiobjective optimization algorithm sorts the objectives by decreasing priority value. If several objectives have the same priority, they are blended in a single objective using the weight attributes provided. As a result, CPLEX constructs a sorted list of objectives (or blended objectives), each with a unique priority. CPLEX can then proceed to find the lexicographically minimal (or maximal) solution for this order. To obtain this solution, each objective is optimized in turn by decreasing order of the priority value in a hierarchical manner. Whenever the optimal solution for an objective (or blended objective) is found, CPLEX imposes that, for the remaining (lower priority) objectives, the only solutions considered are those that are also optimal for the previously (higher priority) optimized objectives.
What are the main advantages/disadvantages between, solving a two-objective optimization problem:
a) by passing it directly as a two-objective problem to CPLEX, or
b) by solving it, in CPLEX, by adopting the "Augmented Epsilon-Constraint Method"?
I guess that a) could allow writing less code, but I don't know anything about differences in terms of efficiency, computational time, etc.
Moreover, I'm wondering if these two methods may generate different solutions.