多目标粒子群

  多目标粒子群(MOPSO)算法是由CarlosA. Coello Coello等在2004年提出来的,详细参考1。目的是将原来只能用在单目标上的粒子群算法(PSO)应用于多目标上。我们知道原来的单目标PSO流程很简单:

  -->初始化粒子位置(一般都是随机生成均匀分布)

  -->计算适应度值(一般是目标函数值-优化的对象)

  -->初始化历史最优pbest为其本身和找出全局最优gbest

  -->根据位置和速度公式进行位置和速度的更新

  -->重新计算适应度

  -->根据适应度更新历史最优pbest和全局最优gbest

  -->收敛或者达到最大迭代次数则退出算法

  速度的更新公式如下:

  等式右边有三部分组成。第一部分是惯性量,是延续粒子上一次运动的矢量;第二部分是个体认知量,是向个体历史最优位置运动的量;第三部分是社会认知量,是粒子向全局最优位置运动的量。

有了速度,则位置更新自然出来了:

  以上是对于多目标PSO算法的介绍。运用到多目标上去的话,出现的问题有以下几点:

  1. 如何选择pbest。我们知道对于单目标优化来说选择pbest,只需要对比一下就可以选择出哪个较优。但是对于多目标来说两个粒子的对比,并不能对比出哪个好一些。如果粒子的每个目标都要好的话,则该粒子更优。若有些更好,有些更差的话,就无法严格的说哪个好些,哪个差一些。
  2. 如何选择gbest。我们知道对于单目标在种群中只有一个最优的个体。而对于多目标来说,最优的个体有很多个。而对PSO来说,每个粒子只能选择一个作为最优的个体(领带者)。该如何选择呢?

  MOPSO对于第一个问题的做法是在不能严格对比出哪个好一些时随机选择一个其中一个作为历史最优。对于第二个问题,MOPSO则在最优集里面(存档中)根据拥挤程度选择一个领导者。尽量选择不那么密集位置的粒子(在这里用到了网格法)。

  MOPSO在选择领导者和对存档(也可以说是pareto临时最优断面)进行更新的时候应用了自适应网格法,详细参考2。

  如何选择领带者呢?

  MOPSO在存档中选择一个粒子跟随。如何选择呢?根据网格划分,假设每个网格中粒子数个,i代表第几个网格。该网格中的粒子被选择的概率为,即粒子越拥挤,则选择的概率越低。这是为了保证能够对未知的区域进行探索。

  如何进行存档呢?

  在种群更新完成之后,是如何进行存档的呢?MOPSO进行了三轮筛选。

  首先,根据支配关系进行第一轮筛选,将劣解去除,剩下的加入到存档中。

  其次,在存档中根据支配关系进行第二轮筛选,将劣解去除,并计算存档粒子在网格中的位置。

  最后,若存档数量超过了存档阀值,则根据自适应网格进行筛选,直到阀值限额为止。重新进行网格划分。

  refer:

  1. Handling multiple objectives with particle swarm optimization
  2. Approximating the non dominated front using the Pareto archivedevolution strategy
  3. http://blog.csdn.net/ture_2010/article/details/18180183
时间: 2024-09-30 14:39:01

多目标粒子群的相关文章

MOPSO 多目标例子群优化算法

近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化(PSO)算法是一种模拟社会行为的.基于群体智能的进化技术,以其独特的搜索机理.出色的收敛性能.方便的计算机实现,在工程优化领域得到了广泛的应用,多目标PSO(MOPSO)算法应用到了不同的优化领域[9~11],但存在计算复杂度高.通用性低.收敛性不好等缺点. 多目标粒子群(MOPSO)算法是由Ca

人工免疫相关算法

人工免疫相关优化算法 负向选择算法 生物学机理:定义任何属于人体自身的组织称为自体,任何入侵的东西称为异体.产生的抗体与自身细胞结合,则取消该抗体:留下的正式抗体,如果某异体与之产生结合并达到一定的阈值,则该异体检测为抗原,予以清除. 克隆选择算法 算法思想:淘汰与抗原结合能力差的抗体,对优质抗体变异,增加抗体的多样性. 算法流程: 1)产生出事候选集P:其由记忆细胞子集和保留子集组成. 2)选取n个亲和度最大的子集作为抗体样本Pn. 3 ) 对Pn进行克隆操作,其中亲和越大,克隆的个数越多.生

粒子群算法(1)----粒子群算法简单介绍

一.粒子群算法的历史  粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比方研究鸟群系统,每一个鸟在这个系统中就称为主体.主体有适应性,它能够与环境及其它的主体进行交流,而且依据交流的过程"学习"或"积累经验"改变自身结构与行为.整个系统的演变或进化包括:新层次的产生(小鸟的出生):分化和多样性的出现(鸟群中的鸟分成很多小的群):新的主题的出现(鸟寻找食物过程中,不断发现新

粒子群算法(1)----粒子群简要

一.历史粒子群算法  从复杂适应系统衍生PSO算法(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比方研究鸟群系统,每一个鸟在这个系统中就称为主体.主体有适应性,它能够与环境及其它的主体进行交流,而且依据交流的过程"学习"或"积累经验"改变自身结构与行为. 整个系统的演变或进化包括:新层次的产生(小鸟的出生):分化和多样性的出现(鸟群中的鸟分成很多小的群):新的主题的出现(鸟寻找食物过程中.不断发现

matlab基本粒子群算法实现(二)

虽然这个不是我写的 但是这个粒子群是二维的 之前的是一维的. main.m clear all; close all; clc; [x y]=meshgrid(-100:100,-100:100); sigma=50; img = (1/(2*pi*sigma^2))*exp(-(x.^2+y.^2)/(2*sigma^2)); %目标函数,高斯函数 mesh(img); hold on; n=10; %粒子群粒子个数 %初始化粒子群,定义结构体 %结构体中八个元素,分别是粒子坐标,粒子速度,粒

matlab基本粒子群算法实现(三)

这里我想说明的是 粒子群的收敛里面可能会有的错误 我选用了一个三峰曲面 而粒子群很容易陷入局部最大值 所以得出的值不一定是全局最大值. 哈哈哈,粒子群算法结束了, 接下来我应该是去学BP神经网络. 就是这么任性 main.m clear all;close all;clc; x=linspace(-3,3,500); y=linspace(-3,3,500); [x,y]=meshgrid(x,y) ; z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(

算法(三)粒子群算法之局部粒子

在全局版的标准粒子群算法中,每个粒子的速度的更新是根据两个因素来变化的,这两个因素是:1. 粒子自己历史最优值pi.2.  粒子群体的全局最优值pg.如果改变粒子速度更新公式,让每个粒子的速度的更新根据以下两个因素更新,A. 粒子自己历史最优值pi.B. 粒子邻域内粒子的最优值pnk.其余保持跟全局版的标准粒子群算法一样,这个算法就变为局部版的粒子群算法. 一般一个粒子i 的邻域随着迭代次数的增加而逐渐增加,开始第一次迭代,它的邻域为0,随着迭代次数邻域线性变大,最后邻域扩展到整个粒子群,这时就

用OpenGL实现粒子的随机运动

一.目的: 掌握OpenGL中粒子的绘制.随机数的使用 二.代码: #include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> //srand和rand #include <time.h> //time(int) const int N = 2000; float particles[N][3]; float rtri = 0; // 初始化材质属性.光源.光照模型.深度缓冲区 void

那些年,我开发过的软件

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka        摘要:本文从自己入门开发的软件说起,主要阐述了自己入门程序界的过程以及一些经历,文末也提出了自己学习的一些心得和方法. 话说进入程序界这一行业,也是很偶然的一个因素,三年半之前笔者都还只会写点Matlab程序,当时最大的愿望就是学好Matlab,参加数学建模大赛,冲刺国奖,从此走上人生赢家的道路.无奈,那时算法能力实在一窍不通,更准确说就是完全没有算法的基础,被人虐得死得活来,