One more question: In ECSuite.java I see that 3 functions do not have ideal fitness: Noisy-Quartic (KDJ-F4), Booth in Griewangk because of the noise. (that's the comment where setFitness() is called) But I see the noise only in Noisy-Quartic, where random numbers are used. So why Booth and Griewangk do not have ideal fitness? Below you sad that ideal fitnes (optimum) is 0. Is this a bug in source code? Regards, Martin Christopher Vo wrote: > To utilize the "prob" parameter, you might want to take a look at > using a MultiBreedingPipeline. It is a BreedingPipeline that stores n > child sources and when it needs to produce an individual, it picks one > of the sources at random to do the production. > > The domain -5.12 to 5.12 contains the ideal value for most of the > ECSuite problems, but you may want to adjust the domain mostly to get > an understanding of the properties of your genetic algorithm. For > example, Griewangk's function from very far away (-600,600) looks > almost like sphere, but when you zoom in to perhaps (-50,50) you can > see the small peaks and valleys. > > Step and quartic are from De Jong's test suite. > Booth is from (Schwefel, 1995), > In literature, the values used might be: > - step: [-5.12, 5.12], > - noisy quartic: [-1.28, 1.28], (optimum is at f(0,...,0) = 0) > - booth: [-10,10], (defined for 2 terms only, optimum is at f(1,3)=0) > > -- Chris Vo > > Martin V. wrote: >> Thanks for answers. >> >> So if I needed to change probability for crossover pipeline I would >> need to change parameter "prob" in BreedingSource class? >> Because I don't want every individual that is selected to be crossed >> over. >> I would like for example 20% of individuals for reproduction pipeline >> and 80% for crossover. >> >> One more question: these min-gene and max-gene values in >> ecsuite.params are only for rastrigin problem? >> If so, what are values for other problems? >> In the literature I found: >> - rastrigin: -5.12, 5.12 >> - sphere: -100, 100 >> - rosenbrock: -2048, 2048 >> - griewangk: -600, 600 >> So for other 3 problems I don't know what values should I use. >> >> Regards, >> Martin >> >> >> Christopher Vo wrote: >>> Martin V. wrote: >>> >>>> - Do all of 7 functions have minimum at 0.0? >>> Many of the functions in ECSuite are inverted so that ECJ can >>> perform maximization instead of minimization. You can see how the >>> functions are implemented and look at the fitness of the ideal >>> individuals inside the evaluate() method in >>> ec/app/ecsuite/ECSuite.java. >>> >>> There you can see that with the Rosenbrock, Rastrigrin, Sphere, and >>> Step problem types, an individual's fitness is ideal when the >>> fitness is equal to 0.0f. Noisy quartic, Booth, and Griewangk have >>> no ideal fitness value defined. >>>> - What is the probability of crossover (one-type)? No parameter is >>>> specified in ecsuite.params, like the one for mutation probability >>>> (0.005). >>> VectorCrossoverPipeline (which is used in ecsuite.params) grabs >>> individuals from the two sources and always performs the crossover. >>> Note that there also exists a parameter >>> "pop.subpop.0.species.crossover-prob", however it is only for use >>> with any-point crossover. >>>> - How can I find ideal individual (minimum of the function), do I >>>> need to change some parameters? Now for rastrigin (default >>>> function) I find the best individual have value of about -235 >>>> (towards zero is better). >>>> I have run the evolution few times with random seed but with no >>>> luck to get fitnes towards 0. Maybe I need to change mutation >>>> probability, the number of generations, the number of individuals, >>>> the size of the genome...etc.? >>> Rastrigin is a function with a lot of local minima. You will have to >>> do your own experimentation with the various parameters to find what >>> parameters work well. Note that with floating point vectors, you may >>> not be able to get exactly 0.0, but approximately 0.0. Actually, in >>> my experience, if you see "Found Ideal Individual" on one of the >>> ECSuite problems, it is often an indicator that something went wrong... >>> >>> Try increasing the population size (pop.subpop.0.size). Also, just >>> to make sure things are working, you may just want to try the same >>> function with a smaller genome size. For example, try 10 genes >>> instead of 50. You can adjust the genome size via the genome-size >>> parameter. You might also try experimenting with Gaussian mutation >>> instead of reset mutation for this problem. >>> >>> --Chris Vo >>> >> >