An R-based genetic algorithm
[This article was first published on chem-bla-ics, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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.Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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")
To leave a comment for the author, please follow the link and comment on their blog: chem-bla-ics.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.