用 MATLAB编写 PSO算法及实例1.1 粒子群算法PSO从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。 所有的粒子都有一个由被优化的函数决定的适值 ( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO初始化为一群随机粒子 (随机解 ),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值; 另一个极值是整个种群目前找到的最优解,这个极值是全局极值。 另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。假设在一个维的目标搜索空间中, 有个粒子组成一个群落, 其中第个粒子表示为一个维的向量,。第 个粒子的 “飞行 ”速度也是一个维的向量,记为,。第 个粒子迄今为止搜索到的最优位置称为个体极值,记为,。整个粒子群迄今为止搜索到的最优位置为全局极值,记为在找到这两个最优值时, 粒子根据如下的公式 (1.1)和( 1.2)来更新自己的速度和位置:(1.1)(1. 2)其中:和为学习因子,也称加速常数(acceleration constant),和为[0,1]范围内的均匀随机数。式 (1.1)右边由三部分组成,第一部分为“惯性 (inertia)”或“动量(momentum)”部分,反映了粒子的运动 “习惯 (habit)”,代表粒子有维持自己DNiD),,,(21iDiiixxxXNi,,2,1iD),,21iiDiivvvV,(3,2,1ii),,,(21iDiibestppppNi,,2,1),,,(21gDggbestpppg)(2211idgdididididxprcxprcvwvidididvxx1c2c1r2r先前速度的趋势;第二部分为“认知 (cognition)”部分,反映了粒子对自身历史经验的记忆 (memory)或回忆 (remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为 “社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。二、算法设计2.1 算法流程图2.2 算法实现算法的流程如下:① 初始化粒子群,包括群体规模N ,每个粒子的位置ix 和速度iV② 计算每个粒子的适应度值][iFit;%它的适应度就是指目标函数的值 。一般来说,目标函数的选择由具体问题来决定,假如是背包问题, 适应度即放入包中物体的总价格。初始粒子位置和速度的位置一般随机产生。但是在某些领域, 如果已有其他的算法可以产生可行解的话,可以用这个可行解来初始化,这样更容易得到最优的解③...