`Fresa.Point`

— TypePoint (`x`

) in the search space along with objective function values (`z[]`

) and feasbility indication (`g`

). The type of `x`

is problem specific. `z[]`

and `g`

hold `Float64`

values. `g`

should be of length 1.

When evaluating the objective function, `f`

in the constructor, the value returned will be a `Tuple`

if both the objective function value and the measure of infeasibility are specified. If a tuple is not returned, the return value will be taken to be the objective function value and the feasibility measure will be assumed to be 0.0, i.e. a feasible point in the search domain.

`Fresa.solve`

— MethodSolve an optimisation problem, defined as the minimization of the values returned by the objective function, `f`

. `f`

returns not only the objective function values, an array of `Float64`

values, but also a measure of feasibility (≤0) or infeasibility (>0). The problem is solved using the Fresa algorithm. `p0`

is the initial population which has to have at least one member, a `Point`

, and `domain`

describes the search domain. This latter argument is an instance of the `Fresa.Domain`

struct which has a `lower`

and an `upper`

members which are functions to be evaluated with a current point in the domain.

The return values for the solution of a single criterion problem are the best point and the full population at the end of the search.

For a multi-objective problem, the returned values are the set of indices for the points within the full population (the second returned value) approximating the *Pareto* front.

The population will consist of an array of `Fresa.Point`

objects, each of which will have the point in the search space, the objective function value and the feasibility measure.

`Fresa.vectorfitness`

— MethodFor single objective problems, the fitness is simply the normalised objective function value.

For multi-objective cases, there are three alternative measures of fitness ranking possible. The first is based on the Hadamard product of the rank of each member of population accoring to each criterion. The second is based on a weighted Borda ranking based on each criterion ranking. Finally, a measure based on dominance, similar to that used by the popular NSGA-II genetic algorithm, is available.