Skip to content

Commit

Permalink
make real-valued evolutionary operators much faster
Browse files Browse the repository at this point in the history
  • Loading branch information
jakobbossek committed Feb 13, 2015
1 parent b702551 commit d3fbbb7
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
12 changes: 7 additions & 5 deletions R/gaussMutator.R
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
gaussMutator = function(setOfIndividuals, control = list(mutator.gauss.prob = 1, mutator.gauss.sd = 0.05)) {
n.params = ncol(setOfIndividuals$individuals)
n = nrow(setOfIndividuals$individuals)
for (i in seq(n)) {
mutation.bool = (runif(n.params) <= control$mutator.gauss.prob)
mutation = ifelse(mutation.bool, rnorm(1, mean = 0, sd = control$mutator.gauss.sd), 0)
setOfIndividuals$individuals[i, ] = setOfIndividuals$individuals[i, ] + mutation
}

mutation.bool = matrix(runif(n * n.params) < control$mutator.gauss.prob, ncol = n.params)
mutation = matrix(0, ncol = n.params, nrow = n)
idx = which(mutation.bool)
mutation[idx] = rnorm(length(idx), mean = 0, sd = control$mutator.gauss.sd)
setOfIndividuals$individuals = setOfIndividuals$individuals + mutation

return(setOfIndividuals)
}

Expand Down
4 changes: 2 additions & 2 deletions R/indermediateRecombinator.R
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#' Recombined offspring.
#' @export
intermediateRecombinator = function(setOfIndividuals, control=list()) {
child = apply(setOfIndividuals$individuals, 2, sum) / 2
makePopulation(t(as.matrix(child)))
child = matrix(colSums(setOfIndividuals$individuals) / 2, nrow = 1L)
makePopulation(child)
}

attr(intermediateRecombinator, "name") = "Intermediate recombinator"
Expand Down
4 changes: 2 additions & 2 deletions R/nullRecombinator.R
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#' Recombined offspring.
#' @export
nullRecombinator = function(setOfIndividuals, control=list()) {
child = setOfIndividuals$individuals[1, ]
makePopulation(t(as.matrix(child)))
child = setOfIndividuals$individuals[1, , drop = FALSE]
makePopulation(child)
}

attr(nullRecombinator, "name") = "null recombinator"
Expand Down

0 comments on commit d3fbbb7

Please sign in to comment.