Print

Print


A quick note on PSO implementation in ECJ: it's got lots and lots of 
problems.  Don't use it.  I wrote a new version of PSO that actually 
works while at FOGA, but accidentally deleted it yesterday, along with 
other changes, before committing them.  :-( :-(  I'm fairly down about 
that.  Until I get that rewritten, I suggest avoiding it.

BTW: DE is basically an adaptive mutation algorithm: the idea is that 
the size of the mutation should be roughly proportional to the variance 
in the population.  The way that's done, in the simplest form, is to do 
a mutation by taking two individuals and subtracting one from the other. 
  That's the mutation vector that's added to a third individual.  DE is 
steady-state so we now pick a final individual to possibly die and be 
replaced with the new child.  The standard way to do that is to compare 
the final individual with the child (or with the child crossed over with 
the final individal); if the child is better, it replaces the final 
individual.


Stefan Schliebs wrote:
> Hello David,
> searching for "Differential Evolution" using scholar.google.com
> results in these two first hits:
> 
> - Differential Evolution  A Simple and Efficient Heuristic for global
> Optimization over Continuous Spaces
> http://www.springerlink.com/content/x555692233083677/
> 
> -  Differential Evolution- A simple and efficient adaptive scheme for
> global optimization over continuous spaces by Rainer Storn
> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.1.9696
> 
> And using google (first hit):
> - Differential Evolution (DE) for Continuous Function Optimization (an
> algorithm by Kenneth Price and Rainer Storn)
> http://www.icsi.berkeley.edu/~storn/code.html
> 
> The latter link is a collection about DE explanations, history, source
> codes in several programming languages, books, links to
> applications...
> 
> Cheers, Stefan
> 
> 
> 
> On Mon, Mar 2, 2009 at 3:33 PM, David vun Kannon <[log in to unmask]> wrote:
>> Hi,
>>
>> I would appreciate if someone could give their understanding of DE, perhaps with pseudocode (or a pointer to some). The Wikipedia page on DE is awful. I can't find a web page that explains the algorithm step by step, explains what DE means by crossover, etc. My impression at the moment is that there is no rationale or theory to it, it was just hacked together. Even PSO's "bird flocking == function optimisation" is better than that.
>>
>> Cheers,
>> David vun Kannon
>>
>>> Date: Mon, 23 Feb 2009 21:05:10 -0500
>>> From: [log in to unmask]
>>> Subject: Using PSO and DE functionality (Code example included)
>>> To: [log in to unmask]
>>>
>>> Hello Sean and others,
>>>
>>> It has been a few years since the last time I worked with ECJ to try to get
>>> a better feel for GP. I'm glad it has been continuing to grow!
>>>
>>> I've been wanting to compare a GA, PSO, DE, and a separate EDA method. I've
>>> attached my code for a simple sample problem and the params files that I've
>>> come up with for the GA and PSO cases. The PSO has not been improving with
>>> time so I've been believing that I have mistakenly set up the params file.
>>>
>>> <snip ...>
>>> Generation 650
>>> Subpop 0 best fitness of generation: Fitness: 8.0
>>> Generation 651
>>> Subpop 0 best fitness of generation: Fitness: 8.0
>>> Generation 652
>>> Subpop 0 best fitness of generation: Fitness: 8.0
>>> Generation 653
>>> Subpop 0 best fitness of generation: Fitness: 8.0
>>> Generation 654
>>> Subpop 0 best fitness of generation: Fitness: 8.0
>>> <... snip>
>>>
>>> Is there an example on the use of DE or PSO that you could point me towards?
>>>
>>> I believe I will have to extend a class off of population to add an EDA
>>> algorithm.
>>>
>>> Best Regards,
>>> Richard