GEATbx: Main page  Tutorial  Algorithms  M-functions  Parameter/Options  Example functions  www.geatbx.com

# 6 Multi-objective Optimization in the GEATbx

Multi-objective optimization is a very important optimization class. Many real-world problems ask for multiple objective values to approach the problem in its many facetes. The GEATbx supports multi-objective optimization fully integerated into the "standard" behavior. However, there are quite a few special or additional aspects to take into account.

One advise: thinking in a multi-objective way is not always straightforward. More than once I had to check my conclusions (and change them in the end). Multiple objectives and the answer to the question, which solution(s) is/are really better than another can be confusing.

If multi-objective optimization is new to you, please stop reading here and get the basics by reading the Chapter 'Multi-objective Optimization' in "GEATbx Introduction".

If your objective function uses one or multiple objective values per individual is not important for the GEATbx. Single-objective optimization is "just" a special case of multi-objective optimization. The objectivce values of the population are always handled in a matrix. In the single-objective case this matrix has only one column.

Even when the objective function returns multiple objectives, the GEATbx can use only the first objective for fitness assignment. The additional objectives are only used to save more objectives, which may be used for later reporting or problem-specific visualization. BTW, this was the way the GEATbx handled complex problems a few years ago. Multiple objectives were aggregated using the weighted sum approach. The additional objectives helped to get a closer look at the multiple aspects of real world problems.

## 6.1 Switch on multi-objective ranking

When multi-objective ranking (multi-objective optimization) should be used, it must be explicitly switched on. This is handled by the option Selection.RankingMultiobj. A value of 0 employs single-objective ranking, a value of 1 or larger multi-objective ranking.

`GeaOpt = geaoptset(GeaOpt, 'Selection.RankingMultiobj', 1);`

An example for multi-objective ranking and the visualization of such functions is provided in demomop.

## 6.2 Visualization of multi-objective solutions

A visualization of the multi-objective solutions in search space and in solution space is part of the GEATbx (implemented in plotmop).

The visualization is triggered by the option Selection.RankingMultiobj. A value larger than 10 enables the visualization. Higher values display the visualization only every defined generation-10.

To display the multi-objective optimization every generation, use:

`GeaOpt = geaoptset(GeaOpt, 'Selection.RankingMultiobj', 11);`

If the visualization should be displayed every 5 generations, set the option to 15:

`GeaOpt = geaoptset(GeaOpt, 'Selection.RankingMultiobj', 15);`

## 6.3 Definition of goals in objective functions

Goals provide a way to "exclude" solutions, which are not good enough in one of the objectives. This is not done by a strong exclusion. Instead, solutions complying with the goal(s) are favored compared to worse solutions.

It is nearly always useful, to define goals for the multiple objective values.

`GeaOpt = geaoptset(GeaOpt, 'System.ObjFunGoals', [-1.3, 4, 2, 0]);`

Goals are problem-specific values. For some of the provided multi-objective example functions, a set of goals is defined inside the objective function (see mobjdebconstr). For other multi-objective example functions goals are defined in the demo function demomop.

Goals can be seen as a soft constraint or boundary. Thus, goals can be used for an efficient constraint handling technique employed by most of the constraint example functions of the GEATbx, see Chapter

## 6.4 Archive - collect and reinsert good solutions

Collection of good individuals is implemented in colbestind.

 GEATbx: Main page  Tutorial  Algorithms  M-functions  Parameter/Options  Example functions  www.geatbx.com

This document is part of version 3.8 of the GEATbx: Genetic and Evolutionary Algorithm Toolbox for use with Matlab - www.geatbx.com.
The Genetic and Evolutionary Algorithm Toolbox is not public domain.