Print

Print


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