# metric_tracker

Track changes in the non-dominated frontier

**Specification**

*Alias:*None*Arguments:*None*Default:*metric_tracker

**Description**

The moga converger ( `metric_tracker`

) operates by tracking various
changes in the non-dominated frontier from generation to
generation. When the changes occurring over a user specified number of
generations fall below a user specified threshold, the algorithm
stops.

If `metric_tracker`

is specified, then a `percent_change`

and
`num_generations`

must be supplied as well. These are listed as
optional keywords in the input spec.

**Theory**

The `metric_tracker`

converger tracks 3 metrics specific to the
non-dominated frontier from generation to generation. All 3 of these
metrics are computed as percent changes between the generations. In
order to compute these metrics, the converger stores a duplicate of
the non-dominated frontier at each generation for comparison to the
non-dominated frontier of the next generation.

The first metric is one that indicates how the expanse of the frontier is changing. The expanse along a given objective is defined by the range of values existing within the non-dominated set. The expansion metric is computed by tracking the extremes of the non-dominated frontier from one generation to the next. Any movement of the extreme values is noticed and the maximum percentage movement is computed as:

```
range(j, i-1)) j=1,nof \endverbatim where Em is the max expansion
metric, j is the objective function index, i is the current generation
number, and nof is the total number of objectives. The range is the
difference between the largest value along an objective and the
smallest when considering only non-dominated designs.
The second metric monitors changes in the density of the non-dominated
set. The density metric is computed as the number of non-dominated
points divided by the hypervolume of the non-dominated region of
space. Therefore, changes in the density can be caused by changes in
the number of non-dominated points or by changes in size of the
non-dominated space or both. The size of the non-dominated space is
computed as:
```

```
Vps(i) = product over j of range(j, i) j=1,nof
```

where Vps(i) is the hypervolume of the non-dominated space at generation i and all other terms have the same meanings as above.

The density of the a given non-dominated space is then:

```
Dps(i) = Pct(i) / Vps(i)
```

where Pct(i) is the number of points on the non-dominated frontier at generation i.

The percentage increase in density of the frontier is then calculated as

```
Cd = abs((Dps(i) - Dps(i-1)) / Dps(i-1))
```

where Cd is the change in density metric.

The final metric is one that monitors the “goodness” of the non-dominated frontier. This metric is computed by considering each design in the previous population and determining if it is dominated by any designs in the current population. All that are determined to be dominated are counted. The metric is the ratio of the number that are dominated to the total number that exist in the previous population.

As mentioned above, each of these metrics is a percentage. The tracker records the largest of these three at each generation. Once the recorded percentage is below the supplied percent change for the supplied number of generations consecutively, the algorithm is converged.