eafplot | R Documentation |
Computes and plots the Empirical Attainment Function (EAF), either as attainment surfaces for certain percentiles or as points.
eafplot(x, ...)
## Default S3 method:
eafplot(
x,
sets,
groups = NULL,
percentiles = c(0, 50, 100),
attsurfs = NULL,
maximise = c(FALSE, FALSE),
type = "point",
xlab = NULL,
ylab = NULL,
xlim = NULL,
ylim = NULL,
log = "",
col = NULL,
lty = c("dashed", "solid", "solid", "solid", "dashed"),
lwd = 1.75,
pch = NA,
cex.pch = par("cex"),
las = par("las"),
legend.pos = paste0(ifelse(maximise[1L], "bottom", "top"), ifelse(rep_len(maximise,
2L)[2L], "left", "right")),
legend.txt = NULL,
extra.points = NULL,
extra.legend = NULL,
extra.pch = 4:25,
extra.lwd = 0.5,
extra.lty = NA,
extra.col = "black",
xaxis.side = "below",
yaxis.side = "left",
axes = TRUE,
sci.notation = FALSE,
...
)
## S3 method for class 'list'
eafplot(x, ...)
x |
Either a matrix of data values, or a data frame, or a list of data frames of exactly three columns. |
... |
Other graphical parameters to |
sets |
Vector indicating which set each point belongs to. Will be coerced to a factor. |
groups |
This may be used to plot data for different algorithms on the same plot. Will be coerced to a factor. |
percentiles |
( |
attsurfs |
TODO |
maximise |
( |
type |
( |
xlab , ylab , xlim , ylim , log , col , lty , lwd , pch , cex.pch , las |
Graphical
parameters, see |
legend.pos |
( |
legend.txt |
( |
extra.points |
A list of matrices or data.frames with
two-columns. Each element of the list defines a set of points, or
lines if one of the columns is |
extra.legend |
A character vector providing labels for the groups of points. |
extra.pch , extra.lwd , extra.lty , extra.col |
Control the graphical aspect
of the points. See |
xaxis.side |
( |
yaxis.side |
( |
axes |
( |
sci.notation |
( |
This function can be used to plot random sets of points like those obtained by different runs of biobjective stochastic optimisation algorithms \citepLopPaqStu09emaamoocore. An EAF curve represents the boundary separating points that are known to be attainable (that is, dominated in Pareto sense) in at least a fraction (quantile) of the runs from those that are not \citepGrunert01moocore. The median EAF represents the curve where the fraction of attainable points is 50%. In single objective optimisation the function can be used to plot the profile of solution quality over time of a collection of runs of a stochastic optimizer \citepLopVerDreDoe2025mooplot.
The attainment surfaces computed (invisibly).
eafplot(default)
: Main function
eafplot(list)
: List interface for lists of data.frames or matrices
moocore::read_datasets()
eafdiffplot()
pdf_crop()
extdata_path <- system.file(package = "moocore", "extdata")
A1 <- read_datasets(file.path(extdata_path, "ALG_1_dat.xz"))
A2 <- read_datasets(file.path(extdata_path, "ALG_2_dat.xz"))
eafplot(A1, percentiles = 50, sci.notation = TRUE, cex.axis=0.6)
# The attainment surfaces are returned invisibly.
attsurfs <- eafplot(list(A1 = A1, A2 = A2), percentiles = 50)
str(attsurfs)
## Save as a PDF file.
# dev.copy2pdf(file = "eaf.pdf", onefile = TRUE, width = 5, height = 4)
## Using extra.points
data(HybridGA, package="moocore")
data(SPEA2relativeVanzyl, package="moocore")
eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75),
xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400),
extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA")
data(SPEA2relativeRichmond, package="moocore")
eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75),
xlab = expression(C[E]), ylab = "Total switches",
xlim = c(90, 140), ylim = c(0, 25),
extra.points = HybridGA$richmond, extra.lty = "dashed",
extra.legend = "Hybrid GA")
eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75),
xlab = expression(C[E]), ylab = "Total switches",
xlim = c(90, 140), ylim = c(0, 25), type = "area",
extra.points = HybridGA$richmond, extra.lty = "dashed",
extra.legend = "Hybrid GA", legend.pos = "bottomright")
data(SPEA2minstoptimeRichmond, package="moocore")
SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60
eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]),
ylab = "Minimum idle time (minutes)", maximise = c(FALSE, TRUE),
las = 1, log = "y", main = "SPEA2 (Richmond)",
legend.pos = "bottomright")
data(tpls50x20_1_MWT, package="moocore")
eafplot(tpls50x20_1_MWT[, c(2,3)], sets = tpls50x20_1_MWT[,4L],
groups = tpls50x20_1_MWT[["algorithm"]])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.