经典蝙蝠算法MATLAB实现

2023-05-16

为什么会有这么多基于群智能的算法,蚁群、粒子群、鱼群、烟花、炮竹、猪群、牛群、马群、羊群、猴群、鸡群。。。算法。??????
黑人问号.jpg
在这里插入图片描述
蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法是一种基于迭代的优化技术,初始化为一组随机解,然后 通过迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强了局部搜索。与其他算法相比,BA 在准确性和有效性方面远优于其他算法,且没有许多参数要进行调整。

BA算法是模拟自然界中蝙蝠利用一种声呐来探测猎物、避免障碍物的随机搜索算法即模拟蝙蝠利用超声波对障碍物或猎物进行最基本的探测、定位能力并将其和优化目标功能相联系。BA算法的仿生原理将种群数量为的蝙蝠个体映射为D维问题空间中的NP个可行解,将优化过程和搜索模拟成种群蝙蝠个体移动过程和搜寻猎物利用求解问题的适应度函数值来衡量蝙蝠所处位置的优劣,将个体的优胜劣汰过程类比为优化和搜索过程中用好的可行解替代较差可行解的迭代过程。在蝙蝠搜索算法中,为了模拟蝙蝠探测猎物、避免障碍物,需假设如下三个近似的或理想化的规则:

1)所有蝙蝠利用回声定位的方法感知距离,并且它们采用一种巧妙的方式来区别猎物和背景障碍物之间的不同。
2)蝙蝠在位置xi以速度vi随机飞行,以固定的频率fmin、可变的波长λ和音量A0来搜索猎物。蝙蝠根据自身与目标的邻近程度来自动调整发射的脉冲波长(或频率)和调整脉冲发射率r属于[0,1]
3)虽然音量的变化方式有多种但在蝙蝠算法中, 假定音量A是从一个最大值A0(整数)变化到固定最小值Amin
伪代码:
在这里插入图片描述
Maltab实现:
主函数代码:

function [bestMin, bestID] = MYBA()
%A new modification approach on bat algorithm for solving optimization problems
 
%omegaxyz.com 2019212日
 
clc
%% BA参数设置
 
t = 1; 
maxT = 500; %最大迭代次数
dim = 30; %问题的维度
sizep = 50; %种群大小
xmin = -100;
xmax = 100; %位置向量的范围
 
A = 0.6.*ones(sizep,1);    % 响度 (不变或者减小)
r = zeros(sizep,1);      % 脉冲率 (不变或增加))
r0 = 0.7;
Af = 0.9;
Rf = 0.9;
Qmin = 0;         % 最小频率
Qmax = 1;         % 最大频率
 
%% 初始化
 
Lb = xmin*ones(1,dim);
Ub = xmax*ones(1,dim);
pop = Lb+(Ub-Lb).*rand(sizep,dim); %种群初始化
popv = zeros(sizep,dim);   % 速度
Q = zeros(sizep,1);   % 频率
 
pfitness = zeros(dim,1);
for i = 1:sizep
    pfitness(i) = evaluate(pop(i,:)); %评价
end
[bestMin, bestID]=min(pfitness);
bestS = pop(bestID, :);
bestArchive = zeros(maxT,1);
%% 具体迭代过程
 
while t <= maxT
    for i = 1:sizep
        Q(i)=Qmin+(Qmax-Qmin)*rand();
        popv(i,:)=popv(i,:)+(pop(i,:)-bestS)*Q(i);
        Stemp = pop(i,:)+popv(i,:);
        % 脉冲率
         if rand>r(i)
             Stemp=bestS-1+2*rand(1,dim);
         end
         fitTemp = evaluate(Stemp);
         if (fitTemp<=pfitness(i))&&(rand()<A(i))
            pop(i,:) = Stemp;
            pfitness(i) = fitTemp;
            A(i) = Af*A(i);
            r(i) = r0*(1-exp(-Rf*t));
         end
         if fitTemp <= bestMin
            bestMin = fitTemp;
         	bestS = Stemp;
         end
    end
    bestArchive(t) = bestMin;
    fprintf('GEN: %d  min: %.4f\n', t, bestMin);
    t = t +1;
end
 
 
end

评价函数:
可以自己改

function z=evaluate(u)
    %Axis parallel hyperellipoid
    dim=size(u,2);
    z=sum((2:dim).*((u(2:dim)).^2));
end

更多内容访问 omegaxyz.com
网站所有代码采用Apache 2.0授权
网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2019 • OmegaXYZ-版权所有 转载请注明出处

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典蝙蝠算法MATLAB实现 的相关文章

  • 特征离散化概述

    定义 连续特征离散化是采取各种方法将连续的区间划分为小的区间 xff0c 并将这连续的小区间与离散值关联起来 连续特征离散化的本质是 xff1a 决定选择多少个分割点和确定分割点的位置 背景 连续数据经常采用离散化处理之后再放入模型 离散化
  • 汇编语言辗转相除法求最大公约数

    辗转相除法 xff0c 又名欧几里德算法 xff08 Euclidean algorithm xff09 xff0c 是求最大公约数的一种方法 它的具体做法是 xff1a 用较小数除较大数 xff0c 再用出现的余数 xff08 第一余数
  • JavaScript入门

    什么是JavaScript JavaScript xff0c 也称ECMAScript xff0c 是一种基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言 xff0c 同时也是一种广泛用于客户端Web开发的脚本语言 Ja
  • 基于互信息的特征选择算法MATLAB实现

    在概率论和信息论中 xff0c 两个随机变量的互信息 xff08 Mutual Information xff0c 简称MI xff09 或转移信息 xff08 transinformation xff09 是变量间相互依赖性的量度 不同于
  • 海明码汇编语言实现

    海明码简介 海明码其性能是检测一位错 xff0c 是在奇偶校验码的思想上发展起来的 xff0c 它在K位数据位中加入r个校验位 xff0c 形成一个K 43 r位的新码字 xff0c 并且将数据的每个二进制位分配到几个不同的奇偶校验组中 这
  • Linux通过Shell进行数学运算

    在Bash shell环境中 xff0c 可以利用let 和 来执行基本的算术操作 而高级的算术操作可以使用expr和bc这两个工具 let let操作 xff1a let命令可以直接执行基本的算术操作 xff0c 当使用let时 xff0
  • HTML常用标签

    简介 文本标记语言 xff0c 即HTML xff08 Hypertext Markup Language xff09 xff0c 是用于描述网页文档的一种标记语言 HTML之所以称为超文本标记语言 xff0c 是因为文本中包含了所谓 超级
  • HTML5与HTML4区别

    什么是html5呢 xff1f html5最先由WHATWG Web 超文本应用技术工作组 命名的一种超文本标记语言 xff0c 随后和W3C的xhtml2 0 标准 相结合 xff0c 产生现在最新一代的超文本标记语言 可以简单点理解成
  • 列向量互信息计算通用MATLAB代码

    互信息的定义 正式地 xff0c 两个离散随机变量 X 和 Y 的互信息可以定义为 xff1a 其中 p x y 是 X 和 Y 的联合概率分布函数 xff0c 而p x 和p y 分别是 X 和 Y 的边缘概率分布函数 其中 p x y
  • 面向初学者的 Python IDE:Thonny,你值得一试

    Thonny xff0c 这个号称为初学者打造的 IDE 体验怎么样 xff1f 简介 Python 的初学者面对的第一个勉强称得上是 IDE 的肯定是自带的 IDLE 了 我还专门写了一篇文章分析过 xff0c 但是这个工具实在有点古老
  • Python3 OpenCV

    OpenCV是一个基于BSD许可 xff08 开源 xff09 发行的跨平台计算机视觉库 xff0c 可以运行在Linux Windows Android和Mac OS操作系统上 它轻量级而且高效 由一系列 C 函数和少量 C 43 43
  • 基于非支配排序的多目标PSO算法

    这一篇是Xue Bing在一区cybernetics发的论文 xff0c 里面提出了两个多目标PSO特征选择算法 xff0c 一个是NSPSO另一个是CMDPSO 其中NSPSO是参考了NSGA2的框架和思想 下面具体说说NSPSO 非支配
  • kmeans聚类选择最优K值python实现

    Kmeans算法中K值的确定是很重要的 下面利用python中sklearn模块进行数据聚类的K值选择 数据集自制数据集 xff0c 格式如下 xff1a 手肘法 手肘法的核心指标是SSE sum of the squared errors
  • 高维(多变量)优化问题的技术与瓶颈

    现实世界中的优化问题往往具有较高的复杂度和维数 xff0c 称为LSGO问题 xff0c 即Large Scale Global Optimization 此问题在各个领域的研究工作中都引起了极大的兴趣 许多科学和工程应用程序被表述为LSG
  • 基于变长PSO的高维特征选择算法(VLPSO)概述

    原文 xff1a http www omegaxyz com 2018 09 16 vlpso 简介 原文 xff1a Variable Length particle swarm optimisation for feature sele
  • JavaWeb-MVC模式概述

    MVC设计模式 MVC模式 xff08 Model View Controller xff09 是软件工程中的一种软件架构模式 xff0c 把软件系统分为三个基本部分 xff1a 模型 xff08 Model xff09 视图 xff08
  • IntelliJ IDEA创建Java-Web项目

    eclipse和idea都能够创建Java web项目 下面介绍使用idea创建Java web项目的步骤 需要准备的东西 intellij idea xff08 包括jdk xff09 Tomcat7 0 43 可选 xff08 如果需要
  • 基于拥挤距离与变异支配的多目标PSO算法

    这一篇是Xue Bing在一区cybernetics发的论文 xff0c 里面提出了两个多目标PSO特征选择算法 xff0c 一个是NSPSO另一个是CMDPSO 其中NSPSO是参考了NSGA2的框架和思想 下面具体说说CMDPSO CM
  • Cohen-Sutherland算法概述

    思想 通过对于任一端点 x y xff0c 根据其坐标所在的区域 xff0c 赋予一个4位的二进制码 xff0c 判断图形元素是否落在裁剪窗口之内并通过求交运算找出其位于内部的部分 编码方式 注意 xff1a l为left xff0c r为
  • 人机交互的形式

    命令行交互 优点 xff1a 专家用户使用命令行能够更加快速地完成任务 较图形界面更加节约系统资源 对用户而言是开放的 xff0c 不存在图形界面中不能动态配置用户可操作选项的问题 键盘操作方式较鼠标操作更加精确 xff0c 对应用的掌控力

随机推荐

  • canvas 报错记录 (一)

    在执行下面代码的时候报错 var can 61 document getElementById 34 can 34 var ctx 61 can getContext ctx content cfillRect 500 500 200 20
  • 进化计算中基于分类的预处理代理模型

    问题提出 代理模型的构造较复杂 xff0c 作者希望构造一个更为简单的廉价 xff08 cheap xff09 的代理模型来评估子集的质量 因此作者提出了一个叫做CPS xff08 classification based preselec
  • Python利用Graphviz画图

    Graphviz的是AT amp T Labs Research开发的图形绘制工具软件 Graphviz的是AT amp T Labs Research开发的图形绘制工具 他可以很方便的用来绘制结构化的图形网络 支持多种格式输出 生成图片的
  • Java-Web项目总结

    使用jetbrain的idea创建Java Web项目 链接地址 xff1a http www omegaxyz com 2018 10 04 intellij idea java web Java MVC模式概述 链接地址 xff1a h
  • 基于WMD(词移距离)的句子相似度分析简介

    word2vec word2vec是只有一个隐层的全连接神经网络 对语料中的所有词汇进行训练并生成相应的词向量 xff08 Word Embedding xff09 WI 的大小是VxN V是单词字典的大小 每次输入是一个单词 N是设定的隐
  • Android 使用字符串动态获取资源ID

    android文件中每个文件都有一个ID xff0c 如下图所示 xff0c 左边的0x7f060000即是文件的ID xff1a 如果我们想在代码中获取这个文件的ID应该使用高效率的反射机制 xff0c 可以新建一个Java类代码如下 x
  • wxpython画表格代码

    wxPython是Python语言的一套优秀的GUI图形库 允许Python程序员很方便的创建完整的 功能键全的GUI用户界面 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户
  • 数据库c3p0配置SQL Server与MySQL

    C3P0是一个开源的JDBC连接池 xff0c 它实现了数据源和JNDI绑定 xff0c 支持JDBC3规范和JDBC2的标准扩展 目前使用它的开源项目有Hibernate xff0c Spring等 SQL Server配置 xff1a
  • JSP连数据库登录检查用户名和密码模板

    JSP全名为Java Server Pages xff0c 中文名叫java服务器页面 xff0c 其根本是一个简化的Servlet设计 xff0c 它是由Sun Microsystems公司倡导 许多公司参与一起建立的一种动态网页技术标准
  • 基于移动设备与CNN的眼动追踪技术简介

    眼动追踪是一项科学应用技术 xff0c 用户无需与交互设备物理接触即可发送信息与接收反馈 从原理上看 xff0c 眼动追踪主要是研究眼球运动信息的获取 建模和模拟 xff0c 用途颇广 而获取眼球运动信息的设备除了红外设备之外 xff0c
  • 递归下降实现LL(1)文法分析C语言与Python实现

    对文法G的句子进行确定的自顶向下语法分析的充分必要条件是 xff0c G的任意两个具有相同左部的产生式A gt 满足下列条件 xff1a xff08 1 xff09 如果 均不能推导出 xff0c 则 FIRST FIRST 61 xff0
  • Ubuntu下gcc的安装

    sudo apt get build dep gcc
  • PyTorch入门

    PyTorch入门 PyTorch 是一个建立在 Torch 库之上的 Python 包 xff0c 旨在加速深度学习应用 PyTorch 提供一种类似 NumPy 的抽象方法来表征张量 xff08 或多维数组 xff09 xff0c 它可
  • 华氏451

    2015年12月21日 xff0c 因特网工程指导组 IETF 批准了全新HTTP状态错误代码 451 xff0c 这个代码的官方释义为 由于法律原因而不可用 451 数字来源于 1953 年由美国作家雷 布莱伯利所著的反乌托邦小说 华氏
  • 蚁群算法最短路径规划多出口情况及问题答疑

    最近好多人问我蚁群算法最短路径规划如何设置多出口情况 xff0c 原来2019年美赛D题 拯救卢浮宫 需要用到 本人没有看过美赛的题目 xff0c 下面给出一些不成熟的代码 蚁群算法简介 xff1a 蚁群算法最早是由Marco Dorigo
  • 反世代距离评价指标IGD

    反世代距离评价指标 Inverted Generational Distance IGD 是一个综合性能评价指标 它主要通过计算每个在真实 Pareto前沿面上的点 个体 到算法获取的个体集合之间的最小距离和 xff0c 来评价算法的收敛性
  • 遗传算法解决TSP问题MATLAB实现(详细)

    问题定义 xff1a 巡回旅行商问题 给定一组n个城市和俩俩之间的直达距离 xff0c 寻找一条闭合的旅程 xff0c 使得每个城市刚好经过一次且总的旅行距离最短 TSP问题也称为货郎担问题 xff0c 是一个古老的问题 最早可以追溯到17
  • 二叉树遍历的转换C++实现

    二叉树的遍历分为以下三种 xff1a 先序遍历 xff1a 遍历顺序规则为 根左右 中序遍历 xff1a 遍历顺序规则为 左根右 后序遍历 xff1a 遍历顺序规则为 左右根 什么是 根左右 就是先遍历根 xff0c 再遍历左节点 xff0
  • Java数据存取对象(DAO)

    什么是DAO DAO xff08 Data Access Object xff09 顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象 xff0c 在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作 在实际的开发中 xff
  • 经典蝙蝠算法MATLAB实现

    为什么会有这么多基于群智能的算法 xff0c 蚁群 粒子群 鱼群 烟花 炮竹 猪群 牛群 马群 羊群 猴群 鸡群 算法 xff1f xff1f xff1f xff1f xff1f xff1f 黑人问号 jpg 蝙蝠算法 BA 是 Yang