python 实现布谷鸟算法(CS)

在网上搜索没有发现比较完整用Python写的CS算法,只能自己动手编写一个。

CS算法注意事项:

1.执行流程是,初始化 -> levy飞行变换巢穴位置 -> 与之前的巢穴对比保留好的巢穴 -> 按照发现概率值丢弃部分巢穴重新生成 ->

-> 再与之前的巢穴对比保留好的巢穴 ->判断循环是否结束 ->  ............

2.levy飞行步长的计算通常是使用Mantegna方法模拟二维平面萊维飞行

3.迭代公式中大量涉及随机数,需要注意的是一部分是服从均匀分布,还有部分是服从正态分布

4.编写可以参照yang的matlab代码源代码(参考的链接中包含源代码)

Python代码如下:

公式就不写了,可以参考链接。

from random import uniform
from random import randint
import math
import numpy as np
import matplotlib.pyplot as plt
'''
根据levy飞行计算新的巢穴位置
'''
def GetNewNestViaLevy(Xt,Xbest,Lb,Ub,lamuda):
    beta = 1.5
    sigma_u = (math.gamma(1 + beta) * math.sin(math.pi * beta / 2) / (
                math.gamma((1 + beta) / 2) * beta * (2 ** ((beta - 1) / 2)))) ** (1 / beta)
    sigma_v = 1
    for i in range(Xt.shape[0]):
        s = Xt[i,:]
        u = np.random.normal(0, sigma_u, 1)
        v = np.random.normal(0, sigma_v, 1)
        Ls = u / (
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值