## ECJ-INTEREST-L@LISTSERV.GMU.EDU

#### View:

 Message: [ First | Previous | Next | Last ] By Topic: [ First | Previous | Next | Last ] By Author: [ First | Previous | Next | Last ] Font: Proportional Font

Subject:

Convergence of fitness value for large chromosomes

From:

Cem Safak SAHIN <[log in to unmask]>

Reply-To:

ECJ Evolutionary Computation Toolkit <[log in to unmask]>

Date:

Wed, 1 Oct 2008 12:50:04 -0400

Content-Type:

text/plain

Parts/Attachments:

 text/plain (184 lines)
 ```Hi there, I am bechmarking three different GA libraries (ECJ, JGAP, and GALib (C++)). The parameter file, the fitness function, and the my mutation function are at the end of this email. The length of chromosome is 600 and subpopulation size is 20. I am using default crossover function (source 0 and source 1 --> FitProportionateSelection). Fitness function is Kozafitness (it is easier for me to solve minimization problems). The other two libraries converge around 20,000 iterations. However, ECJ converges after 90,000 iterations. If I I wanna learn your instincts about convergence rate. Isn't it too slow? (Whether, I am coding something wrong or someone has the similar convergence rate problem for fitness value) Note: I am using my own mutation function because the bit selected for mutation should be changed from a value in the predefined vector. Thanks in advance, Safak -----------FITNESS FUNCTION----------------------------------- fitness = 0; for (i0.0){     if (state.random[thread].nextBoolean (s.mutationProbability)){     int a = state.random[0].nextInt(600);      ind.genome[a]=(float)(rg.GetRandom (a));     }    }    (inds[q]).evaluated=false;   }      return n;  }  @Override  public Parameter defaultBase() {   // TODO Auto-generated method stub   return VectorDefaults.base().push(P_MUTATION);  }    public class RandomGenerator{   int type = 0; // 0-->Gaussian, 1-->Cauchy   int thread;   EvolutionState state;   float GetRandom(float a){    float rnum = 0.0f;    int k = state.random[thread].nextInt(9);    rnum = ES_Java_1._chromosomes[(int)a][k];    /*if (type == 0){     rnum = err*(float)state.random [thread].nextGaussian();    }    else{     rnum=(float)Math.tan(3.1415926536f* (state.random[thread].nextFloat()-0.5f));    }*/    return rnum;   }      void SetState(final EvolutionState s){    state =s;   }      void SetThread(final int t){    thread = t;   }     } } ```

Advanced Options

#### Options

 Log In Get Password Search Archives Subscribe or Unsubscribe