An R-based genetic algorithm

November 19, 2007
By

(This article was first published on chem-bla-ics, and kindly contributed to R-bloggers)

During my PhD I wrote a simple but effective genetic algorithm package for R. Because there was a bug recently found, and there is interest in extending the functionality, I have set up a SourceForge project called genalg.

The package provides GA support for binary and real-value chromosomes (and integer chromosomes is something that will be added soon), and allows to use custom evaluation functions. Here is some example code:

`# 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")`

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...