网站大量收购独家精品文档,联系QQ:2885784924

粒子群算法(C语言版本).docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
粒子群算法(C语言版本)

粒子群算法// PSO.cpp : Defines the entry point for the console application.//#include stdafx.h#includestdio.h#includestdlib.h#includetime.h#includemath.h#define rdint(i) (rand()%(int)(i))/*随机数的定义*/#define rdft() (double)((double)rdint(16384)/(16383.0))#define rnd(a,b) (rdint((int)(b)-(int)(a)+1)+(int)(a))#define POPSIZE 20#define DIMENSION1 2?? /*? 目标函数中所含变量x的个数? */#define DIMENSION2 6?? //约束条件的个数double W=1.0;double C1=1.8;double C2=1.8;double VMAX=3.0;double XMIN=2.0;double XMAX=4.0;double P[DIMENSION1];double PBEST;double H,K;double g[DIMENSION2];//约束条件的值struct indi{?double number[DIMENSION1];?double best[DIMENSION1];?double bestfitness;?double fitness;?double speed[DIMENSION1];}individual[POPSIZE];void initiate(void);void calculation(int number);void globalbest(int number);void localbest(int number);void judge(int num);void judge(int num){?/*???? 6个约束条件???? */?g[0]=4*individual[num].number[0]-individual[num].number[1];??g[1]=individual[num].number[1]-10*individual[num].number[0];?g[2]=-2*K*individual[num].number[1]+3*3.14*pow(individual[num].number[0],3);?g[3]=-50*K*individual[num].number[1]+75*3.14*pow(individual[num].number[0],3);????g[4]=-H+3.98*individual[num].number[1];?g[5]=3*pow(individual[num].number[1],3)-2000*pow(individual[num].number[0],4);}void initiate(){?int i,j;?for(i=0;iPOPSIZE;i++)?{??? do??? {???? for(j=0;jDIMENSION1;j++)????individual[i].number[j]=rdft()*(XMAX-XMIN)+XMIN;???judge(i);??}while(g[0]=0 g[1]=0 g[2]=0 g[3]=0 g[4]=0 g[5]=0);???}//如果不在可行域就对这个粒子重新进行初始化??for(i=0;iPOPSIZE;i++)??for(j=0;jDIMENSION1;j++)???individual[i].speed[j]=VMAX*rdft();?for(i=0;iPOPSIZE;i++)??for(j=0;jDIMENSION1;j++)???individual[i].best[j]=individual[i].number[j];?for(i=0;iPOPSIZE;i++)??calculation(i);?for(i=0;iPOPSIZE;i++)??individual[i].bestfitness=individual[i].fitness;?globalbest(0);}void localbest(int number){?int i;?judge(number);//进行判断,如果不在可行域内就不对粒子的历史最优值进行更新?bool bTrue=g[0]=0 g[1]=0 g[2]=0 g[3]=0 g[4]=0 g[5]=0;?if(individual[number].bestfitnessindividual

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档