粒子群算法求解函数优化问题.ppt

上传人:ga****84 文档编号:328684 上传时间:2018-09-22 格式:PPT 页数:13 大小:627.50KB
下载 相关 举报
粒子群算法求解函数优化问题.ppt_第1页
第1页 / 共13页
粒子群算法求解函数优化问题.ppt_第2页
第2页 / 共13页
粒子群算法求解函数优化问题.ppt_第3页
第3页 / 共13页
粒子群算法求解函数优化问题.ppt_第4页
第4页 / 共13页
粒子群算法求解函数优化问题.ppt_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、C+课外练习,李长河,全局优化问题求解,已知函数如下,求其在定义域内的最小值和对应x值,假设维数n=10;,粒子群优化算法(Particle Swarm Optimizaion, PSO),对社会行为的模拟对鱼群行为的研究:1975年,生物社会学家Wilson在论文中阐述了对鱼群的研究。他在论文中提出:“至少在理论上,鱼群的个体成员能够受益于群体中其他个体在寻找食物的过程中发现的和以前的经验,这种受益是明显的,它超过了个体之间的竞争所带来的利益消耗,不管任何时候食物资源不可预知的分散于四处.,PSO的基本思想,PSO在多维解空间的搜索可以理解为对人类多维心理空间的模仿,个体在搜索时考虑自己的历

2、史最好点,这是个体经验的积累,同时考虑到群体内其他个体的历史最好点,这是社会信息的共享作用和个体本身具有学习能力的表现。,算法描述及简要分析,一个由m个粒子(Particle)组成的群体(Swarm)在D维搜索空间中以一定的速度飞行,每个粒子在搜索时,考虑到了自己搜索到的历史最好点和群体内(或邻域内)其他粒子的历史最好点,在此基础上进行位置(状态,也就是解)的变化class Particle; class Swarmvector;注意:两个粒子p1和p2比较,如果p1的适应值比p2的适应值好,我们就说p1好于p2,即f(p1)f(p2) ,对于最小化优化问题,算法描述及简要分析,还要解决的问题

3、个体本身所找到的历史最好点如何进行考虑,也就是让这个点如何影响下一次迭代? 对群体内或者邻域内成员所找到的历史最好点如何进行考虑? 粒子的位置如何进行变化?,算法描述及简要分析,基本PSO的公式假设一个swarm有m个粒子,待求解问题维数D维,粒子i位置:,粒子i速度:,粒子i历史最好位置:,种群最好粒子:,速度和位置更新公式:,w称为惯性权重,其大小决定了对粒子当前速度继承的多少,合适的选择可以使粒子具有均衡的探索和开发能力。通常取值0.8c1和c2:学习因子,一般为正常数。学习因子使粒子具有自我总结和向群体中优秀个体学习的能力,从而向自己的历史最优点以及群体内或邻域内的历史最优点靠近。通常

4、等于2.0。粒子的速度被限制在一个最大速度Vmax的范围内。即粒子速度大于Vmax是,取值Vmax。Vmax取值定义域大小,比如-100=x=100, Vmax=200;,步1:在初始化范围内,对粒子群进行随机初始化,包括随机位置和速度。步2:计算每个粒子的适应值。步3:对于每个粒子,将其适应值与所经历过的最好位置的适应值进行比较,如果更好,则将其作为粒子的个体历史最优值,用当前位置更新个体历史最好位置步4:对每个粒子,将其历史最优适应值与群体内的最好位置的适应值进行比较,若更好,则将其作为当前的全局最好位置。步5:根据式上述公式对粒子的速度和位置进行更新。步6:若未达到终止条件,则转步2。,

5、全局优化问题求解,已知函数如下,求其在定义域内的最小值和对应x值,假设维数n=10;,算法设计,编码:因为问题的维数为10,所以每个粒子为10维的实数向量。初始化范围:根据问题要求,设定为-500,500。根据前面的参数分析,我们知道,可以将最大速度设定为Vmax=1000。种群大小:为了说明方便,这里采用一个较小的种群规模,m=15, 30。停止准则:设定为最大迭代次数1000次。,提示,随机数生成#include /* srand, rand */#include /* time */#include using namespace std;int main () /以系统时间为种子, 初

6、始化随机数发生器,在程序中调用一次 srand (time(NULL); /产生一个0-100内次随机整数 coutrand()%100endl; /产生一个0-1之间的随机小数 cout(rand()%10000)/10000.endl; return 0;rand():返回一个0到RAND_MAX之间的随机数time(NULL):获取系统时间,要求:,利用面向对象程序设计思想来解决,主函数如下int main(int argc, char *argv)/argv1: 种群大小, argv2: 问题的维数 srand (time(NULL); int size=atoi(argv1), dim=atoi(argv2);Swarm s(size,dim); s.initialize(); /参数设置w,c1,c2,Vmax,初始化种群:位置和速度 for(int iter=0;iter1000;iter+)coutiter s.getBestFit()endl;/输出最好粒子适应值s.evolve();/演化一代 coutthe best solution found:endl; couts.getBestParticle()endl; /输出最好解位置和适应值,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。