《Matlab粒子群算法工具箱使用方法及实例演示》由会员分享,可在线阅读,更多相关《Matlab粒子群算法工具箱使用方法及实例演示(22页珍藏版)》请在金锄头文库上搜索。
1、粒子群算法工具箱粒子群算法工具箱应应用用简简介介1。引言。引言粒子群算法(粒子群算法(PSO算法)算法)定义:粒子群算法,又称粒子群优化算法(Partical Swarm Optimization),缩写为 PSO, 是近年来发展起来的一种新的进化算法(Evolutionary Algorithm - EA),由Eberhart 博士和kennedy 博士于1995年提出,其源于对鸟群捕食的行为研究。2。算法思想。算法思想PSO模拟鸟群的捕食行为。模拟鸟群的捕食行为。 设想这样一个场景:一群鸟在随机搜索食物,在这个区域设想这样一个场景:一群鸟在随机搜索食物,在这个区域里只有一块食物,所有的鸟都
2、不知道食物在那里,但是它里只有一块食物,所有的鸟都不知道食物在那里,但是它们知道当前的位置离食物还有多远,那么找到食物的最优们知道当前的位置离食物还有多远,那么找到食物的最优策略是什么呢?策略是什么呢? 最最简单有效的就是搜有效的就是搜寻目前离食物最近的目前离食物最近的鸟的周的周围区域。都区域。都向向这片区域靠片区域靠拢。 3。抽象。抽象 PSO中,将中,将问题的搜索空的搜索空间类比于比于鸟类的的飞行空行空间,将,将每只每只鸟抽象抽象为一个无一个无质量无体量无体积的微粒,用以表征的微粒,用以表征优化化问题的一个候的一个候选解,我解,我们称之称之为“粒子粒子”,优化所需要化所需要寻找的找的最最优
3、解解则等同于要等同于要寻找的食物。找的食物。所有的粒子都有一个由被所有的粒子都有一个由被优化的函数决定的化的函数决定的适适应值(fitness value),每个粒子,每个粒子还有一个有一个速度速度决定他决定他们飞翔的方向和距离,翔的方向和距离,然后粒子然后粒子们就追随当前的最就追随当前的最优粒子在解空粒子在解空间中搜索。中搜索。 3。抽象。抽象 PSO初初始始化化为一一群群随随机机粒粒子子(随随机机解解、一一群群鸟),然然后后通通过迭迭代代找找到到最最优解解。在在每每一一次次迭迭代代中中,粒粒子子(鸟)通通过跟跟踪踪两两个个“极极值”来来更更新新自自己己的的位位置置。一一个个就就是是粒粒子子
4、本本身身所所找找到到的的最最优解解,这个个解解叫叫做做个个体体极极值pBest,另另一一个个极极值是是整整个个种种群群目目前前找找到到的的最最优解解,这个个极极值是是全全局局极极值gBest。(gBest是是pBest中最好中最好值)3。算法介。算法介绍在找到在找到这两个最两个最优值时,粒子根据如下的公式来更新自己,粒子根据如下的公式来更新自己的速度和位置:的速度和位置: 其中其中 ,V 是粒子的速度,是粒子的速度,Present 是粒子的当前位置是粒子的当前位置 ,pBest 与与 gBest见前面定前面定义。rand ( )是是(0 ,1)之之间的随机数的随机数 ,c1和和c2被称作学被称
5、作学习因子。通常因子。通常 ,c1 = c2 = 2。w 是加是加权系系数(数(惯性性权重),取重),取值在在 0. 1到到0. 9之之间。粒子通。粒子通过不断学不断学习更新更新 ,最,最终飞至解空至解空间中最中最优解所在的位置解所在的位置 ,搜索,搜索过程程结束。最后束。最后输出的出的 gBest 就是全局最就是全局最优解。在更新解。在更新过程程中中 ,粒子每一粒子每一维的最大速率限被限制的最大速率限被限制为 Vmax ,如果某一如果某一维更新后的速度超更新后的速度超过设定的定的Vmax,那么,那么这一一维的速度就被的速度就被限定限定为Vmax。3。算法介。算法介绍 将粒子延伸到N维空间,粒
6、子i在N维空间里的位置表示为一个矢量,每个粒子的飞行速度也表示为一个矢量。p粒子数(粒子数(鸟的个数)的个数): 一般取一般取 140. 其其实对于大部分的于大部分的问题10个粒子已个粒子已经足足够可以取得好的可以取得好的结果果;p粒子的粒子的长度(度(维度)度): 这是由是由优化化问题决定决定, 就是就是问题解解的的长度(决策度(决策变量个数)量个数);p粒子的范粒子的范围: 由由优化化问题决定,每一决定,每一维可以可以设定不同的范定不同的范围;pVmax: 最大速度,决定粒子在一个循最大速度,决定粒子在一个循环中最大的移中最大的移动距离,距离, 通常通常设定定为粒子的范粒子的范围宽度度,例
7、如,粒子例如,粒子 (x1, x2, x3) ,x1 属属于于 -10, 10, 那么那么 Vmax 的大小就是的大小就是 20。p学学习因子因子: 使粒子具有自我使粒子具有自我总结和向群体中和向群体中优秀个体学秀个体学习的能力,从而向群体内或的能力,从而向群体内或邻域内最域内最优点靠近,点靠近,c1 和和 c2 通常通常等于等于2,并且范,并且范围在在 0 和和 4 之之间。p中止条件中止条件: 最大循最大循环数以及最小数以及最小错误要求。要求。p惯性性权重重w :决定了决定了对粒子当前速度粒子当前速度继承多少,合适的承多少,合适的选择可以使粒子具有均衡的探索能力和开可以使粒子具有均衡的探索
8、能力和开发能力,能力,惯性性权重的重的取法有常数法、取法有常数法、线性性递减法、自适减法、自适应法等。法等。3。算法介。算法介绍例:对于问题 f(x) = x12 + x22+x32 求解,粒子可以直接编码为 (x1, x2, x3),而适应度函数就是f(x),接着我们就可以利用前面的过程去寻优,寻优过程是一个迭代过程, 中止条件一般为设置为达到最大循环数或者最小错误要求。3。算法介。算法介绍PSO框架框架图粒子群粒子群优化算法化算法Matlab工具箱工具箱简介介 Matlab粒粒子子群群工工具具箱箱(PSOt)提提供供了了非非常常先先进的的粒粒子子群群优化化算算法法 ,可可指指定定惯性性因因
9、子子的的起起始始值和和中中止止值 ,可可约定定各各维变量量的的取取值范范围 、粒粒子子在在遇遇到到边界界时是是否否反反弹等等各各种种参参数数 。除除此此以以外外 ,粒粒子子群群工工具具箱箱既既可可以以在在用用户约定定的的范范围内内自自动随随机机生生成成指指定定群群体体规模模的的初初始始粒粒子子群群 ,也也可可人人工工输入入小小于于群群体体规模模的的任任意意数数目目的的初初始始粒粒子子 ,具具备非非常常强强的的灵灵活活性性 。粒子群粒子群优化算法化算法Matlab工具箱工具箱简介介粒子群粒子群优化算法化算法Matlab工具箱工具箱简介介PSOt具具有有非非常常强强的的灵灵活活性性,在在实际计算算
10、中中,用用户只只要要根根据据需需求求编写写好好目目标函函数数,并并设置置好好函函数数自自变量量的的取取值范范围和和每步迭代允每步迭代允许的的最大最大变化量化量,PSOt即可自即可自动进行行优化化计算。算。该工具箱的使用方法主要分工具箱的使用方法主要分为一下几个步一下几个步骤:(1)在在MATLAB的的命命令令窗窗口口中中点点击“File”,“Set Path”,设置工具箱的路径。置工具箱的路径。(2)编写待写待优化的函数(化的函数(test_func),保存,保存为同名同名m文件文件粒子群粒子群优化算法化算法Matlab工具箱工具箱简介介(3)调用粒子群算法的核心模用粒子群算法的核心模块:,其
11、:,其调用格式用格式为:pso_Trelea_vectorized(functname, D, mv, VarRange , minmax, PSOparams, plotfcn, PSOseedValue)pso_Trelea_vectorized(functname, D, mv, VarRange, minmax, PSOparams, plotfcn, PSOseedValue)lFunctname:目:目标函数名函数名lD:待:待优化化问题的的维数;数;lmv:粒子:粒子飞行的最大速度;行的最大速度;lVarRange:参数:参数变化范化范围矩矩阵;lMinmax:寻优类型,取型,取
12、0代表求目代表求目标函数最小函数最小值,取,取1代表求代表求目目 标函数最大函数最大值););lPSOparams:参数矩:参数矩阵,包括最大迭代次数、粒子群,包括最大迭代次数、粒子群规模、模、惯性因子、学性因子、学习因子、因子、终止迭代条件等;止迭代条件等;lPlotfcn:寻优过程中用于展示程中用于展示寻优过程的画程的画图函数;函数;lPSOseedValue:可允:可允许用用户输入任意多入任意多组初始粒子。初始粒子。求非求非线性函数极大性函数极大值工具箱工具箱应用用实例例工具箱工具箱应用用实例例(1)编写待写待优化函数程序化函数程序function z = test_func(in)nn
13、=size(in); %输入的是矩入的是矩阵 ,即算法中随机,即算法中随机产生一生一组x和和y ,按,按x(nn, 1), y(nn, 1)排列排列x=in(:,1);y=in(:,2);nx=nn(1);for i=1:nx temp=sin(sqrt(x(i)2+y(i)2)/sqrt(x(i)2+y(i)2)+exp(cos(2*pi*x(i)+cos(2*pi*y(i)/2)-2.71289;z(i,:)=temp;end工具箱工具箱应用用实例例(2)编写写调用函数用函数x_range=-2,2;y_range=-2,2;range=x_range; y_range;Max_V=0.2* (range(:,2) - range(:,1); %最大速度取范最大速度取范围的的 10 20%n=2; %粒子粒子维数数PSOparams=10 300 20 2 2 0.9 0.4 1500 1e-25 250 NaN 0 0 %个体数目个体数目 20 ,进化次数化次数 300 PSO_Trelea_vectorized(test_func, n, Max_V, range, 1, PSOparams)工具箱工具箱应用用实例例