基于Chebyshev混沌映射的麻雀搜索算法-附代码

基于Chebyshev混沌映射的麻雀搜索算法

1.Chebyshev映射

Chebyshev映射是混沌映射的典型代表,它的数学形式很简单。其表达式如下:
x k + 1 = c o s ( k c o s − 1 ( x k ) ) (1) x_{k+1} =cos(kcos^{-1}(x_k))\tag{1} xk+1=cos(kcos1(xk))(1)
Chebyshev表达式中P和x的范围为[0,1]。Chebyshev映射迭代200次的分布如下图所示:

请添加图片描述

从图种可以看出,Chebyshev映射分布在[0,1]之间,其混沌性来代替随机初始化,能够使种群在搜索空间更加均匀的分布。

2.基于Chebyshev映射的麻雀搜索算法

基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958

该改进主要是在初始化种群时,利用Piecewise映射初始化种群

算法流程

Step1: 利用Chebyshev映射策略初始化种群,迭代次数,初始化捕食者和加入者比列。

Step2:计算适应度值,并排序。

Step3:麻雀更新捕食者位置。

Step4:麻雀更新加入者位置。

Step5:麻雀更新警戒者位置。

Step6:计算适应度值并更新麻雀位置。

Step7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6;

3.算法结果:

请添加图片描述

4.Matlab

5.Python

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Chebyshev混沌映射是一种常见的非线性动力系统,它展现了分岔现象。下面是使用Python编写的Chebyshev混沌映射分岔图代码: ```python import numpy as np import matplotlib.pyplot as plt def chebyshev_map(x, a): return a*x**2 - 1.57*x def bifurcation_diagram(a_values, iterations): x = 0.1 x_values = [] a_list = [] for a in a_values: for _ in range(iterations): x = chebyshev_map(x, a) if _ > iterations / 2: x_values.append(x) a_list.append(a) return a_list, x_values # 设置参数值和迭代次数 a_values = np.linspace(-1.5, 1.5, 1000) iterations = 1000 # 绘制分岔图 a_list, x_values = bifurcation_diagram(a_values, iterations) plt.scatter(a_list, x_values, s=0.01, c='black') plt.xlabel('a') plt.ylabel('x') plt.title('Chebyshev混沌映射分岔图') plt.show() ``` 该代码首先定义了Chebyshev混沌映射的迭代函数`chebyshev_map`,其输入为x和a,输出为根据Chebyshev混沌映射公式计算得到的下一个x的值。 然后,定义了`bifurcation_diagram`函数,该函数使用给定的参数值范围和迭代次数,计算Chebyshev混沌映射的分岔图。在每次迭代过程中,通过检测迭代次数来筛选稳定状态,将稳定状态的x值和对应的a值保存到列表中。 最后,使用`np.linspace`生成参数值数组`a_values`,并调用`bifurcation_diagram`函数获得分岔图数据。使用`plt.scatter`绘制分岔图,并设置图表标签和标题。 运行代码后,将得到Chebyshev混沌映射的分岔图,横坐标为参数a的值,纵坐标为系统状态x的值。该分岔图显示了系统在不同参数范围下呈现出的稳定状态和混沌状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值