Welcome

首页 / 软件开发 / 数据结构与算法 / 粒子群算法(7)------粒子群算法局部版本的实现

粒子群算法(7)------粒子群算法局部版本的实现2011-09-02 csdn博客 niuyongjie最近要写篇与粒子群算法有关的文章,因此不得不实现粒子群算法的局部版本 。粒子群算法局部版本的实现思想已经在粒子群算法(3)----标准的粒子群算法( 局部版本)中已经讲述。主要分为3个函数。第一个函数为粒子群初始化函数 LocalInitSwarm(SwarmSize......AdaptFunc)其主要作用是初始化粒子群的粒子 ,并设定粒子的速度、位置在一定的范围内。本函数所采用的数据结构如下所示 :

表ParSwarm记录的是粒子的位置、速度与当前的适应度值,我们用W来表示位 置,用V来代表速度,用F来代表当前的适应度值。在这里我们假设粒子个数为N, 每个粒子的维数为D。

W1,1W1,2...W1,DV1,1V1,2...V1,D-1V1,DF1第1个粒子
W2,1W2,2...W2,DV2,1V2,2...V2,D-1V2,DF2第2个粒子
.....................................
WN-1,1WN-1,2...WN-1,D-1VN-1,1VN-1,2...VN-1,D-1VN-1,DFN-1第N-1个粒子
WN,1WN,2...WN,DVN,1VN,2...VN,D-1VN,DFN第N个粒子
表OptSwarm不但要记录自身历史最优解,还需要记录每个粒子邻域( 采用环形邻域)的最优解,以及全部粒子搜索到的全局最优解。因此应该有2*N+1 行,前SwarmSize行记录粒子自己历史最优解,后SwarmSize行记录邻域最优解。

用Wg代表全局最优解,W.,1代表每个粒子的历史最优解。粒子群初始化阶段表 OptSwarm的前N行与表ParSwarm中的相同,而Wg的值为表ParSwarm中适应度值的最 大值对应的行。

W1,1Wj,2...Wj,D-1Wj,D第1个粒子的历史最优解
W2,1Wk,2...Wk,D-1Wk,D第2个粒子的历史最优解
..................
W(N-1),1Wl,2...Wl,D-1Wl,D第N-1个粒子的历史最优解
W(N),1Wm,2...Wm,D-1Wm,D第N个粒子的历史最优解

Wl,1.........Wl,D第一个粒子的邻域最优解
Wl,2.........Wl,D第二个粒子的邻域最优解
.....................
Wl,N............第N个粒子的邻域最优解
Wg,1Wg,2...Wg,D-1Wg,D全局粒子的历史最优解
根据这样的思想MATLAB代码如下: