New multiobjective optimization features in CPLEX V12.9.0

CPLEX V12.9.0 offers new features to implement multiobjective optimization.

Optimization problems with multiple linear objective functions can be specified in CPLEX. To solve them, CPLEX offers a mixture of blended and lexicographic (or hierarchical) optimization.

A blended objective consists of simply the linear combination of several objectives with given weights.

A lexicographic objective supposes that an order has been given among the various objective functions. This order allows you to define a lexicographic order among solutions: a solution is lexicographically smaller than another one if, in the first objective where they differ (following the order), it is smaller. An optimal solution is then one that is lexicographically minimal (or maximal depending on the optimization sense).

CPLEX can combine both blended and lexicographic objectives in the same optimization problem.

For more information about multiobjective optimization in CPLEX, see the topic Multiobjective optimization in the CPLEX User's Manual.

Using parameter sets with multiobjective optimization

During the solution process, you may prefer that optimization problems with different priorities are solved with different parameter settings. CPLEX makes this possible by using parameter sets.

For more information about using parameter sets with multiobjective optimization, see Parameter sets in the CPLEX Callable Library (C API) Reference Manual and Parameter sets in the CPLEX User's Manual.

Implementing multiobjective optimization in the C API

For a list of new routines, macros, error codes, modeling information codes, and solution status codes that enable you to implement multiobjective optimization in the C API, see Multiobjective optimization in the CPLEX Callable Library (C API) Reference Manual.

Implementing multiobjective optimization in other APIs

You can implement multiobjective optimization in the C++, Java, .NET, and Python APIs. Please see the following sections for more information:

New examples for multiobjective optimization

The new multiobjex1 example demonstrates how to read in and optimize a multiobjective problem.

  • examples/src/c_x/xmultiobjex1.c
  • examples/src/c/multiobjex1.c
  • examples/src/cpp/ilomultiobjex1.cpp
  • examples/src/java/MultiObjEx1.java
  • examples/src/cs/MultiObjEx1.cs
  • examples/src/python/multiobjex1.py

The diet example has been modified to demonstrate how to model a multiobjective problem by optionally creating a second objective.

  • examples/src/c_x/xdiet.c
  • examples/src/c/diet.c
  • examples/src/cpp/ilodiet.cpp
  • examples/src/java/Diet.java
  • examples/src/cs/Diet.cs
  • examples/src/python/diet.py

File formats for multiobjective optimization

For information about multiobjective optimization in LP file format, see the topic Multiobjective optimization in LP file format in File Formats Supported by CPLEX .

For information about multiobjective optimization in MPS file format, see the topic Multiobjective optimization in MPS files in File Formats Supported by CPLEX .