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

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

01

选择混沌映射有什么用

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

02

混沌映射可视化图片

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

03

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

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

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,获取完整代码

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

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

  1. 基于群智能的路径规划算法(三)------遗传算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  2. 基于群智能的路径规划算法(四)------人工蜂群算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  3. 轨迹绕圈算法_基于三次B样条曲线拟合的智能车轨迹跟踪算法

    收稿日期:2017-10-30; 修回日期:2017-12-10; 录用日期:2017-12-19. 基金项目: 国家自然科学基金资助项目( 91420202,61372088) . 作者简介: 张永 ...

  4. 基于混沌映射的自适应樽海鞘群算法

    文章目录 一.理论基础 1.基本樽海鞘群算法 2.改进的樽海鞘群算法 (1)混沌映射 (2)自适应权重变化 (3)追随者机制变化 (4)算法伪代码 二.实验仿真及结果分析 三.参考文献 一.理论基础 ...

  5. 蝙蝠算法c语言,一种新颖的群智能算法:飞蛾扑火优化算法

    李志明+莫愿斌+张森 摘要 飞蛾扑火优化(MFO)算法是一种新颖的群智能优化算法,该算法的主要灵感来源于飞蛾在自然界中被称为横向定位的飞行方式.作为一种新提出的仿生群智能优化算法,分析了飞蛾扑火优化算 ...

  6. 软件工程 UML 10种图

    1 UML简介 统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的 ...

  7. IGWO-SVM:改良的灰狼优化算法改进支持向量机。 采用三种改进思路:两种Logistic和Tent混沌映射和采用DIH策略

    IGWO-SVM:改良的灰狼优化算法改进支持向量机. 采用三种改进思路:两种Logistic和Tent混沌映射和采用DIH策略. 采用基于DIH维度学习的狩猎搜索策略为每只狼构建邻域,增强局部和全局搜 ...

  8. 一种基于Tent混沌映射初始化种群的改进灰狼算法

    文章目录 一.理论基础 1.GWO算法 2.TGWO算法 2.1 Tent混沌映射 2.2 控制参数调整 2.2.1 指数型收敛因子aaa策略 2.2.2 控制参数H\boldsymbol HH调整策 ...

  9. 帐篷混沌映射在优化算法中的应用

    前言 帐篷映射,是一种分段线性映射,其主要是根据确定的映射系统生成随机的混沌序列,混沌序列的取值范围通常在0,1之间,有研究表明混沌序列在算法初始化方便比随机初始化的性能更加优越,故混沌序列常用于粒子 ...

最新文章

  1. java中bjt和utc转化_如何在Java中转换UTC和本地时区
  2. find name 模糊匹配_MYSQL关于find_in_set()函数的使用详解和like的区别之处
  3. 第二篇:cout和endl的用法
  4. 学Java有什么技巧和方法推荐?
  5. Linux下Web效力器架设攻略-1
  6. 怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱
  7. 作者:何波(1989-),男,就职于中国信息通信研究院互联网法律研究中心
  8. AFNnetworking详解
  9. 物联网卡如何帮助农民提高收益
  10. 【开学福利】13本python+AI书籍,快拿去
  11. 有些事,我们逃不掉。有些事,我们逃不掉。
  12. 射频加热原理及其参数
  13. [资料] 为实现正确信号调理的噪声计算,这七个步骤你得get(转载)
  14. 数学建模--(2.2)拟合模型
  15. 微信公众号代运营机构靠谱吗?
  16. 2007执业医师成绩查询
  17. 阳康后是否二次感染,长新冠与肠道菌群的关联,多种潜在的干预措施
  18. 十五”期间广东职业教育发展概况
  19. 超级实习生提供IT培训吗?能保证技术进大厂实习吗?
  20. linux deploy中文版下载,Linux Deploy

热门文章

  1. mybatis查询子表
  2. oracle tfa,Oracle数据库11G RAC 11.2.0.4 GI单独安装tfa
  3. 解决停车库分时间段收费的问题
  4. 类Flask实现前后端交互之代码聊天室
  5. Axure作品欣赏:头条类资讯APP发布模块原型 (高交互)
  6. 诺基亚N900做PS3电子狗破解方法教程
  7. 理解同步传输与异步传输(一)
  8. ​单张图像三维人脸重建必备入门face3d—3DMM
  9. IOS高级开发 runtime(一) (皮拉夫大王深夜原创)
  10. html超链接悬停颜色,HTML怎么设置超链接颜色?设置超链接颜色总结