# Two-Objective Optimization in CPLEX

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:

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

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

The augmented $$\varepsilon$$-constraint method is designed to generate all non-dominated outcome vectors to a bi-objective (or multi objective) optimization problem, whereas a lexicographic optimization approach is designed to generate one particular non-dominated outcome vector to bi-objective (or multiobjective) problem. So it all depends on what you want to achieve. Given that a lexicographic optimal solution is one among many efficient solutions one should expect that using an $$\varepsilon$$-constraint method to generate all efficient solutions is computationally much harder than just finding a lexicographic optimum. To explicitly address your last question : a) gives you one solution and b) gives you a set of solutions.
As Sune noted, the $$\epsilon$$-constraint method is not comparable to what CPLEX does, since it finds all Pareto efficient solutions. In case you were thinking of option 2 as finding a lexicographic optimum by optimizing the highest priority objective, constraining it to be optimal, optimizing the next highest priority objective etc. (similar to but not the same as the $$\epsilon$$-constraint method), I would expect CPLEX's version to be more efficient.