10种混沌映射优化灰狼算法,可一键切换,可用于优化所有群智能算法,以灰狼算法为例进行介绍...

 本篇文章采用10种常见的和不常见的混沌映射用于优化群智能算法,代码可一键切换,可用于所有智能算法优化,本篇文章以灰狼算法为例进行介绍

本文涉及10种混沌映射算法,用于在初始化智能算法粒子时使用,10种混沌映射算法包括:Tent映射、Logistic映射、Cubic映射、chebyshev映射、Piecewise映射、sinusoidal映射、Sine映射,ICMIC映射, Circle映射,Bernoulli映射。关于每个方法映射的原理,本文就不再一一介绍。‍

01

选择混沌映射有什么用

经实验证明,采用混沌映射产生随机数的适应度函数值有明显提高,用混沌映射取代常规的均匀分布的随机数发生器可以得到更好的结果,特别是搜索空间中有许多局部解时,更容易搜索到全局最优解。一句话来讲就是:混沌映射可以增强粒子的随机性和多样性。

02

混沌映射可视化图片

Tent映射和Logistic映射为例,展示一下结果图。当然这个用肉眼也确实看不出太大区别,其他8种混沌映射画出来的结果都和这个差不多,就不一一展示了。

db87f9d2e1319558db0c574acfcb4c49.png

03

10种混沌映射优化灰狼算法

以Logistic混沌映射为例,依旧是在CEC2005函数上进行测试。采用Logistic混沌映射优化灰狼算法结果如下:

902f0d0ccb2c0b76009067ccad72a260.png

d5e365608f0360ebddda91cffd6dae11.png

766f5213fa4eb9d5bc42b71e7f78e2db.png

2845bad7320ae7430fee2a061df51d54.png

d4276c457a67367c701b42a1adaa271b.png

7816ae43ad63c5b08899a519412a147d.png

0ec4bb81e1cebe78f2769dff81d58853.png

4d7bbd9e436cf6862d774fb762e41244.png

186e0bb236ebbb948f0837ad7e665bfc.png

2ef5813106a2a34ae58bd5e304a206df.png

04

结果分析

    这里选取了10个函数的优化作为结果展示,这10个函数的优化结果表示,混沌映射优化智能算法并非对每个函数都有效果,比如F6,F8。

    这里要特别说明一下,混沌映射优化智能算法,从理论上来讲,只是将初始化的粒子变得更随机更多样了,这样确实是可以加速算法的收敛速度,但是,一旦循环开始,剩下的就没有混沌优化什么事情了。

    换句话说,就是如果我直接用rand函数生成一堆粒子,也是有一定概率比混沌优化生成的粒子更好的,虽然这个概率不大,但确确实实是有的,所以如果偶尔出现混沌优化的效果不好使,那也不要气馁,毕竟混沌优化只是优化智能算法的一种手段,大家可以结合别的手段一起优化。

05

代码展示

clear
clc
close all
number='F9'; %选定优化函数,自行替换:F1~F23
% [lb,ub,D,y]:下界、上界、维度、目标函数表达式
[lb,ub,dim,fobj]=CEC2005(number);  


SearchAgents_no=30; %种群规模
Max_iter=1000; %最大迭代次数


%调用灰狼算法
numm = 2; %% numm 混沌映射类型选择,1-10,tent、Logistic、Cubic、chebyshev、Piecewise、sinusoidal、Sine,ICMIC, Circle,Bernoulli,自由切换
[chaosAlpha_score,chaosAlpha_pos,chaosConvergence_curve]=GWO(numm,SearchAgents_no,Max_iter,lb,ub,dim,fobj);


fprintf ('Best solution obtained by chaosGWO: %s\n', num2str(chaosAlpha_pos,'%e  '));
fprintf ('Best objective function value obtained by chaosGWO: %e \n', chaosAlpha_score);


numm = 11;  % numm 混沌映射类型选择,当numm等于11时,采用原始的随机数,也就是最原始的灰狼算法
[Alpha_score,Alpha_pos,Convergence_curve]=GWO(numm,SearchAgents_no,Max_iter,lb,ub,dim,fobj);


fprintf ('Best solution obtained by GWO: %s\n', num2str(Alpha_pos,'%e  '));
fprintf ('Best objective function value obtained by GWO: %e \n', Alpha_score);
%% Figure
figure1 = figure('Color',[1 1 1]);
G1=subplot(1,2,1,'Parent',figure1);
func_plot(number)
title(number)
xlabel('x')
ylabel('y')
zlabel('z')
subplot(1,2,2)
G2=subplot(1,2,2,'Parent',figure1);
CNT=20;
k=round(linspace(1,Max_iter,CNT)); %随机选CNT个点
% 注意:如果收敛曲线画出来的点很少,随机点很稀疏,说明点取少了,这时应增加取点的数量,100、200、300等,逐渐增加
% 相反,如果收敛曲线上的随机点非常密集,说明点取多了,此时要减少取点数量
iter=1:1:Max_iter;
semilogy(iter(k),Convergence_curve(k),'b-*','linewidth',1);
hold on
semilogy(iter(k),chaosConvergence_curve(k),'m-p','linewidth',1);
grid on;
title('收敛曲线')
xlabel('迭代次数');
ylabel('适应度值');
box on
legend('GWO','chaosGWO')
set (gcf,'position', [300,300,800,350])

从代码可以看出,作者的每个代码资料都做了详细的注释。代码第12行中有一个关键的参数numm,大家可以通过手动调节这个变量,实现不同的混沌映射优化智能算法。

一共有10种类型可供选择,Tent映射、Logistic映射、Cubic映射、chebyshev映射、Piecewise映射、sinusoidal映射、Sine映射,ICMIC映射, Circle映射,Bernoulli映射。

作者已经将这10种混沌映射写到一个名为chaos.m”的脚本函数中,chaos的英文名是混乱,感觉这么命名还是挺有道理的哈哈,这样大家就可以一键更换了,而且很容易扩展到其他代码上。

友情提示:如果说,大家在用其他混沌映射优化时效果不好,可以手动修改chaos.m中的每个混沌映射方法的混沌系数

好的,今天就分享到这里啦。下方卡片回复关键词:chaos,获取完整代码

觉着不错的给博主留个小赞吧!您的一个小赞就是博主更新的动力!谢谢!

  • 14
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: 高斯混沌映射是一混沌系统模型,由高斯函数变换而来。它通过对初始条件进行迭代运算,产生一个看似无规律的数列。这个数列具有敏感依赖于初始条件的特点,即初始条件的微小变化会导致数列的完全不同。因此,高斯混沌映射被广泛应用于密码学领域,作为一安全的随机数生成器。 高斯混沌映射的迭代公式为Xn+1 = aXn(1-Xn),其中a是映射的参数,Xn是第n次迭代的结果。 与传统的线性映射不同,高斯混沌映射呈现出随机性和不可预测性。它的非线性特性使得生成的数列具有高度的随机性,可以用于加密和解密的随机密钥生成。 高斯混沌映射还可以用于模拟天气系统、生态系统、经济系统等复杂的动态系统。通过调整映射的参数,可以模拟不同类型的系统行为。这系统的非线性特性使得它们对初始条件和外部干扰非常敏感,就像真实系统中的混沌现象一样。 总的来说,高斯混沌映射是一非线性、随机且高度敏感的数学模型,可以用于生成安全的随机数、模拟复杂系统的行为。它对密码学、科学研究以及工程应用都有重要的意义。 ### 回答2: 高斯混沌映射(Gaussian-Chaotic Map)是一基于高斯分布的混沌映射。它以德国数学家高斯的名字命名,是一以高斯分布曲线为基础的混沌系统。 高斯混沌映射是通过将初始状态输入到迭代方程中,然后对迭代方程进行重复操作来生成混沌序列。迭代方程基于高斯分布,并且具有非线性和混沌性质。 该映射的迭代方程可以写为: x(n+1) = r * x(n) * (1 - x(n)) + η(n) 其中,x(n) 表示第 n 步的状态值,n 表示迭代的步骤数,r 表示映射的参数,η(n) 表示高斯分布的随机噪声。 高斯混沌映射具有许多特点和应用。首先,它具有确定性的随机性,即在确定的初始条件下,它能够产生看似随机的序列。其次,该映射具有敏感性依赖性,即微小的变化会导致完全不同的序列。同时,高斯混沌映射在随机数生成、加密算法、数据传输等领域具有广泛的应用。 总的来说,高斯混沌映射是一基于高斯分布的混沌系统,它通过重复迭代方程来生成具有随机性和敏感性依赖性的序列。它在许多领域都有应用,对于研究混沌动力学以及相关应用具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天吃饺子

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值