ecr: Evolutionary Computation in R

Framework for building evolutionary algorithms for both single- and multi-objective continuous or discrete optimization problems. A set of predefined evolutionary building blocks and operators is included. Moreover, the user can easily set up custom objective functions, operators, building blocks and representations sticking to few conventions. The package allows both a black-box approach for standard tasks (plug-and-play style) and a much more flexible white-box approach where the evolutionary cycle is written by hand.

Install the latest version of this package by entering the following in R:
AuthorJakob Bossek [aut, cre]
Date of publication2017-04-26 17:25:16 UTC
MaintainerJakob Bossek <>
LicenseBSD_2_clause + file LICENSE

View on CRAN

Man pages

asemoa: Implementation of the NSGA-II EMOA algorithm by Deb.

computeAverageHausdorffDistance: Average Hausdorff Distance computation.

computeCrowdingDistance: Compute the crowding distance of a set of points.

computeDistanceFromPointToSetOfPoints: Computes distance between a single point and set of points.

computeGenerationalDistance: Computes Generational Distance.

computeInvertedGenerationalDistance: Computes Inverted Generational Distance.

dominated: Check for pareto dominance.

dominated_hypervolume: Functions for the calculation of the dominated hypervolume...

dominates: Dominance relation check.

doNondominatedSorting: Fast non-dominated sorting algorithm.

ecr: Interface to 'ecr' similar to the 'optim' function.

ecr_parallelization: Parallelization in ecr

ecr_result: Result object.

emoa_indicators: Computation of the unary epsilon-indicator.

evaluateFitness: Computes the fitness value(s) for each individual of a given...

generateOffspring: Helper functions for offspring generation

generators: Population generators

getFront: Extract fitness values from Pareto archive.

getIndividuals: Extract individuals from Pareto archive.

getPopulations: Access to logged populations.

getSize: Get size of Pareto-archive.

getStatistics: Access the logged statistics.

getSupportedRepresentations: Get supported representations.

initECRControl: Control object generator.

initLogger: Initialize a log object.

initParetoArchive: Initialize Pareto Archive.

initPopulation: Helper function to build initial population.

isEcrOperator: Check if given function is an ecr operator.

is.supported: Check if ecr operator supports given representation.

makeECRMonitor: Factory method for monitor objects.

makeMutator: Construct a mutation operator.

makeOperator: Construct evolutionary operator.

makeOptimizationTask: Creates an optimization task.

makeRecombinator: Construct a recombination operator.

makeSelector: Construct a selection operator.

makeTerminator: Generate stopping condition.

mutBitflip: Bitplip mutator.

mutGauss: Gaussian mutator.

mutInsertion: Insertion mutator.

mutInversion: Inversion mutator.

mutPolynomial: Polynomial mutation.

mutScramble: Scramble mutator.

mutSwap: Swap mutator.

mutUniform: Uniform mutator.

normalizeFront: Normalize points of a set.

nsga2: Implementation of the NSGA-II EMOA algorithm by Deb.

plotFront: Plot Pareto-front.

plotStatistics: Generate line plot of logged statistics.

recCrossover: One-point crossover recombinator.

recIntermediate: Indermediate recombinator.

recOX: Ordered-Crossover (OX) recombinator.

recPMX: Partially-Mapped-Crossover (PMX) recombinator.

recSBX: Simulated Binary Crossover (SBX) recombinator.

reference_point_approximation: Reference point approximations.

registerECROperator: Register operators to control object.

replace: (mu + lambda) selection

selDomHV: Dominated Hypervolume selector.

select: Select individuals.

selGreedy: Simple "greedy" selector.

selNondom: Non-dominated sorting selector.

selRoulette: Roulette-wheel / fitness-proportional selector.

selSimple: Simple (naive) selector.

selTournament: k-Tournament selector.

setup: Set up parameters for evolutionary operator.

setupECRDefaultMonitor: Default monitor.

smsemoa: Implementation of the SMS-EMOA by Emmerich et al.

stoppingConditions: Stopping condition: maximum number of function evaluations.

toGG: Transform to long format.

updateLogger: Update the log.

updateParetoArchive: Update Pareto Archive.

which.dominated: Determine which points of a set are (non)dominated.

wrapChildren: Wrap the individuals constructed by a recombination operator.


approximateIdealPoint Man page
approximateNadirPoint Man page
asemoa Man page
computeAverageHausdorffDistance Man page
computeCrowdingDistance Man page
computeDistanceFromPointToSetOfPoints Man page
computeGenerationalDistance Man page
computeHV Man page
computeHVContr Man page
computeInvertedGenerationalDistance Man page
dominated Man page
dominates Man page
\%dominates\% Man page
doNondominatedSorting Man page
ecr Man page
ecr_parallelization Man page
ecr_result Man page
emoaIndEps Man page
emoaIndHV Man page
emoaIndR1 Man page
emoaIndR2 Man page
emoaIndR3 Man page
evaluateFitness Man page
gen Man page
genBin Man page
generateOffspring Man page
generators Man page
genPerm Man page
genReal Man page
getFront Man page
getIndividuals Man page
getPopulations Man page
getSize Man page
getStatistics Man page
getSupportedRepresentations Man page
initECRControl Man page
initLogger Man page
initParetoArchive Man page
initPopulation Man page
isDominated Man page
\%isDominatedBy\% Man page
isEcrOperator Man page
isMaximallyDominated Man page
is.supported Man page
makeECRMonitor Man page
makeMutator Man page
makeOperator Man page
makeOptimizationTask Man page
makeRecombinator Man page
makeSelector Man page
makeTerminator Man page
mutate Man page
mutBitflip Man page
mutGauss Man page
mutInsertion Man page
mutInversion Man page
mutPolynomial Man page
mutScramble Man page
mutSwap Man page
mutUniform Man page
nondominated Man page
normalizeFront Man page
nsga2 Man page
plotFront Man page
plotStatistics Man page
recCrossover Man page
recIntermediate Man page
recombinate Man page
recOX Man page
recPMX Man page
recSBX Man page
registerECROperator Man page
replace Man page
replaceMuCommaLambda Man page
replaceMuPlusLambda Man page
selDomHV Man page
select Man page
selectForMating Man page
selectForSurvival Man page
selGreedy Man page
selNondom Man page
selRoulette Man page
selSimple Man page
selTournament Man page
setup Man page
setupECRDefaultMonitor Man page
smsemoa Man page
stopOnEvals Man page
stopOnIters Man page
stoppingConditions Man page
toGG Man page
updateLogger Man page
updateParetoArchive Man page
which.dominated Man page
which.nondominated Man page
wrapChildren Man page


tests/testthat/test_terminators.R tests/testthat/test_approximatePoints.R tests/testthat/test_makeOptimizationTask.R tests/testthat/test_initPopulation.R tests/testthat/test_doNondominatedSorting.R tests/testthat/test_computeAverageHausdorffDistance.R tests/testthat/test_evaluateFitness.R tests/testthat/test_normalizeFront.R tests/testthat/test_initECRControl.R tests/testthat/test_paretoArchive.R tests/testthat/test_computeCrowdingDistance.R tests/testthat/test_dominates.R tests/testthat/test_ecr.R tests/testthat/test_emoa_indicators.R tests/testthat/test_emoa.R tests/testthat/test_mutators.R tests/testthat/helper_zzz.R tests/testthat/test_mutate.R tests/testthat/test_logger.R tests/testthat/test_plotFront.R
R/select.R R/computeAverageHausdorffDistance.R R/computeCrowdingDistance.R R/Result.R R/emoa.sms-emoa.R R/operator.recombinator.ox.R R/doTerminate.R R/generateOffspring.R R/operator.selector.greedy.R R/operator.recombinator.sbx.R R/operator.mutator.scramble.R R/initECRControl.R R/operator.recombinator.pmx.R R/operator.mutator.inversion.R R/initPopulation.R R/operator.mutator.swap.R R/operator.recombinator.intermediate.R R/makeSelector.R R/makeTerminator.R R/utilities.R R/getters.R R/replace.R R/monitor.default.R R/doNondominatedSorting.R R/emoa.indicators.R R/operator.mutator.bitflip.R R/paretoArchive.R R/computeHV.R R/operator.mutator.uniform.R R/setup.R R/operator.selector.simple.R R/terminators.R R/operator.mutator.insertion.R R/operator.selector.roulettewheel.R R/makeOptimizationTask.R R/operator.recombinator.crossover.R R/makeRecombinator.R R/operator.mutator.gauss.R R/evaluateFitness.R R/logger.default.R R/registerECRObject.R R/transformFitness.R R/makeOperator.R R/ecr.R R/ R/approximatePoints.R R/makeMonitor.R R/operator.selector.k-tournament.R R/operator.selector.nondom.R R/docs.parallelization.R R/operator.mutator.polynomial.R R/operator.selector.dominatedHypervolume.R R/dominates.R R/zzz.R R/makeMutator.R R/generators.R R/emoa.nsga2.R
man/asemoa.Rd man/computeInvertedGenerationalDistance.Rd man/selSimple.Rd man/wrapChildren.Rd man/recOX.Rd man/ecr_result.Rd man/mutGauss.Rd man/nsga2.Rd man/mutInversion.Rd man/which.dominated.Rd man/selGreedy.Rd man/recCrossover.Rd man/mutInsertion.Rd man/recIntermediate.Rd man/registerECROperator.Rd man/is.supported.Rd man/computeDistanceFromPointToSetOfPoints.Rd man/normalizeFront.Rd man/recSBX.Rd man/selNondom.Rd man/makeRecombinator.Rd man/getIndividuals.Rd man/mutUniform.Rd man/recPMX.Rd man/selRoulette.Rd man/ecr_parallelization.Rd man/makeMutator.Rd man/makeECRMonitor.Rd man/evaluateFitness.Rd man/stoppingConditions.Rd man/mutPolynomial.Rd man/reference_point_approximation.Rd man/initPopulation.Rd man/makeOptimizationTask.Rd man/replace.Rd man/selTournament.Rd man/plotStatistics.Rd man/smsemoa.Rd man/dominated.Rd man/generators.Rd man/computeGenerationalDistance.Rd man/plotFront.Rd man/dominates.Rd man/getFront.Rd man/computeAverageHausdorffDistance.Rd man/initParetoArchive.Rd man/emoa_indicators.Rd man/selDomHV.Rd man/isEcrOperator.Rd man/getSize.Rd man/ecr.Rd man/updateParetoArchive.Rd man/updateLogger.Rd man/makeOperator.Rd man/dominated_hypervolume.Rd man/makeTerminator.Rd man/doNondominatedSorting.Rd man/getStatistics.Rd man/initLogger.Rd man/getSupportedRepresentations.Rd man/mutSwap.Rd man/computeCrowdingDistance.Rd man/initECRControl.Rd man/generateOffspring.Rd man/mutBitflip.Rd man/setup.Rd man/mutScramble.Rd man/getPopulations.Rd man/makeSelector.Rd man/select.Rd man/setupECRDefaultMonitor.Rd man/toGG.Rd

Questions? Problems? Suggestions? or email at

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.