我正在重建一个Matlab程序,由Rodrigues here提出的Binary Cuckoo搜索算法。
我的问题是如何编码以下公式?
x(i,j,t) = x(i,j,t-1) + a ⊕ Levy(λ)
答案 0 :(得分:1)
本文中的Levy flight定义为幂律分布,因此您需要从此分布中生成随机数,并且可以使用Inverse transform sampling method来执行此操作。在此方法中,您从均匀分布U~(0,1)生成随机数,并使用它的CDF(如果已知)将它们转换为任何其他分布。
在Matlab中你会写:
N = 1000; % no. of random numbers to generate...
x = rand(N,1); % from a uniform distribution
gamma = 2; % scale parameter for the distribution (as in the article)
s = (1-x).^(-1/gamma); % s has a power-law distribution