Originally posted by: SystemAdmin
The simplest case is if your two objectives are linear. As Paul pointed out you can formulate your problem as a weighted sum of the two linear objectives:
min c1'x + w * c2'x
s.t. constraints
then vary
w from 0 to a large positive number and resolve the problem for different values of
w using CPLEX warm-start techniques to get the Pareto front (efficient frontier).
You can also put one of the objectives into the constraint:
min c1'x
s.t. c2'x <= v
constraints
and resolve varying
v to get the efficient frontier. Make sure that you script uses warm-start to speed up the solution time, but the detailed implementation depends on which API you are using (Matlab, C, C++, Java, etc.).
With both formulations you get the approximated Pareto front (as you have discretized
w or
v ). You can also compute exact piecewise linear Pareto front using second formulation and CPLEX sensitivity analysis routines. In that case, you start with an initial
v and compute the endpoints
v1 and
v2 of the interval for
v where the current basis remain optimal. After that you move to the point (
v2 +
dv ), where
dv is a small number) and compute the new endpoints using CPLEX sensitivity analysis. In the current CPLEX version you cannot use sensitivity analysis with the weighted sum formulation as CPLEX does it only for a single constraint or a single coefficient in the objective, while you need to do it for all coefficients of the vector
c2 in the objective to compute
w1 and
w2 from (c1'x + w * c2'x).
If at least one of your objectives is not linear, but convex quadratic, you cannot use CPLEX sensitivity analysis as it is available for linear optimization problems only. In that case you just compute approximate Pareto front using one of the two formulations (weighted sum formulation of
v -constrained formulation) and discretizing
w or
v.
Alternative way to solve bi-objective optimization problem is to use parametric optimization techniques. You can call CPLEX from Yalmip to produce Pareto fronts with parametric optimization.
#CPLEXOptimizers#DecisionOptimization