Dealing with a stochastic fitness function in GA package

October 4, 2013
By

Guest post by Kim Man Lui, PhD. (about GA – an R package for optimization using genetic algorithms)

The GA package (version 2.0) is a generic package in which one can define his/her own functions of fitness, selection, crossover and mutation. Among those functions, the most important is the fitness. However, in the GA package, the fitness function has been assumed to be deterministic. When we are dealing with a stochastic fitness function in financial computing, the GA package may provide a biased result. However, we may easily extend the package to deal with a stochastic fitness function.

Let us look at the following R code in which our fitness function is stochastic

f <- function(x) x*runif(x)

fitness <- function(x) f(x)

GA <- ga(type=”real-valued”, fitness=fitness, min=-20, max=20)

plot(GA)

 

fig1

Fig 1: fitness <- function(x) x*runif(x)

Interestingly, if we take out the random (i.e. f <- function(x) x ) and there is not much difference in plot(GA) (see Fig 2) as the best always converges steadily.

 fig2

Fig 2: fitness <- function(x) x

The result (Fig 1) is biased as the fitness of elite solution(s) in the next population is not re-calculated owing to the assumption of a deterministic fitness function. When coping with a stochastic process, we can do the following.

Type ga and save the source code. Look for the following lines and always set Fitness[]=NA as

for (iter in 1:maxiter) {

 

  Fitness[]=NA #add this line to deal with a stochastic fitness function

    

  if (!parallel) {

      for (i in 1:popSize) if (is.na(Fitness[i])) {

        Fitness[i] <- fitness(Pop[i, ], …)

  }

 

 

That is it! Now, re-run the code. plot(GA)will give a representative picture (see Fig 3) for the optimal solution in a stochastic process.

 fig3

Fig 3: fitness <- function(x) x*runif(x) and elite solution(s) are re-calculated

 



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.