The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
caRamel is a multiobjective evolutionary algorithm combining the MEAS algorithm and the NGSA-II algorithm.
Download the package from CRAN or GitHub and then install and load it.
library(caRamel)
There are three possible choices on how caRamel can call the R user functions. Each choice is parameterized by the carallel value.
The computation of the user functions can be done sequentially or in parallel for each individual of the genetic population according to the choice of carallel when calling caRamel.
The evaluation of the population is done in a sequential mode if carallel is 0, or in parallel if carallel is 1 (this last one is the default option).
For these two options, the R user function takes a single input parameter i giving the number of the individual of the population x. For instance:
kursawe <- function(i) {
k1 <- -10 * exp(-0.2 * sqrt(x[i,1] ^ 2 + x[i,2] ^ 2)) - 10 * exp(-0.2 * sqrt(x[i,2] ^2 + x[i,3] ^ 2))
k2 <- abs(x[i,1]) ^ 0.8 + 5 * sin(x[i,1] ^ 3) + abs(x[i,2]) ^ 0.8 + 5 * sin(x[i,2] ^3) + abs(x[i,3]) ^ 0.8 + 5 * sin(x[i,3] ^ 3)
return(c(k1, k2))
}
Two objectives are evaluated here and a vector of the corresponding values is returned for the individual x[i,].
If the value of carallel is 2 then the entire population is given to the R user function and one has to decide how to evaluate it. For instance hereafter with a simple for-loop:
kursawe <- function(x) { # receipt of the entire population
popsize <- dim(x)[1] # size of the population to evaluate
nobj <- 2 # number of objectives
results <- matrix(0, nrow = popsize, ncol = nobj) # matrix of results
for(i in 1:popsize){
k1 <- -10 * exp(-0.2 * sqrt(x[i,1] ^ 2 + x[i,2] ^ 2)) - 10 * exp(-0.2 * sqrt(x[i,2] ^2 + x[i,3] ^ 2))
k2 <- abs(x[i,1]) ^ 0.8 + 5 * sin(x[i,1] ^ 3) + abs(x[i,2]) ^ 0.8 + 5 * sin(x[i,2] ^3) + abs(x[i,3]) ^ 0.8 + 5 * sin(x[i,3] ^ 3)
results[i,] <- c(k1, k2)
}
return(results)
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.