Complete GA with Mutation

Using additionally a mutation operator every cycle. The mutation is applied to the strings which have already received a crossover operation.

//*************************************************************
// All Functions Unified
//
// p := number of parameters between strings left and right (actually  p=5)
// l := length of strings ( actually l=5)
// n := number of elements in POP (actually n=4)
// POP := a predefined population (can be done automatically)
// run := number of cycles
// MThreshold := number of cycles which have to be waited until the mutation operators will be
applied

function[POP,FITNESS_ALLLOG]=gasimple(POP,l,p,n,run, MThreshold)
  
  MutationCount = 0 
  
  FITNESS_ALLLOG=[]
  
for cyc = 1:run  
  
  [M]= mshow(POP,n,l+p);
  
  for j=1:n, v=POP(j,:),  [POP(j,l+1)]= vec2dec(v,l)
  end
  
  for i=1:n,[POP(i,l+2)]= fitness1(POP(i,l+1))
  end
  
  [FITNESS_ALL]=fitness(POP,l)
  FITNESS_ALLLOG(cyc)=FITNESS_ALL
  
  [MFITNESS]=maxfitness(POP,l)
  
  [POP,AFITNESS]=rfitness(POP,l,FITNESS_ALL)
  
  [POP]=newMember(POP,l,n)
  [POP]=newPop(POP,l,p,n)
  [POP]= crossoverPrep(POP,l,p,n)
  [POP]= crossover(POP,l,p,n)
  
  printf('Mutationcount = %d\n', MutationCount)
  
  if(MutationCount > MThreshold) then [POP]= mutation(POP,l,p,n), MutationCount=0,
  end
  
  MutationCount = MutationCount + 1
  
end //for == run

// Compute the maximal value and the percentage of success

[MAXFIT]=maxfit02(l,n)
FITNESS_ALL_PERC=[]

for i=1:run, FITNESS_ALL_PERC(i) = FITNESS_ALLLOG(i)/(MAXFIT/100), end

// Show graphical results

clf(), xdel, 
//plot2d([1:1:run], FITNESS_ALLLOG) 
plot2d([1:1:run], FITNESS_ALL_PERC) 


endfunction



Gerd Doeben-Henisch 2012-03-31