Matlab|混合策略改进的蝴蝶优化算法

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

程序主要对蝴蝶算法(BOA)进行改进,参考文献《基于改进蝴蝶优化算法的冗余机器人逆运动学求解》,有如下改进策略:

  • 改进1:采用反向学习策略构建精英种群,提高种群质量
  • 改进2:在全局搜索阶段,引入柯西变异,增强算法跳出局部最优的能力
  • 改进3:引入随机惯性权重改变前一位置对当前位置更新的影响,确保能跳出局部最优

1.1 改进详细模型

改进惯性权重方法比较常见,不同的非线性函数能够得到不同的优化方法,程序中采用sin函数构造惯性权重的进化曲线,当然大家在编程过程中也可以采用其他非线性函数,如Sigmoid函数(见下图),甚至可以用分段方式提高算法的创新性。

转自《一种改进惯性权重的混沌粒子群优化算法》—谷晓琳

部分代码

function [fmin,best_pos,Convergence_curve]=IBOA(n,N_iter,Lb,Ub,dim,fobj)
​
p=0.8; % probabibility switch,开关概率
power_exponent=0.1; % 幂指数
sensory_modality=0.01; % 感觉因子
​
%Initialize the positions of search agents
% Sol=initialization(n,dim,Ub,Lb);
% ★★改进1:反向学习种群初始化★★
Sol_forward=initialization_for(n,dim,Ub,Lb);
Sol_backward=initialization_back(Sol_forward,n,dim,Ub,Lb);
Sol_all=[Sol_forward;Sol_backward];
for i = 1:2*nSol_all_fitness(i)=fobj(Sol_all(i,:));
end
[~,sorted_indexes]=sort(Sol_all_fitness);
for i = 1:nSol(i,:)=Sol_all(sorted_indexes(i),:);
end
​
for i=1:nFitness(i)=fobj(Sol(i,:));
end
​
% Find the current best_pos
[fmin,I]=min(Fitness);
best_pos=Sol(I,:);
S=Sol; 
​
% Start the iterations -- Butterfly Optimization Algorithm 
for t=1:N_iterfor i=1:n% Loop over all butterflies/solutions%Calculate fragrance of each butterfly which is correlated with objective function,计算与目标函数相关的每只蝴蝶的香味Fnew=fobj(S(i,:));FP=(sensory_modality*(Fnew^power_exponent)); % 每只蝴蝶的香味
​%Global or local searchif rand

2:全局搜索阶段引入柯西变异★★ ori_value = rand(1,dim);

程序结果

混合策略改进蝴蝶算法提供了23种测试函数,可以通过main程序修改测试函数,程序Get_Functions_detailsPRO有具体每个测试函数的公式,下面得到F2和F5两种测试函数下的原始算法和改进算法收敛性对比。

测试函数F2:

测试函数F5:

4 下载链接

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

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

相关文章

手把手带你做一个自己的网络调试助手(1) - TCP服务器准备

程序设计流程图 TCP 服务器 ui界面搭建 Tcp服务器建立连接 - listen() connect() 1.在构造函数中进行如下初始化: 通过 QNetworkInterface 类的 allAddresses 这一API 获得可用IP地址(包括IPv4 和 IPv6) 然后通过QHostAddress类的 protocol 这一AP…

C++,观察者模式,模拟Qt的信号和槽机制

运行在VS2022,x86,Debug下 33. 模拟Qt信号和槽机制 信号与槽实现原理:观察者模式,即当一个对象被修改时,就会自动通知依赖它的对象。应用:对象间的通信。Qt实现信号与槽,代码如下。 #include…

使用vite从0开始搭建vue项目

使用Vite从0开始创建vue项目 第一步:创建项目目录 mkdir vue-demo -创建目录 cd vue-demo --进入项目 npm init -y --生成package.json文件 第二步:安装vite、typescript--ts、vue、vitejs/plugin-vue--对单文件组件、热重载、生产优化的支持 pnpm…

“三夏”农忙:EasyCVR/EasyDSS无人机技术助推现代农业走向智能化

随着科技的飞速发展,无人机技术已经逐渐渗透到我们生活的方方面面。其中,无人机在农业领域的应用尤为引人注目。它们不仅提高了农业生产的效率,还为农民带来了更便捷、更智能的种植方式。 无人机在农业应用场景中,通过搭载各种设备…

DeepSpeed入门

pip install deepspeed 支持transformers: --deepspeed,以及config文件; model_engine, optimizer, _, _ deepspeed.initialize(argscmd_args,modelmodel,model_parametersparams) 分布式和mixed-precision等,都包含在deepspeed.initialize和…

【数据结构】 -- 堆 (堆排序)(TOP-K问题)

引入 要学习堆,首先要先简单的了解一下二叉树,二叉树是一种常见的树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。它具有以下特点: 根节点(Root):树的顶部节…

Python有什么功能:探索Python的无限可能

Python有什么功能:探索Python的无限可能 Python,作为一种强大且灵活的编程语言,已经深入到各个领域,展现出其独特的功能和魅力。那么,Python究竟有哪些令人惊叹的功能呢?让我们一起揭开这个神秘的面纱。 …

电脑回收站清空了怎么恢复回来?分享四个好用数据恢复方法

电脑回收站清空了还能恢复回来吗?在使用电脑过程中,很多小伙伴都不重视电脑的回收站,,有用的没用的文件都往里堆积。等空间不够的时候就去一股脑清空回收站。可有时候会发现自己还需要的文件在回收站里,可回收站已经被清空了……那…

解决Python使用GPU

在Python中使用GPU进行计算通常涉及到一些特定的库,如NumPy、SciPy的GPU加速版本(如CuPy、PyCUDA等)或深度学习库(如TensorFlow、PyTorch等)。这些库能够利用GPU进行并行计算,从而加速数据处理和模型训练等…

2024.6.9 六

Python内置库OS 在使用前要引入 import os相关函数 os.getcwd() 获取当前工作目录 os.listdir(path) 返回一个包含指定路径下文件(或文件夹)名字的列表 os.mkdir(path) 在指定path下创建一个文件夹,名字包含在路径里了,存在就报错 os.makedirs(path) 创建多级文件夹 os.rmdi…

【xilinx】vivado提示No common node between related clocks,什么意思,需要改动设计吗

Vivado 提示 "No common node between related clocks" 通常指的是在进行时序分析时,Vivado 工具无法找到一个共同的节点(例如,寄存器或内存元素)来关联两个时钟域中的时钟。这可能发生在跨时钟域的设计中,其…

Web前端动画插件:探索、比较与实用指南

Web前端动画插件:探索、比较与实用指南 在Web前端开发中,动画插件是提升用户体验和增强界面吸引力的关键工具。本文将从四个方面、五个方面、六个方面和七个方面深入探讨Web前端动画插件,为您提供一份实用的指南。 四个方面:动画…

YoloV9改进策略:主干网络篇|MobileNetV4主干替换YoloV9的BackBone(独家原创)

摘要 今年,轻量级王者MobileNetV4闪亮登场!在我们这篇文章里,我们把MobileNetV4加入到了YoloV9中,对MobileNetV4的层数和卷积层核做了适当的修改,然后替换原有的BackBone。哈哈,你猜怎么着?效果…

1数据库网课笔记

文章目录 前言知识点一些复习的想法考试题型分布 前言 自己真是服了自己了, 23 23 23 讲的网课没看多少,速成的网课貌似看了两个了,但也是走马观花看的,现在离期末考试还有二十多天,按道理说时间也还算充足&#xff…

Docker基本架构概览-1

Docker基本架构概览 Docker架构 Docker采用客户端-服务器(C/S)架构,主要组件包括: Docker Client 用户与Docker交互的接口,发送命令到Docker守护进程。 Docker Daemon 运行在后台,接收并处理Docker客户端…

基于JSP的医院远程诊断系统

开头语: 你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言: Java 数据库: MySQL 技术: JSP Servlet JSPBean 工具: IDEA/Eclipse、Navica…

UltraScale+系列模块化仪器,可以同时用作控制器、算法加速器和高速数字信号处理器

基于 XCZU7EG / XCZU4EG / XCZU2EG • 灵活的模块组合 • 易于嵌入的紧凑型外观结构 • 高性能的 ARM Cortex 处理器 • 成熟的 FPGA 可编程逻辑 ,基于 IP 核的软件库 基于 Xilinx Zynq UltraScaleMPSoC 的 FPGA 技术,采用 Xilinx Zynq UltraScale&a…

BGP属性2

4、AS-PATH BGP的路由条目在传递过程中,记录所有经过过的AS号; 优选经过的AS数量较少的路径; 人为的在BGP路由条目中,增加AS-PATH数量,可以做到干涉选路; 但增加AS号也能在EBGP邻居关系间配置&#xff…

Mysql基础进阶速成2

看着篇文章之前先看我的前一章:MySQL基础进阶速成1 函数: 每个字段使用一个函数:select 函数(字段名)from 表名 upper:将字符串中的字母大写 lower:将字符串中的字符小写 max:得到最大值 min&#xf…

Python进阶之-mmap详解

✨前言: Python中的mmap模块允许你创建一个内存映射的文件,这意味着文件数据直接映射到虚拟内存。这样做的好处包括:提高文件访问速度、可通过修改内存来修改文件、可以像操作普通内存一样操作这块特殊的内存区域。 ✨mmap基础 要使用mmap…