# Cuckoo search, problem with Levy flight

In cuckoo search, in some point you have to generate new solution using formula $$x_k(t+1) = x_k(t) + \alpha L(s, \lambda),$$ where $$L(s,\lambda)=\frac{\lambda\Gamma(\lambda)\sin(\pi\lambda/2)}{\pi}\frac{1}{s^{\lambda+1}},$$ $$s$$ is number from Levy distribution. Formula for $$s$$: $$s=\frac{U}{|V|^{1/\lambda}},$$ where $$U\sim N(0, 1), V\sim N(0, \sigma^2)$$ and $$\sigma^2=\left(\frac{\Gamma(1+\lambda)\cdot\sin(\pi\lambda/2)}{\lambda\Gamma((1+\lambda)/2)}\right)^{1/\lambda}.$$ I tried to implement this algorithm in Python, here is my code:

from math import * from scipy import special import numpy as np lam = 1.5 alfa = 0.01 U = np.random.normal(0, 1, 1) sigma = (gamma(1 + lam) * sin(pi * lam/2)/(lam*gamma((1+lam)/2)))**(1/lam) V = np.random.normal(0, sigma, 1) s = U/abs(V)**(1/lam) L = lam * gamma(lam) * sin(pi*lam/2)/((s**(1 + lam))*pi)  print(L) 

It doesn’t always work, I mean $$L$$ is not a number sometimes. Where is the mistake? I am using the book mentioned below.

Xin-She Yang: Nature-Inspired Optimization Algorithms