粒子群算法与遗传算法的比较

合集下载

遗传算法与粒子群算法的优劣对比研究

遗传算法与粒子群算法的优劣对比研究

遗传算法与粒子群算法的优劣对比研究引言:遗传算法和粒子群算法是两种常用的优化算法,它们在解决复杂问题和优化搜索中发挥着重要作用。

本文将对这两种算法进行对比研究,分析它们的优劣势,以及在不同问题领域的适用性。

一、遗传算法的基本原理和特点遗传算法是一种模拟自然选择和进化过程的优化算法。

它通过模拟生物进化中的选择、交叉和变异等过程,逐步搜索最优解。

遗传算法的基本流程包括初始化种群、选择操作、交叉操作和变异操作。

其中,选择操作根据适应度函数选择优秀个体,交叉操作模拟生物的交叉遗传,变异操作引入随机性,增加搜索的多样性。

遗传算法具有以下特点:1. 并行搜索能力强:遗传算法可以同时搜索多个解,从而加快了搜索速度。

2. 全局搜索能力强:遗传算法通过不断的选择、交叉和变异操作,可以跳出局部最优解,寻找全局最优解。

3. 适应性强:遗传算法能够根据问题的特点,自适应地调整搜索策略,提高搜索效率。

二、粒子群算法的基本原理和特点粒子群算法是一种模拟鸟群觅食行为的优化算法。

它通过模拟粒子在解空间中的移动和信息交流,逐步搜索最优解。

粒子群算法的基本流程包括初始化粒子群、更新粒子速度和位置、更新全局最优解和个体最优解。

其中,粒子的速度和位置更新受到个体历史最优解和全局历史最优解的影响。

粒子群算法具有以下特点:1. 局部搜索能力强:粒子群算法通过个体历史最优解的引导,可以有效地进行局部搜索。

2. 收敛速度快:粒子群算法通过粒子之间的信息交流,可以迅速收敛到最优解的附近。

3. 参数设置简单:粒子群算法的参数设置相对简单,不需要过多的调参。

三、遗传算法与粒子群算法的对比研究1. 搜索能力对比:遗传算法具有较强的全局搜索能力,能够跳出局部最优解,寻找全局最优解。

而粒子群算法则更适合进行局部搜索,对于复杂问题的全局搜索能力相对较弱。

2. 收敛速度对比:粒子群算法由于粒子之间的信息交流,能够迅速收敛到最优解的附近,收敛速度较快。

而遗传算法由于引入了交叉和变异操作,搜索过程中存在一定的随机性,收敛速度相对较慢。

人工智能中的遗传算法与粒子群优化算法比较分析

人工智能中的遗传算法与粒子群优化算法比较分析

人工智能中的遗传算法与粒子群优化算法比较分析遗传算法与粒子群优化算法是两种经典的优化算法,它们都是受到自然界的启发而产生的。

在人工智能领域,这两种算法都被广泛应用于解决优化问题。

本文将对遗传算法与粒子群优化算法进行比较分析,通过对它们的原理、优缺点以及应用领域进行对比,帮助读者更好地理解它们各自的特点和适用范围。

一、遗传算法的原理与特点遗传算法是一种模拟自然界生物进化过程的优化算法。

它的基本原理是借鉴了达尔文的进化论和孟德尔的遗传学理论。

在遗传算法中,候选解被编码成一组染色体,通过选择、交叉和变异等操作来产生新的解,以逐步优化种群中的个体。

遗传算法的主要特点包括并行搜索、全局寻优和适应度函数等。

1.并行搜索:遗传算法通过维护一个种群,每一代的个体都是同时存在的,可以并行地进行搜索。

这种特点使得遗传算法适用于高维度的优化问题,具有较好的鲁棒性和全局搜索能力。

2.全局寻优:由于遗传算法的并行搜索特性,它在寻找全局最优解方面具有一定的优势。

相对于局部搜索算法,遗传算法可以更好地避免陷入局部最优解。

3.适应度函数:遗传算法通过适应度函数来评价个体的优劣,从而进行选择、交叉和变异等操作。

适应度函数可以根据具体问题的特点来设计,使得遗传算法具有较好的通用性和灵活性。

遗传算法的应用领域包括但不限于工程优化、组合优化、机器学习和神经网络等。

在实际应用中,遗传算法被广泛用于解决复杂的优化问题,取得了很好的效果。

二、粒子群优化算法的原理与特点粒子群优化算法是一种模拟鸟群觅食行为的优化算法。

它的基本原理是通过模拟每个候选解在解空间中的移动轨迹,以寻找最优解。

粒子群优化算法的核心思想是借鉴了社会学和物理学的相关理论,通过更新每个粒子的速度和位置来不断调整解的质量,从而逐步收敛到最优解。

1.群体搜索:粒子群优化算法是一种群体智能算法,它通过调整每个粒子的位置和速度来实现全局搜索和局部搜索。

这种特点使得粒子群优化算法适用于多峰函数的优化问题,能够快速找到全局最优解。

粒子群算法与遗传算法的比较

粒子群算法与遗传算法的比较

粒子群算法介绍优化问题是工业设计中经常遇到的问题,许多问题最后都可以归结为优化问题•为了解决各种各样的优化问题,人们提出了许多优化算法,比较著名的有爬山法、遗传算法等•优化问题有两个主要问题:一是要求寻找全局最小点,二是要求有较高的收敛速度•爬山法精度较高,但是易于陷入局部极小•遗传算法属于进化算法(Evolutionary Algorithms)的一种,它通过模仿自然界的选择与遗传的机理来寻找最优解•遗传算法有三个基本算子:选择、交叉和变异•但是遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.1995年Eberhart博士和kennedy博士提出了一种新的算法;粒子群优化(Particle Swarm Optimization -PSO) 算法.这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。

粒子群优化(Particle Swarm Optimization - PSO) 算法是近年来发展起来的一种新的进化算法(Evoluti on ary Algorithm - EA) .PSO 算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质.但是它比遗传算法规则更为简单,它没有遗传算法的交叉” (Crossover)和变异”(Mutation)操作.它通过追随粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和迭代搜寻最优值。

但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。

同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。

无功优化中粒子群、遗传算法的简要对比

无功优化中粒子群、遗传算法的简要对比
2 0 0 5 , 3 3 ( 1 5 ) : 3 7 - 4 0 .
粒子群算法和遗传算法用于无功优化的可行性和有效f 生 进行对比验证。 结果显
示, 基 于粒子群 算法 的无功 优化 , 收敛速 度更 快 , 编程简 单 , 计 算时 间短 , 易于推 广使用 , 能精 确地找 到全局 最优解 , 系统 的 网络损耗 明显降 低 , 电压值 稳定且有 了相 应的提 升 , 达 到了改 善 电压 质量 、 减少 网络损 耗和提 高 电压稳 定性 的无 功
优化 目的 。 鉴 于粒 子群算 法是一 种 更加优 秀 的算法 , 在 今后 的无功 优化 算法 设
计 中, 作者将 以粒 子群算法 为基础 , 去研 究如 何更好 的解决 无功优 化的 问题 , 很 多学者 已经提 出 了很多构 想 , 比如二进 制粒子 群法 , 小生境 粒子 群法 , 免疫粒 子 群法 等等 , 本 文 只是把 最基 本的粒 子群 算法 运用 到无功 优化 问题 , 在 以后 的研 究中, 应 该整合各 类思想 , 使 基于粒 子群算 法 的无 功优化 方案 更加科学 , 更 加合
I E E E 一 6 系统 有 功 网损 曲线 终 止代数 =1 0 0
点1 、 2 ) 、 2 条可调变压器支路( 支路3 — 5 、 4 — 6 ) 和2 个无功补偿点( 节点3 和4 ) 。 系
统 中 的发 电机 机端 电压是 连续变 化 的 ; 可调变压 器 的调节 间距为 2 . 5 %, 无 功补 偿容 量 间距 分别 为0 . 0 0 5 和0 . 0 0 5 5 。 本 文选 取群体 规模 N为2 0 0 , 迭代 次数 1 0 0 , 粒子群 算法 中惯 性权 重 w 取 常 值0 . 8 即可 , 用MAT L A B 语言 编 写无功 优化程 序 , 结果 如 图2 . 1 , 图2 . 2 * n 表2 . 1 。 由图2 . 1 和 图2 . 2 可知 , 粒子 群算法 可 以更 早的 收敛 , 得 到最 优解 , 遗传 算法

基于遗传进化和粒子群优化算法的入侵检测对比分析

基于遗传进化和粒子群优化算法的入侵检测对比分析

O t i t n( S )w r ue pi i ls r gadcm aa v nls a s o pe d nt saa s ,b a pi z i P O ee sdt ot z c t i n o prt eaayi w sa ocm le .I h nl i i r m ao o m e u en i s l t i ys n y
Z N o gyn I i ,H U Me- HE G H n —ig,N n L O iu ,WA G Y ‘ j N u
( .C lg o p t c ne h nqn nvrt,C og i 0 00 hn ; 1 oeeo Cm ue Si c,C og i U i sy h nqn 4 0 3,C ia l f r e g ei g
0 引言
人侵检测技术是安全防御体 系 的一个 重要组 成部分 , 是
1 遗传 算法在入侵检 测 中的应用
遗传算法 主要 以两类 方式应用 于入侵检测 中: 是直 接 一 使用遗传算法产生 出分 类规则 。 ; 是用遗 传算法 来选择 二
K e o ds g nei l o tm ; pa t l wa i pt ia in; i t so ee to ; cu trng e ou in; o tm ia in y w r : e tc a g r h i ri e s rn o i z to c m nr in d tc in u lse i ; v lto p i z to
中 图 分 类 号 : P 9 .8 T 3 3 0 文 献 标 志 码 : A
Co pa a i e s ud n e o uto a y g n tc a g r t m n m r tv t y o v l i n r e e i l o ih a d pa tc e s r p i i a i n n i t u i n d t c i n r i l wa m o tm z to i n r s o e e to

遗传算法与其他优化算法的比较分析

遗传算法与其他优化算法的比较分析

遗传算法与其他优化算法的比较分析介绍:在计算机科学领域,优化算法是一类用于解决最优化问题的方法。

随着计算机技术的发展,优化算法在实际应用中发挥着重要的作用。

本文将对遗传算法与其他优化算法进行比较分析,探讨它们的优势和不足之处。

一、遗传算法的基本原理遗传算法是模拟生物进化过程的一种优化算法。

它通过模拟自然界中的遗传、交叉和变异等过程,逐步搜索最优解。

遗传算法的基本原理包括编码、选择、交叉和变异等步骤。

编码将问题转化为染色体的形式,选择通过适应度函数筛选出较优的个体,交叉将两个个体的染色体进行交换,变异则是对染色体进行随机变动。

二、遗传算法的优势1. 广泛适用性:遗传算法适用于各种类型的问题,包括线性和非线性问题、连续和离散问题等。

这使得它在实际应用中具有广泛的适用性。

2. 全局搜索能力:遗传算法通过随机性和多样性的搜索策略,能够在搜索空间中找到全局最优解,避免陷入局部最优解。

3. 并行性:遗传算法的并行性较强,可以通过多线程或分布式计算等方式提高求解效率。

三、遗传算法的不足之处1. 参数调整困难:遗传算法中的参数设置对算法的性能影响较大,但很难确定最优的参数取值。

不同的问题需要不同的参数设置,这增加了算法的复杂性。

2. 运算时间较长:由于遗传算法的搜索过程是通过迭代进行的,因此在求解复杂问题时,运算时间较长。

这限制了其在某些实时性要求较高的应用中的应用。

3. 可能陷入局部最优解:虽然遗传算法具有全局搜索能力,但在某些情况下,由于搜索空间较大或问题的特殊性,遗传算法可能会陷入局部最优解。

四、与其他优化算法的比较1. 粒子群算法:粒子群算法是一种模拟鸟群觅食行为的优化算法。

与遗传算法相比,粒子群算法更加注重个体之间的信息共享,具有较快的收敛速度。

但在解决复杂问题时,遗传算法更具优势。

2. 模拟退火算法:模拟退火算法通过模拟固体物体冷却过程中的原子运动,搜索最优解。

与遗传算法相比,模拟退火算法更注重局部搜索能力,对于复杂问题的全局搜索能力较弱。

遗传算法,粒子群算法和蚁群算法的异同点

遗传算法,粒子群算法和蚁群算法的异同点

遗传算法,粒子群算法和蚁群算法的异同点
遗传算法、粒子群算法和蚁群算法是三种不同的优化算法,它们的异同点如下:
1. 原理不同:
遗传算法是一种模拟自然进化过程的优化算法,主要利用遗传和交叉等运算来产生下一代候选解,通过适应度函数来评价每个候选解的好坏,最终选出最优解。

粒子群算法基于对群体智能的理解和研究,模拟了鸟群或鱼群等动物群体的行为,将每个解看作一个粒子,粒子通过跟踪历史最佳解的方式来更新自己的位置与速度,直到达到最佳解。

蚁群算法是基于模拟蚂蚁在食物和家之间寻找最短路径的行为,将每个解看作一只蚂蚁,通过随机选择路径并留下信息素来搜索最优解。

2. 适用场景不同:
遗传算法适用于具有较大搜索空间、多个可行解且无法枚举的问题,如旅行商问题、无序机器调度问题等。

粒子群算法适用于具有连续参数、寻求全局最优解的问题,如函数优化、神经网络训练等。

蚁群算法适用于具有连续、离散或混合型参数的优化问题,如
路径规划、图像分割等。

3. 参数设置不同:
遗传算法的参数包括个体数、交叉概率、变异概率等。

粒子群算法的参数包括粒子数、权重因子、学习因子等。

蚁群算法的参数包括蚂蚁数量、信息素挥发率、信息素初始值等。

4. 收敛速度不同:
遗传算法需要较多的迭代次数才能得到较优解,但一旦找到最优解,一般能够较好地保持其稳定性,不太容易陷入局部最优。

粒子群算法的收敛速度较快,但对参数设置较为敏感,可能会陷入局部最优。

蚁群算法的收敛速度中等,能够较好地避免局部最优,但也容易出现算法早熟和陷入局部最优的情况。

遗传算法与粒子群优化算法比较

遗传算法与粒子群优化算法比较

遗传算法与粒子群优化算法比较遗传算法与粒子群优化算法是两种常见的优化算法,它们都是在自然界中得到启发而设计的。

在实际应用中,人们经常会比较这两种算法的性能,以确定哪种算法更适合解决特定的问题。

本文将分别介绍遗传算法和粒子群优化算法,并对它们进行比较,以便读者更好地理解它们的原理和应用。

1.遗传算法遗传算法是一种模拟自然选择和遗传机制的优化算法。

它基于达尔文的进化论和孟德尔的遗传定律,通过模拟自然选择和遗传机制来寻找最优解。

遗传算法的基本原理是通过种群中个体的适应度来评估其优劣,然后利用交叉和变异等操作来生成新的个体,以逐步优化种群中的个体,最终找到最优解。

遗传算法可以应用于许多不同的领域,例如工程优化、机器学习和图像处理等。

由于其模拟自然选择和遗传机制的特点,遗传算法在复杂的优化问题中表现出了较好的性能,特别是在多模态、高维度的优化问题中。

2.粒子群优化算法粒子群优化算法是一种模拟鸟群觅食的行为而设计的优化算法。

它基于鸟群觅食时的群体协作和信息共享,通过模拟粒子在解空间中的搜索和迁移来寻找最优解。

粒子群优化算法的基本原理是通过模拟粒子在解空间中的搜索和迁移,来寻找最优解。

粒子群优化算法也可以应用于许多不同的领域,例如无线通信、电力系统和图像处理等。

由于其模拟群体协作和信息共享的特点,粒子群优化算法在寻找全局最优解方面表现出了较好的性能,特别是在连续优化问题中。

3.比较分析接下来我们将分别从优化过程、收敛速度和适用范围三个方面对遗传算法和粒子群优化算法进行比较分析。

3.1优化过程遗传算法的优化过程包括选择、交叉和变异三个主要操作。

在选择操作中,根据个体的适应度选择父代个体,通常选择适应度较高的个体。

在交叉操作中,通过交叉两个父代个体的基因来生成子代个体,以增加种群的多样性。

在变异操作中,通过对个体的基因进行随机变异来增加种群的多样性。

通过这三个操作,遗传算法能够不断优化种群中的个体,最终找到最优解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

粒子群算法介绍优化问题是工业设计中经常遇到的问题,许多问题最后都可以归结为优化问题. 为了解决各种各样的优化问题,人们提出了许多优化算法,比较著名的有爬山法、遗传算法等.优化问题有两个主要问题:一是要求寻找全局最小点,二是要求有较高的收敛速度. 爬山法精度较高,但是易于陷入局部极小. 遗传算法属于进化算法( Evolutionary Algorithms) 的一种,它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子:选择、交叉和变异. 但是遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.1995 年Eberhart博士和kennedy博士提出了一种新的算法;粒子群优化(Particle Swarm Optimization -PSO) 算法. 这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。

粒子群优化(Particle Swarm Optimization - PSO) 算法是近年来发展起来的一种新的进化算法( Evolutionary Algorithm - EA) .PSO 算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质. 但是它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作. 它通过追随当前搜索到的最优值来寻找全局最优。

1. 引言粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士提出。

源于对鸟群捕食的行为研究。

PSO同遗传算法类似,是一种基于迭代的优化算法。

系统初始化为一组随机解,通过迭代搜寻最优值。

但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。

同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。

目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域2. 背景: 人工生命"人工生命"是来研究具有某些生命基本特征的人工系统。

人工生命包括两方面的内容:1. 研究如何利用计算技术研究生物现象2. 研究如何利用生物技术研究计算问题我们现在关注的是第二部分的内容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的.现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为例如floys和boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计.在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上.粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具.3. 算法介绍如前所述,PSO模拟鸟群的捕食行为。

设想这样一个场景:一群鸟在随机搜索食物。

在这个区域里只有一块食物。

所有的鸟都不知道食物在那里。

但是他们知道当前的位置离食物还有多远。

那么找到食物的最优策略是什么呢。

最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

PSO从这种模型中得到启示并用于解决优化问题。

PSO中,每个优化问题的解都是搜索空间中的一只鸟。

我们称之为“粒子”。

所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。

然后粒子们就追随当前的最优粒子在解空间中搜索。

PSO 初始化为一群随机粒子(随机解)。

然后通过迭代找到最优解。

在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。

第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。

另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。

另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置:v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)present[] = persent[] + v[] (b)v[] 是粒子的速度, w是惯性权重,persent[] 是当前粒子的位置. pbest[] and gbest[] 如前定义rand () 是介于(0,1)之间的随机数. c1, c2 是学习因子. 通常c1 = c2 = 2.程序的伪代码如下For each particle____Initialize particleENDDo____For each particle________Calculate fitness value________If the fitness value is better than the best fitness value (pBest) in history____________set current value as the new pBest____End____Choose the particle with the best fitness value of all the particles as the gBest____For each particle________Calculate particle velocity according equation (a)________Update particle position according equation (b)____EndWhile maximum iterations or minimum error criteria is not attained在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax4. 遗传算法和PSO 的比较大多数演化计算技术都是用同样的过程:1. 种群随机初始化2. 对种群内的每一个个体计算适应值(fitness value).适应值与最优解的距离直接有关3. 种群根据适应值进行复制4. 如果终止条件满足的话,就停止,否则转步骤2从以上步骤,我们可以看到PSO和GA有很多共同之处。

两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。

两个系统都不是保证一定找到最优解。

但是,PSO 没有遗传操作如交叉(crossover)和变异(mutation). 而是根据自己的速度来决定搜索。

粒子还有一个重要的特点,就是有记忆。

与遗传算法比较, PSO 的信息共享机制是很不同的. 在遗传算法中,染色体(chromosomes) 互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动. 在PSO 中, 只有gBest (or lBest) 给出信息给其他的粒子,这是单向的信息流动. 整个搜索更新过程是跟随当前最优解的过程. 与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解5. 人工神经网络和PSO人工神经网络(ANN)是模拟大脑分析过程的简单数学模型,反向转播算法是最流行的神经网络训练算法。

进来也有很多研究开始利用演化计算(evolutionary computation)技术来研究人工神经网络的各个方面。

演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结构,传递函数),网络学习算法。

不过大多数这方面的工作都集中在网络连接权重,和网络拓扑结构上。

在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数(fitness function)的选择一般根据研究目的确定。

例如在分类问题中,错误分类的比率可以用来作为适应值演化计算的优势在于可以处理一些传统方法不能处理的例子例如不可导的节点传递函数或者没有梯度信息存在。

但是缺点在于:在某些问题上性能并不是特别好。

2. 网络权重的编码而且遗传算子的选择有时比较麻烦最近已经有一些利用PSO来代替反向传播算法来训练神经网络的论文。

研究表明PSO 是一种很有潜力的神经网络算法。

PSO速度比较快而且可以得到比较好的结果。

而且还没有遗传算法碰到的问题这里用一个简单的例子说明PSO训练神经网络的过程。

这个例子使用分类问题的基准函数(Benchmark function)IRIS数据集。

(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。

我们用3层的神经网络来做分类。

现在有四个输入和三个输出。

所以神经网络的输入层有4个节点,输出层有3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。

我们也可以训练神经网络中其他的参数。

不过这里我们只是来确定网络权重。

粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。

权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。

对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。

然后记录所有的错误分类的数目作为那个粒子的适应值。

现在我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。

PSO本身并没有很多的参数需要调整。

所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。

6. PSO的参数设置从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数PSO的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为(x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置粒子数: 一般取20 – 40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或200 粒子的长度: 这是由优化问题决定, 就是问题解的长度粒子的范围: 由优化问题决定,每一维可是设定不同的范围Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子(x1, x2, x3) x1 属于[-10, 10], 那么Vmax 的大小就是20 学习因子: c1 和c2 通常等于2. 不过在文献中也有其他的取值. 但是一般c1 等于c2 并且范围在0和4之间中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定.全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再有局部PSO进行搜索.另外的一个参数是惯性权重, Shi 和Eberhart指出(A modified particle swarm optimizer,1998):当Vmax很小时(对schaffer的f6函数,Vmax<=2),使用接近于1的惯性权重;当Vmax不是很小时(对schaffer的f6函数,Vmax>=3),使用权重w=0.8较好.如果没有Vmax的信息,使用0.8作为权重也是一种很好的选择.另外,对于使用时变的权重,结果不清楚,但是预计结果应比较好.附上一个C++实现的C++代码:代码来自2008年数学建模东北赛区B题,原题描述/post/18.html #include "stdafx.h"#include <math.h>#include <time.h>#include <iostream>#include <fstream>using namespace std;int c1=2; //加速因子int c2=2; //加速因子double w=1; //惯性权重double Wmax=1; //最大惯性权重double Wmin=0.6; //最小惯性权重intKmax=110; //迭代次数intGdsCnt; //物资总数intconst Dim=10; //粒子维数intconstPNum=50; //粒子个数intGBIndex=0; //最优粒子索引double a=0.6; //适应度调整因子double b=0.5; //适应度调整因子intXup[Dim]; //粒子位置上界数组。

相关文档
最新文档