基于改进人工蜂群算法的 K 均值聚类算法(Matlab代码实现)

news2024/11/26 12:43:17

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

复现论文:

 基于以上三点改进提出了 IABC-Kmeans 算法。该算法的基本思想是: 通过 IABC 算法进行一次迭代,将迭代得到的新位置作为 KMC 的初始点并进行一次 K 均值聚类,再用聚类获得的新的中心点更新蜂群; 如此交替执行 IABC 算法和 K均值聚类,直到算法结束。

算法基本步骤描述如下:

步骤 1 设置引领蜂、跟随蜂和侦察蜂的数量( 一般有引领蜂数量 = 跟随蜂数量) ; 最大迭代次数 MCN 以及控制参数Limit; 当前迭代次数Cycle,初始值为1; 聚类类别数 k; 利用最大最小距离积法初始化蜂群,产生 { Z1,Z2,…,ZN } 个初始蜂 群。

步骤 2 对初始蜂群进行一次聚类划分,根据式( 5) 计算每只蜜蜂的适应度,按照适应度大小排序,将前一半作为引领蜂,后一半作为跟随蜂。

步骤 3 引领蜂利用式( 6) 对其邻域进行搜索,得到新的位置,按照贪婪选择原则,如果新的位置的适应度大于原先位置的适应度,则用新的位置更新原位置; 否则,保持原位置不变。当所有引领蜂完成邻域搜索后,根据式( 4) 计算概率 Pi。

步骤 4 跟随蜂利用算得的概率 Pi 并基于轮盘赌原则选择引领蜂,原则上,Pi 越大,表明引领蜂 i 的适应度值越大,被跟随蜂选中的概率也越大。当跟随蜂完成引领蜂选择后,利用式( 7) 对邻域搜索,同样按照贪婪选择原则选择适应度高的位置。

步骤 5 在所有跟随蜂完成搜索后,将得到的位置作为聚类中心,对数据集进行一次 K 均值迭代聚类,根据聚类划分,用每一类的新的聚类中心更新蜂群。

步骤 6 如果某引领蜂在 Limit 次迭代后,结果都没有改变,则由引领蜂变为侦察蜂,并随机产生一个新的位置取代原位置。

步骤 7 如果当前迭代次数大于最大次数 MCN,则迭代结束,算法结束; 否则转向步骤 2,Cycle = Cycle + 1。

📚2 运行结果

 

部分代码:


function [Colony Obj Fit oBas]=GreedySelection(Colony1,Colony2,ObjEmp,ObjEmp2,FitEmp,FitEmp2,fbas,ABCOpts,i)

oBas=fbas;
Obj=ObjEmp;
Fit=FitEmp;
Colony=Colony1;
if (nargin==8)%Inside the body of a user-defined function, NARGIN returns the number of input arguments that were used to call the function. 
for ind=1:size(Colony1,1)%ind=1:5,对所有食物源进行贪婪选择
    if (FitEmp2(ind)>FitEmp(ind))%如果Vi的适应度值大于Xi的,替换,,
        oBas(ind)=0;
         %zj因为这是已经被新的位置更新了,所以其开采度应该置为零,表示这是第一次,没有被开采过
        Fit(ind)=FitEmp2(ind);
        Obj(ind)=ObjEmp2(ind);
        Colony(ind,:)=Colony2(ind,:);
    else%否则不变,并且计数器bas+1
        oBas(ind)=fbas(ind)+1;
         %zj因为新的位置的适应度没有当前的好(大),所以在当前位置上仍保留当前解,表示当前又被开采了一次
        Fit(ind)=FitEmp(ind);
        Obj(ind)=ObjEmp(ind);
        Colony(ind,:)=Colony1(ind,:);
    end;
end; %for
end; %if
if(nargin==9)%第i个引领蜂被跟随,只对第i个食物源进行贪婪选择
    ind=i;
    if (FitEmp2(ind)>FitEmp(ind))
        oBas(ind)=0;
        Fit(ind)=FitEmp2(ind);
        Obj(ind)=ObjEmp2(ind);
        Colony(ind,:)=Colony2(ind,:);
    else
        oBas(ind)=fbas(ind)+1;
        Fit(ind)=FitEmp(ind);
        Obj(ind)=ObjEmp(ind);
        Colony(ind,:)=Colony1(ind,:);
    end;
end; 
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]喻金平,郑杰,梅宏标.基于改进人工蜂群算法的K均值聚类算法[J].计算机应用,2014,34(04):1065-1069+1088.

🌈4 Matlab代码、数据、文章讲解

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

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

相关文章

ModaHub魔搭社区专访百度智能云李莅:什么样的企业适合什么类型的向量数据库?

ModaHub魔搭社区:向量数据库会像传统数据库一样面临着选型问题吗?您能介绍下,什么样的企业适合什么类型的向量数据库吗?是单机版的还是插件版的,还是企业级的? 李莅的观点非常明确,他认为在选型的时候,首先要考虑的是需求。如果业务量级不是特别大,而且有成本方面的考…

背书方法--记忆宫殿

项目进度管理的工具 记忆宫殿或场景法:果树抽水(流程是:果树的果子,水池的水,抽水机的水):想象一下你家附近有个巨大的果树,人们为了保护它,修建了个池子,昨…

IDEA中的“Deployment“ 将项目直接部署到服务器上

ntelliJ IDEA中的"Deployment"工具栏是一个方便的工具,用于将你的项目直接部署到服务器上。这个工具栏提供了三种部署的方式: 1.Web Server在本地电脑上,并且服务器运行目录也在项目目录下。 2.Web Server在本地电脑上,…

JWT一篇通

JWT 是什么? JWT(JSON Web Token)是一种开放的标准,标准的编号是RFC7591。用于在不同实体之间安全地传输信息。它是基于 JSON 编码的令牌。 JWT 的组成 JWT由三个部分组成:头部(Header)、载荷…

从C++98到C++26,经历了什么?

作为一名程序员,2023年最应该关注的话题就是C的标准更新。 C标准遵循3年开发周期,并以发布年份命名。C在临发布的一年前会进入“功能冻结期(feature freeze)”,即版本开发进入半稳定状态,不再添加重大功能及…

【C语言】入门——指针

目录 ​编辑 1.指针是什么 2.指针类型和指针运算 2.1指针-整数 2.2指针-指针 2.3指针的关系运算 3.野指针 3.1野指针成因 👍指针未初始化: 👍指针越界访问: 👍指针指向空间释放: 3.2如何规避野指针 …

PDF转Word的方法分享与注意事项。

PDF和Word是两种常用的文档格式,它们各有优点,适用于不同的场景。然而,有时候我们需要将PDF转换为Word,以便更好地进行编辑和排版。本文将介绍几种常用的PDF转Word的方法,并分享一些注意事项。 一、PDF转Word的方法 使…

性能炸裂c++20协程+iocp/epoll,超轻量高性能异步库开发实战

前言: c20出来有一段时间了。其中一大功能就是终于支持协程了(c作为行业大哥大级别的语言,居然到C20才开始支持协程,我也是无力吐槽了,让多少人等了多少年,等了多少青春)但千呼万唤他终于还是来…

python图书书籍管理系统及推荐评分系统vue

本系统提供给管理员对书籍分类、书籍信息、书籍评分、留言板等诸多功能进行管理。本系统对于用户输入的任何信息都进行了一定的验证,为管理员操作提高了效率,也使其数据安全性得到了保障。随着信息化时代的到来,网络系统都趋向于智能化、系统…

拿下数千万元A轮融资,这家HUD厂商驶入规模上车的“快车道”

进入2023年,AR HUD市场迎来了爆发式增长,一批本土HUD厂商开始备受资本市场的关注。 近日,深圳前海智云谷科技有限公司(以下简称“智云谷”)完成数千万元A轮融资,本轮融资由清新资本等投资方投资。智云谷表…

你以为的直线,在多维空间里是复杂的曲线

你以为的直线,在多维空间里是复杂的曲线 AI回答: 这句话是说,在多维空间中,我们的直觉和经验可能会误导我们,认为一条直线应该是简单直接的。然而,在高维空间中,直线可能会有很多突变和弯曲&am…

ES6中let和const关键字与var关键字之间的区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量作用域(Scope):⭐ 变量提升(Hoisting):⭐ 重复声明:⭐ 初始化:⭐ 全局对象属性:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#…

41.SpringMVC实现下载和上传功能

SpringMVC实现下载和上传功能 下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文 index.html <a th:href"{/testDown}">下载图片</a>使用ResponseEntity实现下载文件的功能FileUpAndDownCon…

MCS-51单片机温度控制系统的设计

一、项目介绍 注塑机是一种常用的制造设备&#xff0c;用于生产塑料制品。在注塑机的工作过程中&#xff0c;溶胶必须达到一定的温度才能被注入模具中进行成型。因此&#xff0c;在注塑机的生产过程中&#xff0c;温度控制是非常重要的一环。 本项目基于MCS-51单片机设计了一…

关于TE,PU邀请函

有人问我说客户让办理TE邀请函&#xff0c;具体步骤是哪些&#xff1f;我目前还没遇到过客户要求办理TE邀请函的&#xff0c;基本上都是普通的商务签证&#xff0c;只要写个邀请函给客户&#xff0c;剩下的事情客户就能自己搞定&#xff0c;他们来访的目的简单&#xff0c;要么…

虹科方案|HK-Edgility利用边缘计算和VNF降本增效

一、边缘计算和 VNF 在当今瞬息万变的数字环境中&#xff0c;边缘虚拟化网络功能&#xff08;VNF&#xff09;是一个既能够优化网络基础设施&#xff0c;又能控制成本的创新型解决方案。它使客户能够将多个基于软件的 VNF 整合到一个专用计算设备上。更值得高兴的是&#xff0c…

【开发】视频集中存储/直播点播平台EasyDSS点播文件分类功能优化

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法&#xf…

LNMP架构搭建论坛

目录 一、LNMP简介&#xff1a; 二、LNMP搭建&#xff1a; 1.前提准备&#xff1a; 关闭防火墙和安全机制&#xff1a; 2.编译安装nginx&#xff1a; 3.编译安装mysql&#xff1a; 3.1 安装依赖环境&#xff1a; 3.2 创建mysql运行用户&#xff1a; 3.3 编译安装&#xff1a…

Vue.js核心技术深度解析与uni-app跨平台开发实战

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Vue.js是一款流行的Java…

算法训练day39|动态规划 part02(LeetCode62.不同路径、63. 不同路径 II)

文章目录 62.不同路径思路分析代码实现 63. 不同路径 II思路分析代码实现思考总结 62.不同路径 题目链接&#x1f525;&#x1f525; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步…