ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:212.91KB ,
资源ID:10486748      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10486748.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(粒子群算法分类.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

粒子群算法分类.docx

1、粒子群算法分类粒子群算法分类目 录粒子群算法分类 1一、经典的微粒群算法(PSO)简介 1二、经典的微粒群算法的运算过程 2三、两种基本的进化模型 4四、改进的微粒群算法 5五、流程及代码 7结 论 19参考文献 20粒子群算法分类一、经典的微粒群算法(PSO)简介微粒群算法(Particle Swarm Optimization)是由美国社会心理学家James Kennedy和电气工程师Russell Eberhart在1995年共同提出的,是继蚁群算法之后的又一种新的群体智能算法,目前已成为进化算法的一个重要分支。经典粒子群算法的基本思想是模拟鸟类群体行为,并利用了生物学家的生物群体模型,

2、因为鸟类的生活使用了简单的规则:(1)飞离最近的个体;(2)飞向目标;(3)飞向群体的中心;来确定自己的飞行方向和飞行速度,并且成功的寻找到栖息地。Heppner受鸟类的群体智能启发,建立了模型。Eberhart和Kennedy对Heppner的模型进行了修正,同时引入了人类的个体学习和整体文化形成的模式,一方面个体向周围的优秀者的行为学习,另一方面个体不断总结自己的经验形成自己的知识库。从而提出了微粒群算法(PSO)。该算法由于运算速度快,局部搜索能力强,参数设置简单,近些年已收到学术界的广泛重视,现在微粒群算法在函数优化,神经网络训练,模式分类,模糊系统控制以及其他工程领域都得到了广泛的应

3、用。二、经典的微粒群算法的运算过程经典粒子群算法和其他的进化算法相似,也采用“群体”与“进化”的概念,同样是根据个体即微粒(particle)的适应度大小进行操作。所不同的是,微粒群算法不像其他进化算法那样对个体使用进化算子,而是将每个个体看作是在N维搜索空间中的一个无重量无体积的微粒,并在搜索空间中以一定的速度飞行。该飞行速度是根据个体的飞行经验和群体的飞行经验来进行动态地调整。Kennedy和Eberhart最早提出的PSO算法的进化方程如下: 其中:下标“i”表示第i个微粒,下标“j”表示的是微粒i的第j维分量,t表示第t代,学习因子和为非负常数,用来调节微粒向本身最好位置飞行的步长,用

4、来调节微粒向群体最好位置飞行的步长,通常和在0,2间取值。迭代终止条件根据具体问题一般选为最大迭代次数或粒子群搜索到的最优位置满足于预先设定的精度。经典微粒群算法的算法流程如下:步骤一、依照如下初始化过程,对微粒群的随机位置和速度进行初始设定。、设定群体规模,即粒子数为N。、对任意i,j,随机产生,对任意i初始化局部最优位置为:=。、初始化全局最优位置步骤一、根据目标函数,计算每个微粒的适应度值。步骤二、对于每个微粒,将其适应度值与其本身所经历过的最好位置的适应度值进行比较,如更好,则将现在Xi的位置作为新的。步骤三、对每个微粒,将其经过的最好位置的适应度值与群体的最好位置的适应度值比较,如果

5、更好,则将的位置作为新的。步骤四、对微粒的速度和位置进行更替。如未达到结束条件,则返回步骤二。三、两种基本的进化模型在基本的PSO算法中,根据直接相互作用的微粒群定义可构造PSO算法的两种不同版本,也就是说,可以通过定义全局最好微粒(位置)或局部最好微粒(位置)构造具有不同行为的PSO算法。(一)模型(全局最好模型)模型以牺牲算法的鲁棒性为代价提高算法的收敛速度,基本PSO算法就是典型的该模型的体现。在该模型中,整个算法以该微粒(全局最好的微粒)为吸引子,将所有微粒拉向它,使所有的微粒最终收敛于该位置。如果在进化过程中,该全局最优解得不到更新,则微粒群将出现类似于遗传算法早熟的现象。(二)模型

6、(局部最好模型)为了防止模型可能出现早熟现象,模型采用多个吸引子代替模型中的单一吸引子。首先将为粒子群分解为若干个子群,在每个粒子群中保留其局部最好微粒,称为局部最好的位置或邻域最好位置。实验表明,局部最好模型的PSO比全局最好模型的收敛慢,但不容易陷入局部最优解。四、改进的微粒群算法最初的PSO是从解决连续优化问题发展起来的,Eberhart等又提出了PSO的二进制版本,来解决工程实际中的优化问题。微粒群算法是一种局部搜索效率高的搜索算法,收敛快,特别是在算法的早期,但也存在着精度较低,易发散等缺点。若加速系数、最大速度等参数太大,粒子群可能错过最优解,算法不能收敛;而在收敛的情况下,由于所

7、有的粒子都同时向最优解的方向飞去,所以粒子趋向同一化(失去了多样性),这样就使算法容易陷入局部最优解,即算法收敛到一定精度时,无法继续优化,因此很多学者都致力于提高PSO算法的性能。Y.Shi和Eberhart在1998年对微粒群算法引入了惯性权重w(t),并提出了在进化过程中线性调整惯性权重的方法,来平衡全局和局部搜索的性能,该方程已被学者们称为标准PSO算法,其方程形式如下:这里w是惯性权重,和加速常数,速度的计算以下面三个基值为基础:(1)其第一部分为微粒先前的速度(2)第二部分为“认知”部分,因为它仅考虑了微粒自身的经验,是局部最优位置(3)第三部分是“社会”部分,表示微粒间的社会信息

8、共享,是全局最优位置。下面的实验用到的。 当惯性权重w(t)=1时,两种怎么算法相同,从而表明代惯性权重的微粒群算法是基本微粒群算法的扩展,建议w(t)的取值范围为0,1.4,但实验结果表明当w(t)取0.8,1.2时,算法收敛速度更快,而当w(t)1.2时,算法则较多的陷入局部极值。惯性权重w(t)表明微粒的原先的速度能在多大的程度上得到保留,较大的w(t)值有较好的全局搜索能力,而较小的w(t)则由较强的局部搜索能力。因此,随着迭代次数的增加,线性的减小惯性权重w(t),就可以使得微粒群算法在初期具有较强的全局收敛能力,而在晚期具有较强的局部收敛能力。惯性权重系数线性更新公式:五、流程及代

9、码MATLAB实现代码:clc;clear all;format long;%-初始化-%数据%sam=xlsread(.xls);%读样本数据sam=2793.36 3009.26 1073.55 1766.08 1803.14 1895.18 1207.88 1600.62 3123.07 245.75 3373.67 2248.45 2785.36 3052.81 1035.65 315.42 3088.29 2187.12 1243.28 2451.72 3111.99 829.84 1555.91 3139.21 1347.07 2364.31 3096.88 1926.98 150

10、7.34 1626.47 1808.57 1608.78 1565.95 1124.1 1840.98 2819.41 2661 3302.39 1710.32 1805.55 1899.09 2400.6 1130.18 1902.42 2753.7 1355.19 1566.16 2927.81 1651.14 1774.03 1725.56 2110.63 3308.04 702.06 2788.11 3395.23 1684.45 1807.61 1680.56 2356.65 1363.58 1729.44 2749.55 1992.42 1526.9 1581.42 %2232.4

11、3 3077.87 1298.87%1580.1 1752.07 2463.04%1962.4 1594.97 1835.95%1495.18 1957.44 3498.02%1125.17 1594.39 2937.73%24.22 3447.31 2145.01%1269.07 1910.72 2701.97%1802.07 1725.81 1966.35%1817.36 1927.4 2328.79%1860.45 1782.88 1875.13%1237.91 2055.13 3405.09%688.94 2104.72 3198.51%1675.65 1747.23 1580.39%

12、1806.02 1810.19 2191.12%74.56 3288.02 2433.87%307.35 3363.84 2021.61%1988.27 1657.51 2069.2%2173.92 2608.55 1803.57%372.16 3077.44 2163.46%576.6 2140.98 3320%1724.13 1704.49 1798.75%2501.21 2652.65 984.56%1656.94 1913.34 2459.07%362.51 3150.03 2472%565.74 2284.97 3024.58%1978.06 1536.13 2375.64%1661

13、.06 1552.4 2005.05%790.29 2419.98 3051.16%1557.27 1746.27 1879.13 ;N=50;%种群粒子数c1=1.3;c2=1.9;%经学习选取的学习因子 wmax=0.9;wmin=0.4;%权重系数的最大与最小M=200;%种群代数K=4;%类别数,根据需要修改%S D=size(sam);%样本数和特征维数v=rand(N,K*D);%初始速度%初始化分类矩阵for i=1:Nclmat(i,:)=randperm(S);clmat(i,clmat(i,:)K)=ceil(rand(1,sum(clmat(i,:)K)*K);endfi

14、tt=inf*ones(1,N);%初始化个体最优适应度fg=inf;%初始化群体最优适应度fljg=clmat(1,:);%当前最优分类x=zeros(N,K*D);%初始化粒子群位置y=x;%初始化个体最优解pg=x(1,:);%初始化群体最优解cen=zeros(K,D);%类别中心定维fitt2=fitt;%粒子适应度定维%-循环优化开始-for t=1:Mfor i=1:N ww = zeros(S,K);% for ii = 1:S ww(ii,clmat(i,ii) = 1;%加权矩阵,元素非0即1 end ccc=;tmp=0; for j = 1:K sumcs = sum(

15、ww(:,j)*ones(1,D).*sam); countcs = sum(ww(:,j); if countcs=0 cen(j,:) =zeros(1,D); else cen(j,:) = sumcs/countcs; %求类别中心 end ccc=ccc,cen(j,:);%串联聚类中心 aa=find(ww(:,j)=1); if length(aa)=0 for k=1:length(aa) tmp=tmp+(sum(sam(aa(k),:)-cen(j,:).2); end end end x(i,:)=ccc; fitt2(i) = tmp; %Fitness value e

16、nd%更新群体和个体最优解for i=1:N if fitt2(i)fitt(i) fitt(i)=fitt2(i); y(i,:)=x(i,:);%个体最优 if fitt2(i)fg pg=x(i,:);%群体最优 fg=fitt2(i);%群体最优适应度 fljg=clmat(i,:);%当前最优聚类 end end end bfit(t)=fg;%最优适应度记录 %w = wmax - t*(wmax-wmin)/M;%更新权重 for i=1:N %更新粒子速度和位置 v(i,:)=v(i,:)+c1*rand(1,K*D).*(y(i,:)-x(i,:)+c2*rand(1,K*D

17、).*(pg-x(i,:); %v(i,:)=w*v(i,:)+c1*rand(1,K*D).*(y(i,:)-x(i,:)+c2*rand(1,K*D).*(pg-x(i,:); x(i,:)=x(i,:)+v(i,:); for k=1:K cen(k,:)=x(k-1)*D+1:k*D);%拆分粒子位置,获得K个中心 end %重新归类 for j=1:S tmp1=zeros(1,K); for k=1:K tmp1(k)=sum(sam(j,:)-cen(k,:).2);%每个样本关于各类的距离 end tmp2 clmat(i,j)=min(tmp1);%最近距离归类 end en

18、dend%-循环结束-fljg %最优聚类输出fg %最优适应度输出%plot(bfit);%绘制最优适应度轨迹% plot3(sam(:,1),sam(:,2),sam(:,3),*);for i=1:22 if fljg(1,i)=1 plot3(sam(i,1),sam(i,2),sam(i,3),r*); hold on; grid on; box; elseif fljg(1,i)=2 plot3(sam(i,1),sam(i,2),sam(i,3),g*); hold on; grid on; box; elseif fljg(1,i)=3 plot3(sam(i,1),sam(i

19、,2),sam(i,3),k*); hold on; grid on; box; else plot3(sam(i,1),sam(i,2),sam(i,3),b*); hold on; grid on; box; endend六、仿真结果基本算法输出:输出对比:结 论通过粒子群算法能够很快的实现分类。而且通过惯性权重系数的线性更新,可以防止局部最优输出。虽然运行时间稍有增加,但效果明显。每种聚类数目下的最优聚类可以根据输出的适应度fg判断,适应度值越小越好,并且需多次运行判断。 参考文献1 杨淑莹. 模式识别与智能计算M.北京:电子工业出版社,2008.12侯志荣,吕振肃.基于MATLAB 的粒子群优化算法及其应用J.计算机仿真第20 卷,第10期3 齐敏,李大健,郝重阳.模式识别导论M.北京:清华大学出版社,2009.6

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1