matlab 怎么规定聚类初始点,Matlab新手求帮忙解释下这个算法,遗传模拟优化初始聚类中心...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这一段里,建立区域描述器中的rep哪里是什么意思,没看懂

2e051e6ab408f92bed7b5e42a5834dbd.png%% 定义遗传算法参数

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

FitnV=ranking(ObjV); %分配适应度值(Assign fitness values)

SelCh=select('sus', Chrom, FitnV); %选择

SelCh=recombin('xovsp', SelCh,pc); %重组

SelCh=mut(SelCh,pm); %变异

V=bs2rv(SelCh, FieldD);

newObjV=ObjFun(X,cn,V,options); %计算子代目标函数值

newChrom=SelCh;

%是否替换旧个体

for i=1:sizepop

if ObjV(i)>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

end

gen=gen+1; %代计数器增加

[trace(end,gen),index]=min(ObjV); %遗传算法性能跟踪

trace(1:NVAR,gen)=V(index,:);

fprintf(1,'%d ',gen);

end

T=T*q;

fprintf(1,'\n温度:%1.3f\n',T);

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值