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?
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
>> 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.
>> 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
>>> 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
>>> 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