R/Hyperneat.R

#' Runs HyperNEAT simulation
#'
#' This function runs the HyperNEAT simulation according to the problem configuration
#' @param simulationParameters List of parameters that control the simulation
#' @param substrateConfiguration List of substrate configurations
#' @value Returns a completed simulation according to the end criteria.
#' @export
HyperNEATSimulation <- function(simulationParameters = NULL,
                                substrateConfiguration = NULL){
  # Initial simulation ------------------------------------------------------
  simulation <- list()
  simulation$generation <- generateInitialGeneration(simulationParameters$numGenomes,
                                          simulationParameters$numInputs,
                                          simulationParameters$numOutputs)
  simulation$fitness$globalMaxFitness <- 0
  simulation$fitness$globalMaxFitnessGeneration <- 0
  simulation$fitness$currentMaxFitness <- 0
  simulation$parameters <- simulationParameters
  simulation$currentGeneration <- 1
  simulation$substrateConfiguration <- substrateConfiguration


  # Simulation itself -------------------------------------------------------
  while(simulation$fitness$globalMaxFitness < simulation$parameters$targetFitness &
        simulation$currentGeneration < simulation$parameters$maxGeneration){
    simulation <- runSingleGeneration(simulation)
  }

  return(simulation)
}


runSingleGeneration <- function(simulation){
  simulation$generation <- simulation$generation %>% map(calculateFitness)
  simulation$generation <- rankGeneration(simulation$generation)

}

calculateFitness <- function(genome){
  network <- generateNetwork(genome$gene)
  return(genome)
}

generateNetwork <- function(genome){
  return(genome)
}

rankGeneration <- function(generation){
  return(generation)
}
JJKETO/HyperNEAT documentation built on May 12, 2019, 8:40 a.m.