当前位置: 首页 > news >正文

(转载)基于遗传模拟退火的聚类算法(matlab实现)

1 理论基础

1.1 模糊聚类分析

        模糊聚类是目前知识发现以及模式识别等诸多领域中的重要研究分支之一。随着研究范围的拓展,不管是科学研究还是实际应用,都对聚类的结果从多方面提出了更高的要求。模糊C-均值聚类(FCM)是目前比较流行的一种聚类方法。该方法使用了在欧几里得空间确定数据点的几何贴近度的概念,它将这些数据分配到不同的聚类,然后确定这些聚类之间的距离。模糊C-均值聚类算法在理论和应用上都为其他的模糊聚类分析方法奠定了基础,应用也最广泛。但是,从本质上FCM算法是一种局部搜索优化算法,如果初始值选择不当,它就会收敛到局部极小点上。因此,FCM算法的这一缺点限制了人们对它的使用。

1.2 模拟退火算法

        Metropolis等人于1953年提出了模拟退火算法(SA),其基本思想是把某类优化问题的求解过程与统计热力学中的热平衡问题进行对比,固体退火过程的物理图像和统计性质是模拟退火算法的物理背景,Metropolis接受准则使算法跳离局部最优的“陷阱”,而冷却进度表的合理选择是算法应用的前提。固体退火是先将固体加热至熔化,然后徐徐冷却使之凝固成规整晶体的热力学过程。从统计物理学的观点看,随着温度的降低,物质的能量将逐渐趋近于一个较低的状态,并最终达到某种平衡。

1.3 遗传算法

        遗传算法(GA)的主要思想是基于达尔文的生物进化论和孟德尔的遗传学。遗传算法结合了达尔文的适者生存和随机交换理论,是一种自然进化系统的计算模型,也是一种通用的求解优化问题的适应性搜索方法。遗传算法在运行早期个体差异较大,当采用经典的轮盘赌方式选择时,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,造成早熟。在遗传算法后期,适应度趋向一致,优秀的个体在产生后代时,优势不明显,从而使整个种群进化停滞不前。因此对适应度适当地进行拉伸是必要的,这样在温度高时(遗传算法的前期),适应度相近的个体产生后代的概率相近;而当温度不断下降后,拉伸作用加强,使适应度相近的个体适应度差异放大,从而使得优秀个体的优势更明显。
        本文将模拟退火算法与遗传算法相结合(SAGA)用于聚类分析,由于模拟退火算法和遗传算法可以互相取长补短,因此有效地克服了传统遗传算法的早熟现象,同时根据聚类问题的具体情况设计遗传编码方式及适应度函数,使该算法更有效、更快速地收敛到全局最优解。

2 案例背景

2.1 问题描述

        本章将SAGA作用于随机产生的数据进行实验。数据由400个二维平面上的点组成,这些
点构成4个集合,但彼此之间并没有明显的界限,数据如图1所示。通过使用单纯的FCM聚类和SAGA优化初始聚类中心点后的FCM聚类来说明SAGA优势。

2.2 解题思路及步骤

1.模糊C-均值聚类算法(FCM)
        设n个数据样本为X={x1,x2,…,xn}, c(2≤c≤n)是要将数据样本分成的类型的数目,{A1, A2, …, An}表示相应的c个类别,U是其相似分类矩阵,各类别的聚类中心为{v1,v2,…,vc},μk(xi)是样本xi对于类Ak的隶属度(简写为μk)。则目标函数Jb可以用下式表达:

        用式(20-3)和式(20-4)反复修改聚类中心、数据隶属度和进行分类,当算法收敛时,理论上就得到了各类的聚类中心以及各个样本对于各模式类的隶属度,从而完成了模糊聚类划分。尽管FCM有很高的搜索速度,但FCM是一种局部搜索算法,且对聚类中心的初值十分敏感,如果初值选择不当,它会收敛到局部极小点。
        2.模拟退火算法实现
        模拟退火算法于1983年成功地应用在组合优化的问题上,其思想是通过模拟高温物体退火过程找到优化问题的全局最优或近似全局最优解。首先产生一个初始解作为当前解,然后在当前解的邻域中,以概率P(T)选择一个非局部最优解,并令这个解再重复下去,从而保证不会陷入局部最优。开始时允许随着参数的调整,目标函数偶尔向增加的方向发展(对应于能量有时上升),以利于跳出局部极小区域。随着假想温度的降低(对应于物体的退火),系统活动性降低,最终以概率1稳定在全局最小区域。模拟退火算法描述如下:
        3.遗传算法实现
        遗传算法部分直接使用Sheffield遗传算法工具箱相关函数实现。
        (1)编码方式:遗传聚类算法中,待优化的参数是c个初始聚类中心,这里使用二进制编码,每条染色体由c个聚类中心组成,对于m维的样本向量,待优化的变量数为c×m。假定每个变量使用k位二进制编码,则染色体为长度是c×m×k的二进制码串。
        (2)适应度函数:衡量个体优劣的尺度是适应度函数,其作用类似于自然界中生物适应环境能力的度量。每个个体以式(20-1)得出的Jb为目标函数,Jb越小,个体的适应度值就越高。因此,适应度函数采用排序的适应度分配函数:FintV=ranking(Jb)。
        (3)选择算子:选择算子采用随机遍历抽样(sus)。
        (4)交叉算子:交叉算子采用最简单的单点交叉算子。
        (5)变异算子:以一定概率产生变异基因数,用随机方法选出发生变异的基因。如果所选的基因的编码为1,则变为0;反之则变为1。
        4.算法流程
        基于模拟退火遗传算法的模糊C-均值聚类,其过程如图2所示。
  

3 MATLAB程序实现

完整代码如下:

基于遗传模拟退火的聚类算法(matlab实现)资源-CSDN文库

4.结果分析

        运行之后得到结果:J,=3.3035,多次运行得到的结果均一致。聚类后的图如图3所示,其中三角形为各类的聚类中心点。

 

        SAGA优化后的FCM聚类Jb=3.3035,每次都能得到最优目标函数值。当数据量较大时,SAGA的优越性更加明显。其主要原因是单纯的FCM在处理大规模数据时,更加容易收敛到局部最优解,而将遗传算法与模拟退火算法相结合形成一种混合算法后,可以有效地克服收敛到局部最优解的情况。

总结

        FCM算法是一种局部搜索优化算法,如果初始值选择不当,它就会收敛到局部极小点上。FCM算法的这一缺点限制了人们对它的使用。本章将模拟退火算法与遗传算法相结合,然后用于模糊C-均值聚类,利用模拟退火算法较强的局部搜索能力和遗传算法较强的全局搜索能力,可以有效、快速地解决聚类问题。

 

相关文章:

(转载)基于遗传模拟退火的聚类算法(matlab实现)

1 理论基础 1.1 模糊聚类分析 模糊聚类是目前知识发现以及模式识别等诸多领域中的重要研究分支之一。随着研究范围的拓展,不管是科学研究还是实际应用,都对聚类的结果从多方面提出了更高的要求。模糊C-均值聚类(FCM)是目前比较流行的一种聚类方法。该…...

【C++】struct 和 class 的区别

欢迎来到博主 Apeiron 的博客,祝您旅程愉快。时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中,struct 和 class 唯一的区别就在于 默认的访问权限不同。区别如下: …...

活动笔记丨物业行业人效提升与灵活用工新路径

近日,盖雅工场成功举办物业行业人效提升专场交流,来自广深地区央企和民营的领先物业企业和现场服务业的多位代表齐聚深圳招商积余大厦,共同研讨行业人效提升的挑战和实践。 本次闭门交流会聚焦于人效提升,讨论话题包括各自企业在人…...

学习笔记:吴恩达ChatGPT提示工程

以下为个人笔记,原课程网址Short Courses | Learn Generative AI from DeepLearning.AI 01 Introduction 1.1 基础LLM 输入 从前有一只独角兽,输出 它和其他独角兽朋友一起住在森林里输入 法国的首都在哪?输出 法国的首都在哪&#xf…...

POI in Action

POI 组件依赖 按需引入对应依赖 (给出官方的指引) 组件作用Maven依赖POIFSOLE2 FilesystempoiHPSFOLE2 Property SetspoiHSSFExcel XLSpoiHSLFPowerPoint PPTpoi-scratchpadHWPFWord DOCpoi-scratchpadHDGFVisio VSDpoi-scratchpadHPBFPublisher PUBpoi-scratchpadHSMFOutloo…...

苹果Vision Pro将引爆人机交互的重大变革

2023年6月6日,苹果发布了大家期待已久的Vision Pro,Vision Pro是一款专业级MR设备,融合了虚拟现实(VR)和增强现实(AR)技术,可以让用户完全沉浸在高分辨率显示内容中。允许用户以一种全新的方式在其周围的空间中查看APP。用户可以用…...

MMDetection学习记录(二)之配置文件

文件结构 config文件 在 config_base_ 文件夹下有 4 个基本组件类型,分别是:数据集(dataset),模型(model),训练策略(schedule)和运行时的默认设置(default runtime)。 命名风格 {model}_[model setting]_{backbone}_{neck}_[no…...

Python数据分析:NumPy、Pandas和Matplotlib的使用和实践

在现代数据分析领域中,Python已成为最受欢迎的编程语言之一。Python通过庞大的社区和出色的库支持,成为了数据科学家和分析师的首选语言。在Python的库中,NumPy、Pandas和Matplotlib是三个最为重要的库,它们分别用于处理数值数组、…...

实习生面试问题及回答记录

文章目录 文章简介技术类1、DFS和BFS算法的区别是什么?2、解释一下什么是快速排序?3、 如果让你写一个排序算法?你会怎么写?(大概说出代码的思路)4、解释一下二分查找的具体逻辑?5、在代码的数据…...

设计模式(十):结构型之外观模式

设计模式系列文章 设计模式(一):创建型之单例模式 设计模式(二、三):创建型之工厂方法和抽象工厂模式 设计模式(四):创建型之原型模式 设计模式(五):创建型之建造者模式 设计模式(六):结构型之代理模式 设计模式…...

买法拍房需要注意什么

法拍房,由于其价格亲民、房屋信息透明度高、竞拍过程公平公正而受到越来越多的人开始关注。但是其中又有着许多的风险及相关的注意事项。那么,如何做到成功“捡漏”,买法拍房需要注意什么呢? 买法拍房需要注意什么 1、隐藏的各种收费 税费&a…...

linux命令输出结果但不显示在屏幕上的通用办法

linux命令输出结果但不显示在屏幕上的通用办法 这个针对于我这种小白马大哈很简单的一个命令,记给自己备用 举个例子:unzip命令不输出结果 unzip xx.zip > /dev/null 2>&1 unzip xx.zip > /dev/null 前半部分是将标准输出重定向到空设备&a…...

【Linux系统进阶详解】Linux字符权限rwx-权限组合原理,对应类型ugo,user,group,other,+-=详解及权限管理实战

在Linux系统中,每个文件和目录都有三种权限:读权限(r)、写权限(w)和执行权限(x)。这些权限可以被分配给三个不同的用户组:用户(user)、组(group)和其他人(other)。此外,权限可以使用“+”、“-”和“=”符号进行修改。 权限组合原理 Linux系统中的权限由字母…...

凡人修C传——专栏从凡人到成仙系列目录

这里先感谢博主THUNDER王给我提出来的一个创作建议,让我有了创作的灵感来创建这一篇博客以及凡人修C传这一个系列的文章。 本文最主要的目的就是给大家一个凡人修C传的一个目录,让大家更加容易学到自己想学的地方。 📝【个人主页】&#xff1…...

隐藏python代码,售卖并保护源代码

我写了一个基于pytorch框架的特殊卷积,他的使用方式和其他的卷积一样,但是我想把它卖出去,希望隐藏特殊卷积的代码 1、如果您希望隐藏特殊卷积的代码并将其作为一个可售卖的产品,可以考虑以下几种方法来保护您的代码:…...

Material—— VAT(Houdini To UE)

目录 一,介绍 二,柔体 二,刚体 一,介绍 VAT是将动画数据存储在纹理中,通过GPU运算来实现动画的技术;VAT纹理包含每个顶点在不同帧的位置信息,而每个像素代表一个顶点在某个时间点的位置&…...

视频后期剪辑

文章目录 后期剪辑软件三方插件提供动画制作软件 后期剪辑软件 视频剪辑后期处理涉及到多个软件和插件,下面是对其中几个主要软件及其相关插件的扩展介绍,以及为它们提供插件的一些知名第三方公司。 Adobe After Effects: Adobe After Effec…...

Python3+Selenium2完整的自动化测试实现之旅(七):完整的轻量级自动化框架实现

一、前言 前面系列Python3Selenium2自动化系列博文,陆陆续续总结了自动化环境最基础环境的搭建、IE和Chrome浏览器驱动配置、selenium下的webdriver模块提供的元素定位和操作鼠标、键盘、警示框、浏览器cookie、多窗口切换等场景的方法、web自动化测试框架、python面…...

泰山信息科技5周年:无尽的感恩,非常非常的惋惜

去年的时候,庆贺4周年,公司员工一起去某个地方玩(确实没吃到什么东西)。这是当时的情形: 因为各种原因,今年3月无锡研发基地解散。作为技术总监,我是非常非常的惋惜。因为我真的想把泰山OFFICE做…...

LabVIEW编程开发PCB测试仪

LabVIEW编程开发PCB测试仪 使用PXI和LabVIEW的PCB钉床测试仪 用于PCB(印刷电路板)的钉床测试仪,使用PXI和LabVIEW。一家电子制造公司需要测试仪来测试他们的PCB产品。钉床测试仪是一种具有连接到电路板上各个测试点的引脚的测试。电路板需要…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...