粒子群算法程序.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#includeiostream #include fstream #includecmath #include ctime #include string #include iomanip #include cstdlib using namespace std; #include ran_number.h const double pi=3.1415926; const int num=60; //粒子群规模 const int T=2000;//最大迭代次数 //*******适应度函数********// double func(double x) { double f = x*sin(10*x*pi)+2.0; f=1.0/f; return f; } //---------------------主程序----------------------// void main (int argc, char* argv[]) { double ran; // 随机变量 RandomNumber rand; double c1=2.05, c2=2.05; //学习因子 double d1=0.2,d2=0.7; //控制因子 double ws=0.9, we=0.4; //最大最小惯性权重 double x_down=-1.0, x_up=2.0; // 粒子空间上下界 double w; //惯性权重 int m=2; //迭代次数 double Vmax; //粒子最大速度 double x[num]; //粒子位置(控制参数) double v[num]; //粒子速度 double g[num]; //粒子适应度 double pbest[num]; //粒子个体最好值 double pbest_x[num]; //粒子个体最好位置 double gbest ; //粒子群体最好值 double gbest_x; //粒子群体最好位置 Vmax = (x_up-x_down)/8; //------------ 初始化粒子群:位置、速度、个体最优值及群体最优值---------- // for( int i=0; i num; i++ ) { pbest[i]=0.0; ran = rand.fRandom(); x[i] = x_down + ( x_up - x_down ) * ran; //初始化粒子 v[i] = Vmax * ( 2*ran - 1 ); //初始化粒子速度 pbest[i] = func(x[i]); pbest_x[i] = x[i]; } gbest=pbest[0]; gbest_x=x[0]; //-----------------第一次迭代得到的群体最优----------------------// for ( i=0; inum; i++) // for 粒子数循环 { if ( pbest[i] gbest ) { gbest = pbest[i]; gbest_x =pbest_x[i]; } } //---------------- 共 T 次迭代过程 ---------------------// while( m = T ) //迭代次数循环 { w = (ws-we-d1) * exp(1/(1+d2*(m-1)/T)); //惯性权重 // cout m= m ; w= w endl; for ( i=0; inum; i++ ) // 粒子数循环 { g[i] = 0.0; ran = rand.fRandom(); v[i] = w * v[i] + c1 * ran * ( pbest_x[i] - x[i] ) + c2 * ran * ( gbest_x - x[i] ); x[i] += v[i]; if( x[i] x_down ) { x[i] = x_down;}// cout 到下界 endl; } if(x[

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档