Find Pareto front of multiple fitness functions using genetic algorithm

`x = gamultiobj(fun,nvars)`

`x = gamultiobj(fun,nvars,A,b)`

`x = gamultiobj(fun,nvars,A,b,Aeq,beq)`

`x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub)`

`x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)`

`x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,options)`

```
x =
gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
```

`x = gamultiobj(problem)`

```
[x,fval]
= gamultiobj(___)
```

```
[x,fval,exitflag,output]
= gamultiobj(___)
```

```
[x,fval,exitflag,output,population,scores]
= gamultiobj(___)
```

finds `x`

= gamultiobj(`fun`

,`nvars`

)`x`

on the Pareto Front of the objective functions defined in
`fun`

. `nvars`

is the dimension of the
optimization problem (number of decision variables). The solution
`x`

is local, which means it might not be on the global Pareto
front.

Passing Extra Parameters (Optimization Toolbox) explains how to pass extra parameters to the objective function and nonlinear constraint functions, if necessary.

finds a local Pareto set `x`

= gamultiobj(`fun`

,`nvars`

,`A`

,`b`

,`Aeq`

,`beq`

)`x`

subject to the linear equalities $$Aeq\ast x=beq$$ and the linear inequalities $$A\ast x\le b$$, see Linear Equality Constraints (Optimization Toolbox). (Set
`A = []`

and `b = []`

if
no inequalities exist.) `gamultiobj`

supports linear constraints
only for the default `PopulationType`

option
(`'doubleVector'`

).

defines a set of lower and upper bounds on the design variables `x`

= gamultiobj(`fun`

,`nvars`

,`A`

,`b`

,`Aeq`

,`beq`

,`lb`

,`ub`

)`x`

so that a local Pareto set is found in the range
`lb `

≤` x `

≤` ub`

,
see Bound Constraints (Optimization Toolbox). Use empty matrices
for `Aeq`

and `beq`

if no linear equality
constraints exist. `gamultiobj`

supports bound constraints only
for the default `PopulationType`

option
(`'doubleVector'`

).

finds a Pareto set subject to the constraints defined in `x`

= gamultiobj(`fun`

,`nvars`

,`A`

,`b`

,`Aeq`

,`beq`

,`lb`

,`ub`

,`nonlcon`

)`nonlcon`

.
The function `nonlcon`

accepts `x`

and returns
vectors `c`

and `ceq`

, representing the nonlinear
inequalities and equalities respectively. `gamultiobj`

minimizes
`fun`

such that
`c(x) `

≤` 0`

and
`ceq(x) = 0`

. (Set
`lb = []`

and `ub = []`

if
no bounds exist.) `gamultiobj`

supports nonlinear constraints
only for the default `PopulationType`

option
(`'doubleVector'`

).

finds
the Pareto set for `x`

= gamultiobj(`problem`

)`problem`

, where `problem`

is
a structure. Create `problem`

by exporting a problem
from the Optimization app, as described in Importing and Exporting Your Work (Optimization Toolbox).

`gamultiobj`

uses a controlled, elitist genetic algorithm (a variant of
NSGA-II [1]). An elitist GA always favors individuals with better fitness value (rank). A
controlled elitist GA also favors individuals that can help increase the diversity of
the population even if they have a lower fitness value. It is important to maintain the
diversity of population for convergence to an optimal Pareto front. Diversity is
maintained by controlling the elite members of the population as the algorithm
progresses. Two options, `ParetoFraction`

and
`DistanceMeasureFcn`

, control the elitism.
`ParetoFraction`

limits the number of individuals on the Pareto
front (elite members). The distance function, selected by
`DistanceMeasureFcn`

, helps to maintain diversity on a front by
favoring individuals that are relatively far away on the front. The algorithm stops if
the *spread*, a measure of the movement of the Pareto front, is
small. For details, see gamultiobj Algorithm.

[1] Deb, Kalyanmoy. *Multi-Objective
Optimization Using Evolutionary Algorithms*. Chichester,
England: John Wiley & Sons, 2001.