遗传算法聚类设计_精品文档PPT资料.pptx
- 文档编号:15489694
- 上传时间:2022-11-02
- 格式:PPTX
- 页数:29
- 大小:1.08MB
遗传算法聚类设计_精品文档PPT资料.pptx
《遗传算法聚类设计_精品文档PPT资料.pptx》由会员分享,可在线阅读,更多相关《遗传算法聚类设计_精品文档PPT资料.pptx(29页珍藏版)》请在冰豆网上搜索。
由一定数量的个体组成的群体,也就是问题的一些解的集合。
种群中个体的数量称为种群规模。
适应度(fitness)。
评价群体中个体对环境适应能力的指标,就是解的好坏,由评价函数F计算得到。
在遗传算法中,F是求解问题的目标函数,也就是适应度函数。
遗传算子(geneticoperator):
(1)选择(selection)
(2)交叉(crossover)(3)变异(mutation),二.遗传算法原理,2.遗传算法问题求解过程,二.遗传算法原理,3.遗传算法的基本要素遗传算法包含了如下5个基本要素:
问题编码,初始群体的设定,适应度函数的设计,遗传操作设计,控制参数的设定。
问题编码
(1)二进制编码
(2)浮点数编码初始群体的生成最常用的初始方法是无指导的随机初始化。
二.遗传算法原理,适应度函数(FitnessFunction)的确定在遗传算法中,按与个体适应度成正比的概率来决定当前群体中的每个个体遗传到下一代群体中的机会多少,一般希望适应值越大越好,且要求适应值非负。
适应度函数是根据目标函数确定的,针对不同种类的问题,目标函数有正有负,因此必须确定由目标函数值到适应度函数之间的映射规则,以适应上述的要求。
适应度函数的设计应满足以下条件:
(1)单值、连续、非负、最大化。
(2)计算量小。
适应度函数设计尽可能简单,以减少计算的复杂性。
(3)通用性强。
适应度对某类问题,应尽可能通用。
二.遗传算法原理,遗传操作遗传算法遗传操作主要包括:
选择、交叉、变异三个算子。
(1)选择算子采用基于适应度的选择原则,适应度越强被选中概率越大,体现优胜劣汰进化机制。
几种常用的选择方法:
赌轮选择法最优保存策略锦标赛选择法排序选择法
(2)交叉算子交叉算子模拟了自然界生物体的突变、体现了信息交换思想,决定着遗传算法的收敛性和全局搜索能力。
目前适合于二进制编码的个体和浮点数编码的个体的交叉算法主要有:
单点交叉两点交叉与多点交叉均匀交叉算术交叉,二.遗传算法原理,(3)变异算子变异操作只是对产生的新个体起辅助作用,决定了遗传算法的局部搜索能力。
目前适合于二进制编码的个体和浮点数编码的个体的变异算法主要有:
基本位变异均匀变异边界变异高斯近似变异,二.遗传算法原理,控制参数控制参数主要有群体规模、迭代次数、交叉概率、变异概率等,对此基本的遗传算法都需要提前设定:
N:
群体大小,如果群体规模大,可提供大量模式,使遗传算法进行启发式搜索,防止早熟发生,但会降低效率;
如果群体规模小,可提高速度,但却会降低效率。
一般取为20100。
T:
遗传运算的终止进化代数,一般取为100500。
Pc:
交叉概率,它影响着交叉算子的使用频率,一般取为0.40.99。
Pm:
变异概率,变异率控制着变异算子的使用频率,它的大小将影响群体的多样性及成熟前的收敛性能。
一般取为0.00010.1。
三.算法实现,本例使用酒瓶三元色数据,希望将数据按照各自所属的类别归类。
取59组数据为对象,确定其所属类别。
程序流程如图所示。
三.算法实现,重要程序代码介绍:
1.种群初始化遗传聚类算法需要设置的参数有四个,分别是:
交叉概率pcross、遗传概率pmutation、进化代数(迭代次数)maxgen和种群规模sizepop,程序如下:
%参数初始化maxgen=100;
%进化代数,即迭代次数,初始预定值选为100sizepop=100;
%种群规模,初始预定值选为100pcross=0.9;
%交叉概率选择,0和1之间,一般取0.9pmutation=0.01;
%变异概率选择,0和1之间,一般取0.012.适应度函数的设计种群初始化的matlab程序如下:
individuals=struct(fitness,zeros(1,sizepop),chrom,);
%种群由sizepop条染色体(chrom)及每条染色体的适应度(fitness)组成avgfitness=;
%记录每一代种群的平均适应度,首先赋给一个空数组,三.算法实现,bestfitness=;
%记录每一代种群的最佳适应度,首先赋给一个空数组bestchrom=;
%记录适应度最好的染色体,首先赋给一个空数组%初始化种群fori=1:
sizepop%随机产生一个种群individuals.chrom(i,:
)=4000*rand(1,12);
%把12个04000的随机数赋给种群中的一条染色体,代表K=4个聚类中心x=individuals.chrom(i,:
);
%计算每条染色体的适应度individuals.fitness(i)=fitness(x);
end%找最好的染色体bestfitnessbestindex=max(individuals.fitness);
%找出适应度最大的染色体,并记录其适应度的值(bestfitness)和染色体,三.算法实现,的位置(bestindex)bestchrom=individuals.chrom(bestindex,:
%把最好的染色体赋给变量bestchromavgfitness=sum(individuals.fitness)/sizepop;
%计算群体中染色体的平均适应度%记录每一代进化中最好的适应度和平均适应度trace=avgfitnessbestfitness;
适应度函数的matlab程序如下:
functionfit=fitness(x)%计算个体适应度值%xinput个体%fitoutput适应度值data=load“a.txt”;
kernel=x(1:
3);
x(4:
6);
x(7:
9);
x(10:
12);
%对染色体进行编码,其中x(1:
3)代表第一个聚类中心,x(4:
6)代表第二个聚类中心,x(7:
9)代表第三个聚类中心,x(10:
12)代表第四个聚类中心,三.算法实现,Gc=0;
%Gc代表聚类的准则函数n,m=size(data);
%求出待聚类数据的行和列fori=1:
ndist1=norm(data(i,1:
3)-kernel(1,:
dist2=norm(data(i,1:
3)-kernel(2,:
dist3=norm(data(i,1:
3)-kernel(3,:
dist4=norm(data(i,1:
3)-kernel(4,:
%计算待聚类数据中的某一点到各个聚类中心的距离a=dist1dist2dist3dist4;
mindist=min(a);
%取其中的最小值,代表其被划分到某一类Gc=mindist+Gc;
%求类中某一点到其聚类中心的距离和,即准则函数endfit=1/Gc;
%求出染色体的适应度,即准则函数的倒数,聚类的准则函数越小,染色体的适应度越大,聚类的效果也就越好,三.算法实现,3.种群初始化选择操作的matlab程序如下:
functionret=Select(individuals,sizepop)%本函数对每一代种群中的染色体进行选择,以进行后面的交叉和变异%individualsinput:
种群信息%sizepopinput:
种群规模%retoutput:
经过选择后的种群sumfitness=sum(individuals.fitness);
%计算群体的总适应度sumf=(individuals.fitness)./sumfitness;
%计算出染色体的选择概率,即染色体的适应度除以总适应度index=;
%用来记录被选中染色体的序号,首先付给一个空数组fori=1:
sizepop%转sizepop次轮盘pick=rand;
三.算法实现,%把一个0,1之间的随机数赋给pickwhilepick=0pick=rand;
end%确保pick被赋值fori=1:
sizepoppick=pick-sumf(i);
%染色体的选择概率越大,pick越容易小于,即染色体越容易被选中ifpick0index=indexi;
%把被选择中的染色体的序号赋给indexbreak;
endendendindividuals.chrom=individuals.chrom(index,:
三.算法实现,%记录选择中的染色体individuals.fitness=individuals.fitness(index);
%记录选择中染色体的适应度ret=individuals;
%输出经过选择后的染色体4.交叉操作交叉操作的matlab程序:
functionret=Cross(pcross,chrom,sizepop)%本函数完成交叉操作%pcorssinput:
交叉概率%lenchrominput:
染色体的长度%chrominput:
染色体群%sizepopinput:
交叉后的染色体fori=1:
sizepop,三.算法实现,%交叉概率决定是否进行交叉pick=rand;
whilepick=0pick=rand;
end%给pick赋予一个0,1之间的随机数ifpickpcrosscontinue;
end%当pickpcross时,进行交叉操作index=ceil(rand(1,2).*sizepop);
while(index
(1)=index
(2)|index
(1)*index
(2)=0index=ceil(rand(1,2).*sizepop);
end%在种群中,随机选择两个个体pos=ceil(rand*3);
三.算法实现,whilepos=0pos=ceil(rand*3);
end%在染色体当中,随机选择交叉位置temp=chrom(index
(1),pos);
chrom(index
(1),pos)=chrom(index
(2),pos);
chrom(index
(2),pos)=temp;
%把两条染色体某个位置的信息进行交叉互换endret=chrom;
%输出经过交叉操作后的染色体5.变异操作变异操作的matlab程序:
functionret=Mutation(pmutation,chrom,sizepop)%本函数完成变异操作,三.算法实现,%pcorssinput:
变异概率%lenchrominput:
染色体长度%chrominput:
种群规模%boundinput:
每个个体的上届和下届%retoutput:
变异后的染色体fori=1:
sizepop%变异概率决定该轮循环是否进行变异pick=rand;
ifpickpmutationcontinue;
end%当pick小于变异概率时,执行变异操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 遗传 算法 设计 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)