非常非常实用!不能错过,独家原创,9种很少人听过,但却实用的混沌映射!!!以鲸鱼混沌映射为例,使用简便

news/2024/6/17 2:41:55 标签: matlab, 启发式算法, 算法

很多人在改进的时候,想着增加混沌映射,增加初始种群的多样性,可是,大多数论文中常见的映射,都被别人使用了,或者不知道被别人有没有使用,

本文介绍9种很少人知道,但非常实用混沌映射,其中有几种是改进型,有几种是原本映射。

此代码本人独家原创!倒卖必究!!!,我把每个映射,都封装成一个函数了,使用简便!

如图initialization1-9为以下9种混沌映射,initialization为伪随机初始化,WOA是鲸鱼算法CWOA是混沌鲸鱼算法。直接运行main函数即可,如果想用其他映射,只需要在CWOA中改下数字。

图片

结构简单,也可以直接复制,在其他想改进的算法中使用。

图片

  1. Logistic-tent混沌映射

2.Tent-Logistic-Cosine混沌映射

3.SPM映射,非常均匀

4.Sinusoidal 混沌映射,是经典混沌映射之一。

5.二维Henon混沌映射

6.Funch映射

7.Singer映射作为混沌映射的典型代表,数学形式简单,具有遍历性和随机性。

8.高斯映射。

9.Iterative 映射

每种映射里面有相应的参考文献,可根据参考文献查看相应的公式和原理,也可以自行搜索原理,使用其他参考文献。

改进时添加混沌映射有用吗?

混沌映射(Chaotic Mapping)可以用于初始化粒子群算法的种群。混沌映射的特点是具有随机性、敏感性和确定性混合,因此可以提供一些不错的初始值,有助于增加算法的全局搜索性能。以下是混沌映射在初始化粒子群算法种群中的一些潜在作用:

1.增加种群的多样性:混沌映射生成的随机数序列具有较强的随机性,可以在种群中引入更多的多样性。这有助于避免算法陷入局部最优解,提高全局搜索能力。

2.提高全局搜索性能混沌映射的敏感性和迭代特性有助于使粒子群算法在初始阶段更好地探索搜索空间。通过使用混沌映射生成的初始值,可以增加算法的全局搜索性能。

3.避免重复初始化:由于混沌映射生成的数值较为独特,使用混沌映射初始化可以减少种群中个体初始值的重复情况,提高算法的探索效率。

4.改善算法的收敛速度混沌映射生成的初始值有助于使粒子群算法更快地朝着全局最优解方向收敛。这可以缩短算法的收敛时间,提高效率。

5.适用于高维问题:混沌映射可以生成高维空间中的随机数序列,适用于高维问题的初始化。这对于那些具有大量决策变量的优化问题是有益的。

尽管混沌映射在初始化粒子群算法中有一些潜在的优势,但其效果可能取决于具体的问题和算法设置,所以有些函数里面效果不一定优于原算法。在一些情况下,简单的随机初始化也可能达到良好的效果。因此,是否使用混沌映射初始化种群取决于具体问题的性质以及对算法性能的需求在实践中,可以进行实验比较,评估使用混沌映射初始化和不使用的效果。

下面是SPM混沌映射的混沌值和频数分布分布十分均匀,效果极佳

图片

下面以鲸鱼优化算法为例,采用Sinusoidal 混沌映射:

图片

图片

图片

图片

是否进行种群混沌初始化?

混沌映射作为一种初始化手段,确实可以增加算法的多样性和全局搜索性能,但在算法的后续迭代中,最终结果仍然受到算法自身的迭代更新和搜索策略的影响。即使是在初始化时采用了混沌映射,后续迭代中的搜索空间探索和个体更新仍然可能导致最终结果的不同。

正如我所指出的,随机生成的粒子也有一定概率在后续迭代中表现更好。因此,混沌映射作为一种初始化手段,并不是绝对必要的,而是一种可能有助于提高算法性能的选择。在实践中,对于不同的问题和算法,可以进行多次实验,通过比较使用混沌映射和不使用的结果,来确定是否采用混沌映射作为初始化的一部分。

总体来说,混沌映射是一种引入随机性的手段,用于增加算法的多样性和全局搜索能力,但并非适用于所有情况。在选择初始化方法时,需要综合考虑问题特性、算法性能和实验结果。

matlab源码获取,关注个人公众号:算法仓库,后台回复:CWOA


http://www.niftyadmin.cn/n/5324057.html

相关文章

线上剧本杀小程序搭建,未来线上剧本杀有哪些发展优势?

剧本杀游戏是当下比较流行的一种新型游戏模式,它能够让玩家在游戏中进行角色扮演,体验不同的角色人生,沉浸式玩游戏,因此受到了众多年轻人的喜欢。随着互联网科技的发展,剧本杀的发展也转型到了互联网上,为…

SDRAM小项目——写模块

写模块跟着视频看了一个多星期,一开始始终有点弄不清楚,现在记录一下理解的过程。 阅读文档信息: 首先阅读文档信息,了解SDRAM写过程的状态转换和时序图 SDRAM整体状态流程如图所示: 在SDRAM整体系统中&#xff0c…

2024--Django平台开发-Django知识点(七)

频率超高的问题 Redis的问题虚拟环境mysqlcient和pymysql短信服务,一期用的是腾讯云短信 虚拟环境 可以用来创建虚拟环境的: virtualenv这个模块,简单易上手,推荐 小白不建议,conda,如果大家用这个&…

C++深入学习之STL:1、容器部分

标准模板库STL的组成 主要由六大基本组件组成:容器、迭代器、算法、适配器、函数对象(仿函数)以及空间配置器。 容器:就是用来存数据的,也称为数据结构。 本文要详述的是容器主要如下: 序列式容器:vector、list 关联…

Kubernetes (十二) 存储——Volumes配置管理

一. 卷的概念 官方地址:卷 | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/storage/volumes/ 二. 卷的类型及使用 …

ssm基于web的电影购票系统+vue论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统电影购票信息管理难度大,容错率低&#xff0c…

openssl3.2 - 官方demo学习 - client-arg.c

文章目录 openssl3.2 - 官方demo学习 - client-arg.c笔记client-arg.cEND openssl3.2 - 官方demo学习 - client-arg.c 笔记 client-arg.c /*! \file client-argc. *//*! * \noteadd _CRT_SECURE_NO_WARNINGS to VS2019 option *//** Copyright 2013-2023 The OpenSSL Proj…

【LeetCode】27. 移除元素(简单)——代码随想录算法训练营Day01

题目链接:27. 移除元素 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺…