% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/Algorithm.R
\name{addAlgorithm}
\alias{addAlgorithm}
\alias{Algorithm}
\alias{removeAlgorithms}
\title{Define Algorithms for Experiments}
\usage{
addAlgorithm(name, fun = NULL, reg = getDefaultRegistry())

removeAlgorithms(name, reg = getDefaultRegistry())
}
\arguments{
\item{name}{[\code{character(1)}]\cr
Unique identifier for the algorithm.}

\item{fun}{[\code{function}]\cr
  The algorithm function. The static problem part is passed as \dQuote{data}, the generated
  problem instance is passed as \dQuote{instance} and the \code{\link{Job}}/\code{\link{Experiment}} as \dQuote{job}.
  Therefore, your function must have the formal arguments \dQuote{job}, \dQuote{data} and \dQuote{instance} (or dots \code{...}).

  If you do not provide a function, it defaults to a function which just returns the instance.}

\item{reg}{[\code{\link{ExperimentRegistry}}]\cr
Registry. If not explicitly passed, uses the last created registry.}
}
\value{
[\code{Algorithm}]. Object of class \dQuote{Algorithm}.
}
\description{
Algorithms are functions which get the code{data} part as well as the problem instance (the return value of the
function defined in \code{\link{Problem}}) and return an arbitrary R object.

This function serializes all components to the file system and registers the algorithm in the \code{\link{ExperimentRegistry}}.

\code{removeAlgorithm} removes all jobs from the registry which depend on the specific algorithm.
\code{reg$algorithms} holds the IDs of already defined algorithms.
}
\seealso{
\code{\link{Problem}}, \code{\link{addExperiments}}
}
