I finally received (and read) your book. I'm comparing the code in the book and the latest which is published here. I understand this one is supposed to be better and refined but I'd like to ask some clarification nonetheless since some things don't add up to me.
1) the 1st thing I noticed is that get_cuckoo in the book's algorithm (hence BA) cuckoos make random walks around the best so far, whereas in the latest algorithm (LA) they move from their own current position. chapter 12.2 of the book seems to explain these 2 strategies, but I wonder if indeed random walks from the current solution (not even around the better locally as in PSO) don't make intensification too sparse?
2) the 2nd issue has to do with the empty_nest. As I understand the objective here is apply "selection of the fittest". In BA indeed the worst nests are selected as candidates for replacement (again with random walk this time around the current position). In LA it seems the concept of "worst nests" is lost and a kind of Differential Evolution approach is taken, where a nest is moved (random uniform) toward one of the other nest.
It seems to me that both approach are reasonable but they are rather different conceptually. I mean, in the principle of "survival of the fittest" shouldn't we have a selection (as in BA) of the worst nest as candidate for this mutation rather than all of them (provided rand<pa obviously). In other words, shouldn't we always pick the worst nest rather than in parallel all nests together?
Thanks a lot for any help.
Thanks a lot for your prompt reply. Indeed I ordered your book as google's version wont allow full access. In this paper
they compare 3 algs for levy distribution and they say McCulloch’s alg perform better than Mantegna's. Also, they provide a more complex Mantegna's implementation than yours (in matlab line 35-49)
35 invalpha = 1/alpha;
36 sigx = ((gamma(1+alpha)*sin(pi*alpha/2))/(gamma((1+alpha)/2)...
38 v = sigx*randn(n,N)./abs(randn(n,N)).^invalpha;
39 kappa = (alpha*gamma((alpha+1)/(2*alpha)))/gamma(invalpha)...
41 p = [-17.7767 113.3855 -281.5879 337.5439 -193.5494 44.8754];
42 c = polyval(p, alpha);
43 w = ((kappa-1)*exp(-abs(v)/c)+1).*v;
45 z = (1/n^invalpha)*sum(w);
47 z = w;
49 z = c^invalpha*z;
it seems your version is a simplified one that avoids step 39-49? BTW, all of my questioning is because I'm trying to port your alg in Java and I need to understand all the nuances of all tidbits. Thanks a lot for any help.
could you please clarify why you apply
(line 123), isn't stepsize already in levy distribution? Why the need to multiply for a gaussian?
Also, could you please explain what "the factor 0.01 comes from the fact that L/100 should the typical step size of walks/flights where L is the typical lenghtscale". Has it anything to do with the lower-upper bound limits of the problem? Thanks a lot.