Skip to main content

Combining Objectives

Many optimization problems require solving multiple objectives.

Lexicographic Combination

Z3 uses by default a lexicographic priority of objectives. It solves first for the objective that is declared first.

It is also possible to declare multiple classes of soft assertions. To do this, use an optional tag to differentiate classes of soft assertions. The first tag group A is given precedence over the second group B that is introduced later.

Pareto Fronts

To override lexicographic priorities, set the option opt.priority to Pareto.

Independent Objectives

If we just want to find the optimal value for each objective, set the option opt.priority to box.