基于非线性权重因子和纵横交叉策略的麻雀搜索算法

news/2024/5/19 17:37:04/文章来源:https://blog.csdn.net/zhangxd212489/article/details/130036425

目录

1 主要内容

非惯性权重模型

纵横交叉策略模型

2 部分程序

3 程序结果

4 程序链接


主要内容

该程序参考文献《基于Sobol序列和纵横交叉策略的麻雀搜索算法》对麻雀搜索算法进行改进,实现了基于纵横交叉策略和非线性权重因子的麻雀搜索算法 改进SSA算法【matlab代码】,主要改进如下:

- 改进1:采用一种指数形式的非线性惯性权重提高算法的收敛效率。

- 改进2:应用纵横交叉策略对算法进行改进,利用横向交叉增强全局搜索能力,利用纵向交叉保持种群的多样性并防止算法陷入局部最优。

  • 非惯性权重模型

  • 纵横交叉策略模型

部分程序

  % 改进1:★★非线性惯性权重★★w = exp(1-(M+t)/(M-t));x( sortIndex( i ), : ) = pX( sortIndex( i ), : ) * w; x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );fit( sortIndex( i ) ) = fobj( x( sortIndex( i ), : ) );   end
elsefor i = 1 : pNum          x( sortIndex( i ), : ) = pX( sortIndex( i ), : )+randn(1)*ones(1,dim);x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );fit( sortIndex( i ) ) = fobj( x( sortIndex( i ), : ) );      end  
end[~, bestII] = min(fit);      
bestXX = x(bestII,:);            
​
%% 跟随者位置更新
for i = ( pNum + 1 ) : pop                     % Equation (4)
​A=floor(rand(1,dim)*2)*2-1;if( i>(pop/2))x( sortIndex(i ), : )=randn(1)*exp((worse-pX( sortIndex( i ), : ))/(i)^2);elsex( sortIndex( i ), : )=bestXX+(abs(( pX( sortIndex( i ), : )-bestXX)))*(A'*(A*A')^(-1))*ones(1,dim);  end  x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );fit( sortIndex( i ) ) = fobj( x( sortIndex( i ), : ) );end
​
c=randperm(numel(sortIndex));
b=sortIndex(c(1:20)); 
%% 警戒者位置更新
​
for j =  1  : length(b)      % Equation (5)% 改进2.1:★★横向交叉策略★★if (mod(j,2) == 1)for i = 1 : dimr = rand();c = 2*rand()-1;x_criss( sortIndex( b(j) ), i ) = r * pX( sortIndex( b(j) ), i )+(1-r)*pX( sortIndex( b(j+1) ), i )+c*(pX( sortIndex( b(j) ), i )-pX( sortIndex( b(j+1) ), i ));endelsefor i = 1 : dimr = rand();c = 2*rand()-1;x_criss( sortIndex( b(j) ), i ) = r * pX( sortIndex( b(j-1) ), i )+(1-r)*pX( sortIndex( b(j) ), i )+c*(pX( sortIndex( b(j-1) ), i )-pX( sortIndex( b(j) ), i ));endendif fobj( x_criss( sortIndex( b(j) ), : ) ) < fobj( pX( sortIndex( b(j) ), : ) )x( sortIndex( b(j) ), : ) = x_criss( sortIndex( b(j) ), : );elsex( sortIndex( b(j) ), : ) = pX( sortIndex( b(j) ), : );endx( sortIndex(b(j) ), : ) = Bounds( x( sortIndex(b(j) ), : ), lb, ub );fit( sortIndex( b(j) ) ) = fobj( x( sortIndex( b(j) ), : ) );% 改进2.2:★★纵向交叉策略★★for i = 1 : dimd1 = randperm(dim,1);d2 = randperm(dim,1);r1 = rand();x_cross(sortIndex( b(j) ), i) = r1*x( sortIndex(b(j) ), d1 ) + (1-r1)*x( sortIndex(b(j) ), d2 );endif fobj( x_cross( sortIndex( b(j) ), : ) ) < fobj( x( sortIndex( b(j) ), : ) )x( sortIndex( b(j) ), : ) = x_cross( sortIndex( b(j) ), : );elsex( sortIndex( b(j) ), : ) = x( sortIndex( b(j) ), : );endx( sortIndex(b(j) ), : ) = Bounds( x( sortIndex(b(j) ), : ), lb, ub );fit( sortIndex( b(j) ) ) = fobj( x( sortIndex( b(j) ), : ) );
​
end
​

程序实现了23种测试函数,可以通过更改main函数中的“F+编号”进行多函数性能测试。

程序结果

测试函数1

测试函数10

结果表明:改进算法较原算法优势显著。
智能算法最重要的就是改进策略,这种策略形式也可以用到其他智能算法里面,通过其他方式的组合形成新的改进算法,也是智能算法创新的重要方向。

4 程序链接

点击直达!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_283768.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack配置本地TypeScript编译环境和开启本地服务

目录 1.创建一个文件夹 2.初始化一个package.json文件对我们安装包进行记录 3.安装webpack 4.配置webpack.config.js文件 1.创建一个文件夹 2.初始化一个package.json文件对我们安装包进行记录 执行npm init&#xff0c;文件命名为ts_demo&#xff0c;然后一直回车。 3.安装…

ImageIO 支持webp格式

TwelveMonkeys 提供了很多图片格式的支持&#xff0c;其中也包括了webp&#xff0c;但是其仅支持webp格式的读取&#xff0c;不支持webp格式的写出&#xff0c;这样的话如果想把图片转换成webp格式的图片就没办法实现了&#xff1b;下面我们使用 webp-imageio-core 对ImageIO图…

关键词采集工具可以帮助我们做那些方面的工作

针对搜索引擎的关键词采集工具可以帮助我们做那些方面的工作&#xff0c;至少从10个工作场景说明&#xff0c;并列举详细的使用场景 Msray-plus&#xff0c;是一款企业级综合性爬虫/采集软件。 支持亿级数据存储、导入、重复判断等。无需使用复杂的命令&#xff0c;提供本地W…

ROS实践01 C++ Python基本实现

文章目录运行环境&#xff1a;1.1 vscode 环境配置&#xff1a;1&#xff09;ctrlshiftX 添加扩展插件&#xff1a;2&#xff09;ctrlshiftB 配置中更换为以下代码1.2 C代码实现1&#xff09;工作空间创建和编译2&#xff09;功能包创建和添加依赖3&#xff09;新建.cpp文件4&a…

新电脑装机——配置硬件、软件安装卸载、注册表、路径——介绍详解

装机工具、配置、路径&#xff0c;介绍详解电脑配置信息电脑历史记录黑色Window Top 加入黑色&#xff08;微信不能调成黑色背景&#xff09;edge浏览器的配置&#xff08;被edge恶心过的必看&#xff0c;有方法解决edge被管理、不能新建标签&#xff09;设置【地址栏搜索】&am…

多元函数的基本概念——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是多元函数的基本概念&#xff0c;下面&#xff0c;让我们一起进入多元函数的世界吧 平面点集 多元函数的概念 多元函数的极限 多元函数的连续性 有界闭区域上多元连续函数的性质 平面点集 第一个是坐标平…

RocketMQ 事务消息 详解

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年4月9日 &#x1…

RSA非对称加密算法原理和代码实现 信息安全 密码学

一 欧拉数论定理 1. 欧拉函数 设n为一正整数&#xff0c;则欧拉函数φ(n)\varphi (n)φ(n)等于0∼n−10\sim n-10∼n−1中与n互素的整数个数 比如φ(5)4\varphi (5) 4φ(5)4&#xff0c;因为0~5中&#xff0c; 1,2,3,4均与5互素&#xff0c;即最大公约数为1 2. 欧拉定…

采集工具助力市场营销,让您的营销更加高效

随着市场竞争的日益激烈&#xff0c;企业的营销策略也在不断升级。而在这个信息爆炸的时代&#xff0c;采集数据成为了市场营销中不可或缺的一环。为了更好地服务客户&#xff0c;我们公司开发了一款高效、快捷的采集工具&#xff0c;为您的营销活动提供有力支持。 Msray-plus&…

计算机网络习题 | 第一章:计算机网络概述

文章目录概述1、以下关于OSI环境中数据传输的过程的描述中&#xff0c;错误的是&#xff08; &#xff09;2、以下关于广域网 WAN 特点的描述中 &#xff0c;错误的是&#xff08; &#xff09;3、以下关于计算机网络定义的描述中&#xff0c;错误的是&#xff08; &#xff09…

【分布式 论文】之 1. MapReduce——Simplified Data Processing on Large Clusters

文章目录1. 需求 / 现存问题2. 总述3. 实现3.1 概述1. 需求 / 现存问题 输入数据通常很大&#xff0c;为了在合理的时间内完成计算&#xff0c;必须将计算分布到数百或数千台机器上。 如何并行化计算、分发数据和处理故障等问题使得原本简单的计算变得晦涩难懂&#xff0c;需…

chatGPA的主要功能-chatGPT深度分析

ChatGPT功能介绍 ChatGPT是基于深度学习技术的自然语言处理算法&#xff0c;其主要用途是生成自然语言文本&#xff0c;能够应用于多个自然语言处理任务。以下是其主要功能介绍&#xff1a; 文本生成&#xff1a;ChatGPT能够生成高质量的自然语言文本&#xff0c;可以应用于大…

Mybatis-plus学习2

一、Mybatis-plus分页操作 1.配置拦截器即可 //分页插件Beanpublic PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor();} 2.直接使用Page对象 //测试分页查询Testpublic void testPage(){//参数一&#xff1a;当前页//参数二&#xff1a;页面…

关键词采集软件在SEO优化中的应用与效果

搜索引擎的优化被广泛认为是提高网站排名和在线可见性的重要方法之一。SEO人员需要进行大量的工作以确保网站的内容和标签可以被搜索引擎正确地解析和索引。在这项任务中&#xff0c;使用搜索引擎关键词采集软件可以帮助SEO人员完成许多繁琐的任务并简化他们的工作流程。在本文…

【C语言】数组指针-c语言的任督二脉

视频链接:bilibili 关于指针需要注意的地方 只有以下两种情况数组名表示的是整个数组 1.sizeof(数组名) 2.&数组名 除此之外数组名表示的都是首元素地址 一、字符指针 是一个指向字符的指针 int main() {char ch w;char* p &ch;//char* ch2 "abcdef"…

【TreeSet】| 深度剥析Java SE 源码合集Ⅳ

目录一. &#x1f981; 前言二. &#x1f981; 剥析流程2.1 类图2.2 属性2.3 构造方法2.4 添加单个元素2.5 移除单个元素2.6 查找单个元素2.7 查找接近的元素2.8 获得首尾的元素2.9 清空2.10 克隆2.11 序列化2.12 反序列化2.13 获得迭代器2.14 转换成 Set/Collection2.15 查找范…

Python 进阶指南(编程轻松进阶):二、环境配置和命令行

原文&#xff1a;http://inventwithpython.com/beyond/chapter2.html 环境配置是配置你的计算机环境&#xff0c;以便你写代码的过程。这包括安装任何必要的工具&#xff0c;配置它们&#xff0c;以及处理安装过程中的任何问题。没有一键配置这种傻瓜式操作过程&#xff0c;因为…

分享一个智能的问答工具,刷题和学习的好帮手

使用了这个问答工具后&#xff0c;感觉前后端都要被替代了&#xff0c;太强了。 由于本人之前很想体验&#xff0c;但是一直难搞&#xff0c;最近发现了一个免梯子的&#xff0c;重要事情说一遍&#xff0c;免梯子&#xff01;是我最近发现的最好用&#xff0c;最快的&#xff…

OpenCV实战——多尺度FAST特征检测

OpenCV实战——多尺度FAST特征检测0. 前言1. BRISK 特征检测器1.1 BRISK 检测关键点1.2 多尺度关键点快速检测2. ORB 特征检测算法3. 完整代码相关链接0. 前言 FAST 是用于快速检测图像中关键点的方法&#xff0c;而 SURF 和 SIFT 算法的设计重点是尺度不变性。为了同时实现快…

【软件设计师10】软件工程

软件工程 1. 瀑布模型SDLC - 结构化 优点&#xff1a;结构化方法模型&#xff0c;每个阶段分工明确&#xff1b;出现问题可以向上层回溯 缺点&#xff1a;需求阶段难以把控&#xff0c;在项目初期&#xff0c;软件的需求几乎是不明确的&#xff0c;等开发完用户往往再提出问…