|
|
-
- ea.crossover <- function(p1, p2, mask) {
- ch1 <- c()
- ch2 <- c()
-
- for(i in 1:length(mask)) {
- if(mask[i]) {
- ch1[i] <- p2[i]
- ch2[i] <- p1[i]
- } else {
- ch1[i] <- p1[i]
- ch2[i] <- p2[i]
- }
- }
-
- return(list(ch1, ch2))
- }
-
- indiv2int <- function(indiv) {
- res <- 0
-
- indiv_rev <- rev(indiv)
-
- for(i in 1:length(indiv)) {
- res <- res + indiv_rev[i] * 2^(i-1)
- }
-
- return(res)
- }
-
- ea.n_point_mask <- function(len, n_points) {
- return( function() {
- points <- sort(c(c(1), sample(2:(len - 1), n_points), c(len)))
-
- val <- TRUE
- mask <- c()
-
- for(i in 1:(length(points) - 1)) {
- mask <- append(mask, rep(val, points[i + 1] - points[i]))
-
- if(val) {val <- FALSE} else {val <- TRUE}
- }
-
- return(mask)
- })
- }
-
- ea.uniform_mask <- function(len) {
- return(function() sample(c(TRUE, FALSE), len, replace=TRUE))
- }
-
- rand.individual <- function(len) {
- return(sample(c(0,1), len, replace=TRUE))
- }
|