基于遗传模拟退火算法的聚类算法-matlab
2023年1月17日 浏览:1360 收藏:2
源码如下: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %功能:遗传模拟优化初始聚类中心示例 %环境:Win7,Matlab2015b %Modi: C.S %时间:2022-07-09 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 清空环境 clc clear all close all tic load X m=size(X,2);% 样本特征维数 % 中心点范围[lb;ub] lb=min(X); ub=max(X); %% 模糊C均值聚类参数 % 设置幂指数为3,最大迭代次数为20,目标函数的终止容限为1e-6 options=[3,20,1e-6]; % 类别数cn cn=4; %% 模拟退火算法参数 q =0.8; % 冷却系数 T0=100; % 初始温度 Tend=99.999; % 终止温度 %% 定义
遗传算法参数 sizepop=10; %个体数目(Numbe of individuals) MAXGEN=100; %最大遗传代数(Maximum number of generations) NVAR=m*cn; %变量的维数 PRECI=10; %变量的二进制位数(Precision of variables) pc=0.7; pm=0.01; trace=zeros(NVAR+1,MAXGEN); %建立区域描述器(Build field descriptor) FieldD=[rep([PRECI],[1,NVAR]);rep([lb;ub],[1,cn]);rep([1;0;1;1],[1,NVAR])]; Chrom=crtbp(sizepop, NVAR*PRECI); % 创建初始种群 V=bs2rv(Chrom, FieldD); ObjV=ObjFun(X,cn,V,options); %计算初始种群个体的目标函数值 T=T0; while T>Tend gen=0; %代计数器 while gen
newObjV(i) ObjV(i)=newObjV(i); Chrom(i,:)=newChrom(i,:); else p=rand; if p<=exp((newObjV(i)-ObjV(i))/T) ObjV(i)=newObjV(i); Chrom(i,:)=newChrom(i,:); end end 添加完毕,点击“运行”,即可开始仿真
点赞 评论 收藏 2