当前位置:文档之家› 随机蛙跳算法和NSGA2算法

随机蛙跳算法和NSGA2算法

《智能算法及应用技术》

结课综述

Name: Moonlightran

Email: randolphingwp@

目录

1. 随机蛙跳(SFLA)算法 .................................................................................. 1

1.1 SFLA理论基础 ......................................................................................... 1

1.2 SFLA 的基本原理 .................................................................................... 3

1.3 SFLA 的基本概念 .................................................................................... 4

1.4 SFLA 的参数设置 .................................................................................... 4

1.5 SFLA 的运算流程 .................................................................................... 5

1.6 SFLA函数优化中实例 ........................................................................... 10

1.7 粒子群算法(PSO)函数优化 ............................................................. 14

2. 多目标优化算法(NSGA—II) ......................................................................... 19

2.1多目标优化问题描述.............................................................................. 19

2.2 基本概念................................................................................................. 19

2.3 非支配排序算法(NSGA) ....................................................................... 20

2.4 带精英策略的非支配排序遗传算法(NSGA—II) ................................ 22

2.5 NSGA-II函数优化实例 .......................................................................... 27

1

单目标和多目标优化算法介绍

——随机蛙跳算法和带精英策略的非支配排序算法

通常的优化问题可以分为单目标优化问题和多目标优化问题。针对这两类问题,分别介绍随机蛙跳算法(SFLA)和带精英策略的非支配排序算法(NSGA—II),并且给出这两类算法在函数优化中的应用实例。

1.随机蛙跳(SFLA)算法

随机蛙跳算法是由Kevin Lanes和Mustafa Eusuff于2003 年共同提出,该算法结合了基于遗传特性的模因算法和基于行为的粒子群算法的优点,适合解决各类组合优化问题。混合蛙跳算法具有设置参数少、简单易于理解、鲁棒性强等特点,已在语音情感识别、作业车间调度、复杂函数优化问题求解等领域得到成功应用。

1.1 SFLA理论基础

SFLA 是一种群体仿生类启发式进化计算方法,该算法将模因算法和粒子群优化算法的思想相结合,并经过适度扩展,因而兼具二者的优点。作为 SFLA的理论基础,模因算法和粒子群优化算法有必要进行简要介绍。

1.1.1模因算法

Moscato受Dawkin提出的 meme概念的启示,于1989年首次提出了模因算法。该算法源于文化进化理论中的隐喻思想,结合了全体成员参与搜索的思想和有选择性的特定个体搜索的机制,可以通过启发式搜索解决优化问题。模因算法在原理上与遗传算法很相似,不同的是该算法在原始遗传算法步骤中的交叉和变异步骤之后增加了一个小范围的局部进化过程,故模因算法也曾被叫做增加了局部搜索功能的遗传算法。给出模因算法的运算流程如图1.1所示。 2

开始编码产生初始种群满足停止准则结束YN局部搜索计算适应度选择交叉局部搜索变异产生新种群得出最优个体解码

图1.1模因算法流程

1.1.2粒子群算法

Kennedy和Eberhart受鸟群的群体飞行特性启发于1995年提出粒子群优化3

算法,该算法是一种基于群体智能的自适应优化计算方法。假设有一群鸟,其中的所有个体均被称作一个“粒子”,这样的“粒子”被赋予速度和位置两种属性,在可行域中按照一定的规则飞行,目标是经过一定的进化次数找出待解问题的最佳参考方案。进化过程中,所有个体不断追随两个关键的极值以调整自己的位置和速度。其中一个极值是该粒子本身搜索到的最佳位置bestP,即粒子自身的最优值;另外一个是粒子群中的所有成员中当前最优个体所在的位置bestG,即全局最优解。

粒子群优化算法中个体的速度、位置更新公式如下:

)()()()(2111kikbestkikibestkikkiXGrandcXPrandcVV(1.1)

11kikikiVXX(1.2)

其中,kiV为第k次迭代中第i个粒子的速度。

kiX为第 k 次迭代中第i个粒子的位置。

kibestP为第 k 次迭代中第i个粒子的自身最优位置。

kbestG为第 k 轮进化中的全局最优位置。

Rand()为位于范围[0,1]之间的随机数。

为粒子的惯性因子,1c为粒子的认知因子,控制kiP移动的幅度。

2c为粒子的社会因子,控制kG移动的幅度。

粒子群优化算法的运算流程为:

Step1:初始化粒子的速度和位置。

Step2:计算所有粒子的适应值。

Step3:比较各个粒子的当前适应值与其历史最优位置bestP的适应值,如果前者优,则置此粒子当前最佳位置为bestP。

Step4:比较各个粒子的当前适应值与其全局最优位置bestG的适应值,若前者优,则置此粒子当前全局最佳位置为bestG。

Step5:采用式(1.1)和式(2.1)更新种群中个体的速度和位置。

Step6:判断:若满足停止准则,则算法终止,否则转Step2。

上述两种算法核心思想的有机结合,即形成了所研究的混合蛙跳算法。

1.2 SFLA 的基本原理 4

SFLA 是基于群体智能的仿生类优化算法,种群(解集)由一些具有相同结构的青蛙(解)组成。SFLA模仿了青蛙群体的集体觅食活动。

为了寻找当前有限的食物源,在空间受限的一块区域内,一群青蛙首先按一定规则找准各自的初始位置。位置确定后,每只青蛙开始利用各自携带的个性化信息在自己所在位置附近寻找食物更丰富的位置,并通过跳跃更新自己的位置。寻找的规则是,蛙群通过充分发挥自身的自组织性,分别由个数基本相同的青蛙组团搜索,形成局部范围内的小团体,即为子种群。子种群内部,由局部精英个体带领其它个体进行搜索。每个子群搜索结束之后,所有个体重新组织起来,混合后重新按照规则分组,再执行组内搜索。组团搜索和群体混合迭代执行,直至找到最丰富的食物源。

对于 SFLA,每只青蛙被看作一个候选解,确定初始位置即为青蛙种群的初始化过程。组团搜索对应于种群的划分并执行局部搜索,此过程是 SFLA 最核心的步骤,本质上青蛙个体的位置更新发生于此阶段。子群的混合形成算法的混合运算,即全局信息交换。全局信息交换与局部深度搜索相互作用,为SFLA跳出局部极值提供了保证。

1.3 SFLA 的基本概念

1.青蛙:承载思想与信息的个体,构成种群的元素。

2.种群:由一定数量的青蛙组成的集合。

3.子种群:种群的子集。由所有青蛙构成的群体根据相应规则被划分为多个并行、独立的子集,这些子集被称为子种群,即局部小团体。

4.适应度:用来评价青蛙个体好坏的度量标准。

5.局部搜索:子种群内部个体的更新操作。按照一定的更新机制,子群内部的青蛙个体执行跳跃操作,从而消息得以在小团体内部传播和扩散。

6.混合运算:将各个子种群合并为一个种群的操作。将各个局部小团体进行合并,形成一个统一的群体,便于个体间的信息交流,为下一轮进化提供条件。

7.控制参数:SFLA 执行需要的控制参数,主要有:所有青蛙个体总数(种群规模),最大混合迭代次数,局部小团体(子种群)的个数,子种群内部进化代数,各局部团体中青蛙的个数,青蛙个体的维数,青蛙最大跳动步长等。

8.执行终止条件:

(1)在若干连续进化代数内,全局最优解没有得到刷新;

(2)算法执行到初始设定的最大混合迭代次数。

满足二者之一,算法即被强制终止。

1.4 SFLA 的参数设置 5

SFLA 的参数设置对算法的搜索性能具有非常重要的影响。SFLA 主要包括五个关键的参数,具体为:群体中青蛙个体数量F,算法的最大混合迭代次数G,子种群数量m ,各子种群的局部进化代数N,青蛙的最大允许跳跃距离maxD。SFLA 的参数设置具体解释如下:

(1)群体中青蛙个体数量F:又称种群规模,指所有青蛙个体总数。一般而言是算法最重要的参数。青蛙个体数量越多,算法搜索到全局最优值的可能性也相应越大,但太大的种群规模会对搜索速度造成不利影响。

(2)算法的最大混合迭代次数G:此参数需要合理设置,如果G 过大,则导致算法复杂度增加;相反,如果G太小,将造成青蛙种群之间缺乏交流,影响青蛙向最优个体靠近。该参数的选取一般与问题的规模相关,规模越大,G的取值也相应越大。

(3)子种群数量m:此参数也需要合理地选择,m如果过小,导致每个子种群内部青蛙个数过多,参与局部搜索的个体相应过少,因此信息难以在子种群间充分交换,失去局部搜索的优势;但当m太大时,会造成每个子种群规模太小,因此会削弱局部模因搜索的优势,造成算法易于早熟收敛。

(4)各子种群的局部进化代数N:此参数也需要合理设置,过小的N会造成子种群内部青蛙个体频繁跳跃,减少了局部个体信息交流的机会;反之,若N过大,将会增加局部区域内算法早熟的可能性。

(5)青蛙的最大允许跳跃距离maxD:此参数可在一定程度上控制算法的全局寻优能力。若maxD太小,青蛙将在局部小范围跳动,容易陷入局部最优,削弱算法的全局搜索能力;而如果maxD过大,青蛙将在可行域内大步跳跃,又容易造成错过最佳寻优位置。

SFLA 的研究起步相对较晚,就算法的参数设置而言,学术界尚未形成可遵循的指导性原则,多数情况下通过仿真实验测试得到一组设置。这也给不同学者针对经典SFLA的改进效果对比造成了一定困难。

1.5SFLA 的运算流程

SFLA 首先从可行域中随机地产生一组初始解构成初始种群,每个解对应于一只青蛙;接着计算各个青蛙的适应度值,按照适应度降序排列;然后以某种规则把整个青蛙种群划分为一定数量的子种群,在每个子种群内执行局部搜索,即根据指定的策略更新子种群内的最差青蛙,促使被更新个体向局部最优位置靠近。子种群进化结束后,各子种群之间进行信息交换实现混合运算。交替执行局部搜索和混合运算直至满足停止条件。

相关主题