One more question:
In ECSuite.java I see that 3 functions do not have ideal fitness:
NoisyQuartic (KDJF4), Booth in Griewangk because of the noise. (that's
the comment where setFitness() is called)
But I see the noise only in NoisyQuartic, 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 mingene and maxgene 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 (onetype)? 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.crossoverprob", however it is only for use
>>> with anypoint 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 genomesize
>>> parameter. You might also try experimenting with Gaussian mutation
>>> instead of reset mutation for this problem.
>>>
>>> Chris Vo
>>>
>>
>
