智能优化方法作业——PSO算法

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

智能优化方法作业PSO算法实验报告

课程名称:智能优化方法作者姓名:

专业:控制工程

目录

第一章问题描述 (1)

第二章算法设计 (1)

2.1解及目标函数的表达 (1)

2.1.1种群的编码 (1)

2.1.2初始种群的产生 (1)

2.1.3评价函数的构造 (1)

2.2 POS速度迭代公式 (2)

2.3粒子的更新 (2)

2.4惯性权重的调整 (3)

2.5停止准则 (3)

第三章算法实现及分析 (3)

3.1编译环境及界面介绍 (3)

3.2 matlab中GUI界面打开的3种方式 (4)

第四章算法分析 (5)

4.1 默认参数下的运行结果 (5)

4.2种群大小对算法的影响 (6)

4.3 最大迭代次数对算法的影响 (8)

4.4 实验得出的“最优”参数 (9)

第一章 问题描述

无约束5维的Rosenbrock 函数可以描述如下:

∑-=+-+-=112221))1()(100()(min n i i i i x x x x f

(1)

其中,5,...2,1],30,30[=-∈i x i 。

要求按PSO 算法思想设计一个该问题的求解算法,并利用计算机语言实现设计的算法。将实验报告和程序代码(带有详细注释)。

第二章 算法设计

2.1解及目标函数的表达

2.1.1种群的编码

显然对于一个粒子个体可以用一个含有5个元素的一维数组进行表示。对于一个种群这里使用pop_size×5的二维数组进行表示。其中pop_size 为种群大小。

2.1.2初始种群的产生

初始种群的各个粒子均采用均匀随机产生的方式,即粒子每一位都是-30到30上的随机数。同样粒子的速度也是-40到40上的随机数。这里设置速度在-40到40内是因为限定速度的最大值为40。

2.1.3评价函数的构造

这里直接采用解的函数值作为评价函数,评价函数值越小认为该解越好。评价函数如下:

∑-=+-+-=112221))1()(100()(min n i i i i x x x x f

(2)

其中,5,...2,1],30,30[=-∈i x i 。

2.2 POS 速度迭代公式

为了改善算法的收敛性,这里采样带惯性权重的迭代公式,速度迭代公式如下:

)()(21id gd id id id id x p c x p c wv v -+-+=ηξ (3)

其中:

id v :粒子的速度。 w :粒子的权重,为0到1的数值。表示对之前速度的一个惯性。值越小,前一时刻的速度对当前时刻速度的影响也越小。

1c :对个体所搜索过的最优值的学习因子。值越大,向个体最优值的移动速度也越大。

2c :对全局搜索过的最优值的学习因子。值越大,向全局最优值移动的速度也越大。

ηξ,:0到1的随机数。表示粒子学习状态的随机,有可能向全局最优值学习,有可能向个体最优值学习。也有可能几乎不学习。

id p :粒子搜索过的个体最优解。

gd p :种群搜索过的全局最优解。

可以看出,这里将整个种群视为“连通的”。即整个种群共用一个全局最优值。另外,为了保证算法的收敛性,这里对速度的最大值进行了限定。这里设定的速度最大值的绝对值为40,即粒子的每一个分量在一次迭代过程中最多跨越搜索长度的2/3。

2.3粒子的更新

粒子的更新采用如下公式:

id id id v x x += (4)

其中:

id x :粒子的位置。

这里同样对粒子的位置进行限定,即让粒子的每一个分量均在-30到30之间。

2.4惯性权重的调整

惯性权重带代表着对之前速度继承情况。一般来说,惯性权重越大全局的探索能力越强,惯性权重越小局部的开发能力越强。根据这个规律,这里采样变惯性权重的搜索方式。在搜索的开始阶段,使用较大的惯性权重,随着迭代次数的进行,逐渐减少惯性权重。使其进行更多的局部开发,寻找最优解。惯性权重调整公式如下:

i iter w w w w i ⨯--=max _min max max (5)

其中:

i w :第i 次迭代的惯性权重。 m ax w :最大惯性权重。

min w :最小惯性权重。

iter_max :最大迭代次数。

i :当前迭代次数。

2.5停止准则

停止准则采样固定的迭代次数。

第三章 算法实现及分析

3.1编译环境及界面介绍

本次试验算法采用matlab 进行实现。matlab 版本为R2013b.首先我们编写了一个m 脚本文件进行调试(pso_pro.m).在程序调试成功以后,为了方便讨论各个参数对算法的影响及对算法进行分析。我们又编写了一个GUI 界面(PSO_pro.fig

或PSO_pro.m)。界面如下:

图3.1 PSO算法GUI界面

3.2 matlab中GUI界面打开的3种方式

方法一:

将文件放到matlab当前工作目录或者添加文件目录到matlab搜索目录中。然后在命令空间输入PSO_pro.

方法二:

打开PSO_pro.m文件,然后点击上方run字样的绿色箭头。

方法三:

在命令空间输入guide,选择open existing GUI->browse->PSO_pro.fig.然后点击上方的run字样的绿色箭头。

以上方法均可以打开GUI界面,但是不能直接点击PSO_pro.fig文件进行打开。这是因为这样打开GUI文件时,不会调用opening函数。即不会初始化及更新结构体。运行文件会导致错误。

相关文档
最新文档