Title: | Evolutionary Multiobjective Optimization Algorithms |
---|---|
Description: | Collection of building blocks for the design and analysis of evolutionary multiobjective optimization algorithms. |
Authors: | Olaf Mersmann [aut, cre] |
Maintainer: | Olaf Mersmann <[email protected]> |
License: | GPL-2 |
Version: | 0.5-3 |
Built: | 2025-02-01 05:43:25 UTC |
Source: | https://github.com/olafmersmann/emoa |
This package provides functions to construct evolutionary multiobjective optimization algorithms (EMOA). The long term goal is to also provide standard implementations of the most common EMOA in use today.
Without the hard work of many researchers who have published their source code under a liberal license, this package would not have been possible. In alphabetical order they are
Michael H. Buselli
Wessel Dankers
Carlos Fonseca
Joshua Knowles
Huang Ling
Wudong Liu
Manuel Lopez-Ibanez
Luis Paquete
Ponnuthurai Nagaratnam Suganthany
Santosh Tiwar
Qingfu Zhang
Aimin Zhou
Shizheng Zhaoy
Olaf Mersmann [email protected]
This data set contains the hypervolume and R2 indicator results of the 8 different algorithms that took part in the CEC 2007 multiobjective optimization benchmark.
data(cec2007)
data(cec2007)
A data frame with 456 observations of the following 9 variables.
algo
Abbreviated name of algorithm
fun
Name of benchmark function
d
Dimension of objective space
n
Number of function evaluations
metric
Name of quality metric
pdef
Unique id for each combination of fun
,
d
, n
and metric
best
Largest value of metric
median
Median value of metric
worst
Smallest value of metric
mean
Average value of metric
std
Standard deviation of metric
Formerly available at http://web.mysites.ntu.edu.sg/epnsugan/PublicSite/Shared%20Documents/CEC2007-final-pdfs.zip
## Not run: data(cec2007) require(lattice) print(dotplot(algo ~ median | fun + metric, cec2007, groups=cec2007$n)) ## End(Not run)
## Not run: data(cec2007) require(lattice) print(dotplot(algo ~ median | fun + metric, cec2007, groups=cec2007$n)) ## End(Not run)
This function is useful when processing complex arguments with multiple possible defaults based on other arguments that may or may not have been provided.
coalesce(...)
coalesce(...)
... |
List of values. |
First non null element in ...
.
Olaf Mersmann [email protected]
Calculate crowding distances.
crowding_distance(front)
crowding_distance(front)
front |
matrix of function values. |
crowding distance for each function value.
Olaf Mersmann [email protected]
Calculate the dominance matrix of a set of points
dominance_matrix(points)
dominance_matrix(points)
points |
Matrix containing points one per column. |
Dominance matrix
dominated_hypervolume
calculates the dominated hypervolume of
the points in points
.
dominated_hypervolume(points, ref) hypervolume_contribution(points, ref)
dominated_hypervolume(points, ref) hypervolume_contribution(points, ref)
points |
Matrix containing the points one per column. |
ref |
Optional reference point. If not provided the maximum in each dimension is used. |
hypervolume_contribution
calculates the hypervolume
contribution of each point.
If no reference point ref
is given, one is automatically
calculated by determening the maximum in each coordinate.
Currently only one general algorithm is implemented due to Fonseca et.al. but work is underway to include others such as the Beume & Rudolph approach as well as the approach by Bradstreet et.al.
The 1D and 2D cases are handle seperately by efficient algorithms.
Calculates the exact dominated hypervolume of the points given in
x
subject to the reference point ref
.
For dominated_hypervolume
the dominated hypervolume
by the points in points
with respect to the reference point
ref
. For hypervolume_contribution
a vector giving
the hypervolume soley dominated by that point.
Olaf Mersmann [email protected]
This code uses version 1.3 of the hypervolume code available from https://lopez-ibanez.eu/hypervolume. For a description of the algorithm see
Carlos M. Fonseca, Luis Paquete, and Manuel Lopez-Ibanez. An improved dimension-sweep algorithm for the hypervolume indicator. In IEEE Congress on Evolutionary Computation, pages 1157-1163, Vancouver, Canada, July 2006.
nondominated_points
to extract the pareto
front approximation from a given set of points and
nds_hv_selection
for a selection strategy based on
the hypervolume contribution of each point.
Logger object that outputs log messages to the console
emoa_console_logger(...)
emoa_console_logger(...)
... |
passed to |
This is a wrapper that calls emoa_logger(output=output,
...)
internally and returns that logger.
An emoa_logger
object.
The following control parameters are recognized by emoa_control
:
emoa_logger
object used to log events.
Number of parameters, defaults to the length of the longer
of upper
or lower
.
Number of dimensions.
emoa_control(f, upper, lower, ..., control, default)
emoa_control(f, upper, lower, ..., control, default)
f |
Multiobjectve optimization function. |
upper |
Upper bounds of parameter space. |
lower |
Lower bounds of parameter space. |
... |
Further arguments passed to |
control |
List of control parameters. |
default |
List of default control parameters. |
The control
list with suitably adjusted
arguments. Missing control parameters are taken from
default
or, if not present there, from an internal default.
Olaf Mersmann [email protected]
Basic logger object with a flexible output routine.
emoa_logger(output, every = 10L, ...)
emoa_logger(output, every = 10L, ...)
output |
function used to display logging messages. |
every |
number of steps of the emoa between evaluations. |
... |
passed to the parent logger factory. |
An emoa_logger
object.
emoa_console_logger
and
emoa_null_logger
for convinience wrappers around
emoa_logger
providing useful defaults.
Logger object that discards all log events.
emoa_null_logger(...)
emoa_null_logger(...)
... |
ignored. |
An emoa_logger
object.
Calculates the quality indicator value of the set of points given in
x
with respect to the set given in o
. As with all
functions in emoa
that deal with sets of objective values
these are stored by column.
hypervolume_indicator(points, o, ref) epsilon_indicator(points, o) r1_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff") r2_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff") r3_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff")
hypervolume_indicator(points, o, ref) epsilon_indicator(points, o) r1_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff") r2_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff") r3_indicator(points, o, ideal, nadir, lambda, utility = "Tchebycheff")
points |
Matrix of points for which to calculate the indicator value stored one per column. |
o |
Matrix of points of the reference set. |
ref |
Reference point, if omitted, the nadir of the point sets is used. |
ideal |
Ideal point of true Pareto front. If omited the ideal of both point sets is used. |
nadir |
Nadir of the true Pareto front. If ommited the nadir of both point sets is used. |
lambda |
Number of weight vectors to use in estimating the utility. |
utility |
Name of utility function. |
Value of the quality indicator.
Olaf Mersmann [email protected]
Zitzler, E., Thiele, L., Laumanns, M., Fonseca, C., and Grunert da Fonseca, V (2003): Performance Assessment of Multiobjective Optimizers: An Analysis and Review. IEEE Transactions on Evolutionary Computation, 7(2), 117-132.
Clip to the interval
. This is useful to enforce
box constraints.
inbounds(x, l, u)
inbounds(x, l, u)
x |
Value to clip. |
l |
Lower limit. |
u |
Upper limit. |
l if x < l, u if x > u else x.
Olaf Mersmann [email protected]
is_dominated
returns which points from a set are dominated
by another point in the set. %dominates%
returns true if
x
Pareto dominates y
and
is_maximally_dominated
returns TRUE for those points which
do not dominate any other points.
is_dominated(points) is_maximally_dominated(points)
is_dominated(points) is_maximally_dominated(points)
points |
Matrix containing points one per column. |
For is_dominated
and is_maximally_dominated
a boolean vector and for %dominates%
a single boolean.
Olaf Mersmann [email protected]
Selection strategies for EMOA.
nds_hv_selection(values, n = 1, ...) nds_cd_selection(values, n = 1, ...)
nds_hv_selection(values, n = 1, ...) nds_cd_selection(values, n = 1, ...)
values |
Matrix of function values. |
n |
Number of individuals to select for replacement. |
... |
Optional parameters passed to
|
The currently implemented strategies are nondominated sorting followed by either hypervolume contribution or crowding distance based ranking. Both of these implementations are currently limited to selecting a single individual for replacement.
Olaf Mersmann [email protected]
Perform (partial) nondominated sort of the points in points
and
return the rank of each point.
nds_rank(points, partial) nondominated_ordering(points, partial)
nds_rank(points, partial) nondominated_ordering(points, partial)
points |
Matrix containing points one per column. |
partial |
Optional integer specifying the number of points for which the rank should be calculated. Defaults to all points. |
Vector containing the ranks of the first partial
individuals or all individuals.
Olaf Mersmann [email protected]
Return those points which are not dominated by another point in
points
. This is the Pareto front approximation of the
point set.
nondominated_points(points)
nondominated_points(points)
points |
Matrix of points, one per column. |
Those points in points
which are not dominated by
another point.
Olaf Mersmann [email protected]
Rescale all points to lie in the box bounded by minval
and maxval
.
normalize_points(points, minval, maxval)
normalize_points(points, minval, maxval)
points |
Matrix containing points, one per column. |
minval |
Optional lower limits for the new bounding box. |
maxval |
Optional upper limits for the new bounding box. |
Scaled points.
Olaf Mersmann [email protected]
Control parameters:
Nu parameter of PM.
p parameter of PM.
pm_control(f, upper, lower, ..., control, default = list())
pm_control(f, upper, lower, ..., control, default = list())
f |
Multiobjectve optimization function. |
upper |
Upper bounds of parameter space. |
lower |
Lower bounds of parameter space. |
... |
Further arguments passed to |
control |
List of control parameters. |
default |
List of default control parameters. |
The control
list with suitably adjusted
arguments. Missing control parameters are taken from
default
or, if not present there, from an internal default.
Olaf Mersmann [email protected]
Returns a polynomial mutation operator with the given parameters.
pm_operator(n, p, lower, upper)
pm_operator(n, p, lower, upper)
n |
Distance parameter mutation distribution ( |
p |
Probability of one point mutation. |
lower |
Lower bounds of parameter space. |
upper |
Upper bounds of parameter space. |
Function which implements the specified mutation operator.
Olaf Mersmann [email protected]
sbx_control
interprets the following parameters used to
control the behaviour of the simulated binary crossover operator
(see sbx_operator
):
Nu parameter of SBX.
$p$ parameter of SBX.
sbx_control(f, upper, lower, ..., control, default = list())
sbx_control(f, upper, lower, ..., control, default = list())
f |
Multiobjectve optimization function. |
upper |
Upper bounds of parameter space. |
lower |
Lower bounds of parameter space. |
... |
Further arguments passed to |
control |
List of control parameters. |
default |
List of default control parameters. |
The control
list with suitably adjusted
arguments. Missing control parameters are taken from
default
or, if not present there, from an internal default.
Olaf Mersmann [email protected]
Returns a simulated binary crossover operator with the given parameters.
sbx_operator(n, p, lower, upper)
sbx_operator(n, p, lower, upper)
n |
Distance parameter of crossover distribution ( |
p |
Probability of one point crossover. |
lower |
Lower bounds of parameter space. |
upper |
Upper bounds of parameter space. |
Function with one parameter x
which takes a matrix
containing two sets of parameters and returns a matrix of two sets of
parameters which resulted from the crossover operation. As with all
emoa
functions, the parameter sets are stored in the columns
of x
. x
should therefore always have two columns and a
warning will be given if it has more than two columns.
Olaf Mersmann [email protected]
steady_state_emoa_control
interprets the following control
parameters:
Population size.
Maximum number of function evaluations to use.
steady_state_emoa_control(f, upper, lower, ..., control, default = list())
steady_state_emoa_control(f, upper, lower, ..., control, default = list())
f |
Multiobjectve optimization function. |
upper |
Upper bounds of parameter space. |
lower |
Lower bounds of parameter space. |
... |
Further arguments passed to |
control |
List of control parameters. |
default |
List of default control parameters. |
The control
list with suitably adjusted
arguments. Missing control parameters are taken from
default
or, if not present there, from an internal default.
Olaf Mersmann [email protected]
Functions from the CEC 2007 EMOA competition.
sympart(x)
sympart(x)
x |
Parmater vector. |
Function value.
Olaf Mersmann [email protected]
Functions from the CEC 2009 EMOA competition.
UF1(x) UF2(x) UF3(x) UF4(x) UF5(x) UF6(x) UF7(x) UF8(x) UF9(x) UF10(x)
UF1(x) UF2(x) UF3(x) UF4(x) UF5(x) UF6(x) UF7(x) UF8(x) UF9(x) UF10(x)
x |
Parmater vector. |
Function value.
Olaf Mersmann [email protected]
Unary R2 indicator
unary_r2_indicator(points, weights, ideal)
unary_r2_indicator(points, weights, ideal)
points |
Matrix of points for which to calculate the indicator value stored one per column. |
weights |
Matrix of weight vectors stored one per column. |
ideal |
Ideal point of true Pareto front. If omited the ideal
of |
Value of unary R2 indicator.
Olaf Mersmann [email protected]
Determine which points are on the edge of a Pareto-front approximation.
which_points_on_edge(front)
which_points_on_edge(front)
front |
Pareto-front approximation. |
An integer vector containing the indicies of the points
(columns) of front
which are on the edge of the
Pareto-front approximation.
Olaf Mersmann [email protected]