rbga | R Documentation |
A R based genetic algorithm that optimizes, using a user set evaluation function, a set of floats. It takes as input minimum and maximum values for the floats to optimizes. The optimum is the chromosome for which the evaluation value is minimal.
It requires a evalFunc
method to be supplied that takes as argument
the chromosome, a vector of floats.
Additionally, the GA optimization can be monitored by setting a
monitorFunc
that takes a rbga
object as argument.
Results can be visualized with plot.rbga
and summarized with
summary.rbga
.
rbga(stringMin=c(), stringMax=c(), suggestions=NULL, popSize=200, iters=100, mutationChance=NA, elitism=NA, monitorFunc=NULL, evalFunc=NULL, showSettings=FALSE, verbose=FALSE)
stringMin |
vector with minimum values for each gene. |
stringMax |
vector with maximum values for each gene. |
suggestions |
optional list of suggested chromosomes |
popSize |
the population size. |
iters |
the number of iterations. |
mutationChance |
the chance that a gene in the chromosome mutates. By default 1/(size+1). It affects the convergence rate and the probing of search space: a low chance results in quicker convergence, while a high chance increases the span of the search space. |
elitism |
the number of chromosomes that are kept into the next generation. By default is about 20% of the population size. |
monitorFunc |
Method run after each generation to allow monitoring of the optimization |
evalFunc |
User supplied method to calculate the evaluation function for the given chromosome |
showSettings |
if true the settings will be printed to screen. By default False. |
verbose |
if true the algorithm will be more verbose. By default False. |
C.B. Lucasius and G. Kateman (1993). Understanding and using genetic algorithms - Part 1. Concepts, properties and context. Chemometrics and Intelligent Laboratory Systems 19:1-33.
C.B. Lucasius and G. Kateman (1994). Understanding and using genetic algorithms - Part 2. Representation, configuration and hybridization. Chemometrics and Intelligent Laboratory Systems 25:99-145.
rbga.bin
plot.rbga
# optimize two values to match pi and sqrt(50) evaluate <- function(string=c()) { returnVal = NA; if (length(string) == 2) { returnVal = abs(string[1]-pi) + abs(string[2]-sqrt(50)); } else { stop("Expecting a chromosome of length 2!"); } returnVal } monitor <- function(obj) { # plot the population xlim = c(obj$stringMin[1], obj$stringMax[1]); ylim = c(obj$stringMin[2], obj$stringMax[2]); plot(obj$population, xlim=xlim, ylim=ylim, xlab="pi", ylab="sqrt(50)"); } rbga.results = rbga(c(1, 1), c(5, 10), monitorFunc=monitor, evalFunc=evaluate, verbose=TRUE, mutationChance=0.01) plot(rbga.results) plot(rbga.results, type="hist") plot(rbga.results, type="vars")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.