c语言实现的粒子群算法代码及解释

上传人:cn****1 文档编号:503871680 上传时间:2022-09-04 格式:DOC 页数:4 大小:55KB
返回 下载 相关 举报
c语言实现的粒子群算法代码及解释_第1页
第1页 / 共4页
c语言实现的粒子群算法代码及解释_第2页
第2页 / 共4页
c语言实现的粒子群算法代码及解释_第3页
第3页 / 共4页
c语言实现的粒子群算法代码及解释_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《c语言实现的粒子群算法代码及解释》由会员分享,可在线阅读,更多相关《c语言实现的粒子群算法代码及解释(4页珍藏版)》请在金锄头文库上搜索。

1、粒子群PSO算法#include#include#include#include/*/粒子数目搜索域范围速度范围个体集合每个个体局部最优向量个体的局部最优适应度,有局部最优向量计算而来全局最优向量全局最优适应度,有全局最优向量计算而来记录每个个体的当前代速度向量记录每个粒子的当前代适应度#definePI3.141592653589#defineP_num200#definedim50#definelow-100#definehigh100#defineiter_num1000#defineV_max20#definecl2#definec22#definew0.5#definealp1dou

2、bleparticleP_numdim;doubleparticleJoc_bestP_numdim;doubleparticleJoc_fitP_num;doubleparticle_glo_bestdim;doublegfit;doubleparticle_vP_numdim;doubleparticle_fitP_num;doubleSphere(doublea)inti;doublesum=0.0;for(i=0;idim;i+)sum+=ai*ai;returnsum;doubleRosenbrock(doublea)inti;doublesum=0.0;for(i=0;idim-l

3、;i+)sum+=100*(ai+l-ai*ai)*(ai+l-ai*ai)+(ai-l)*(ai-l);returnsum;doubleRastrigin(doublea)inti;doublesum=0.0;for(i=0;idim;i+)sum+=ai*ai-10.0*cos(2*PI*ai)+10.0;returnsum;doublefitness(doublea)适应度函数returnRastrigin(a);voidinitial()inti,j;for(i=0;iP_num;i+)随即生成粒子for(j=0;jdim;j+)particleij=low+(high-low)*1.

4、0*rand()/RAND_MAX;初始化群体particle_loc_bestij=particleij;将当前最优结果写入局部最优集合particle_vij=-V_max+2*V_max*1.0*rand()/RAND_MAX;速度for(i=0;iP_num;i+)计算每个粒子的适应度particle_fiti=fitness(particlei);particle_loc_fiti=particle_fiti;gfit=particle_loc_fit0;找出全局最优j=0;for(i=l;iP_num;i+)if(particle_loc_fitigfit)gfit=particl

5、e_loc_fiti;j=i;for(i=0;idim;i+)更新全局最优向量particle_glo_besti=particle_loc_bestji;voidrenew_particle()inti,j;for(i=0;iP_num;i+)更新个体位置生成位置for(j=0;jhigh)particleij=high;if(particleijlow)particleij=low;voidrenew_var()int,j;for(i=0;iP_num;i+)计算每个粒子的适应度particle_fiti=fitness(particlei);if(particle_fitiparticl

6、e_loc_fiti)/更新个体局部最优值particle_loc_fiti=particle_fiti;for(j=0;jdim;j+)更新局部最优向量particle_loc_bestij=particleij;for(i=Ozj=-l;iP_num;i+)更新全局变量if(particle_loc_fitigfit)gfit=particle_loc_fiti;j=i;if(j!=-Dfor(i=0;idim;i+)更新全局最优向量particle_glo_besti=particle_loc_bestji;for(i=0;iP_num;i+)更新个体速度for(j=0;jV_max)particle_vij=V_max;if(particle_vij-V_max)particle_vij=-V_max;intmain()freopen(result.txt,a+,stdout);inti=0;srand(unsigned)time(NULL);initial();while(iiter_num)renew_particle();renew_var();i+;printf(“粒子个数:%dn“,P_num);printf(维度为:%dn“,dim);printf(最优值为%.10lfn,gfit);return0;

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号