//库文件
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"math.h" //随机数定义 #define rdint(i) (rand()%(int)(i))
#define rdft()
(float)((double)rdint(16384)/(16383.0))
#define rnd(a,b)
(rdint((int)(b)-(int)(a)+1)+(int)(a)) //宏定义
#define POPSIZE 20
#define DIMENSION 2 //全局变量定义
float W=1.0; float C1=1.8; float C2=1.8;
float VMAX=2;
float XMIN=-2.0;
float XMAX=2.0;
float P[DIMENSION];
float PBEST; struct indi
{ float number[DIMENSION]; float best[DIMENSION]; float bestfitness; float fitness; float speed[DIMENSION];
}individual[POPSIZE]; void initiate(void);
void calculation(int number);
void globalbest(int number);
void localbest(int number); //程序初始化定义
void initiate()
{
int i,j;
for(i=0;i<POPSIZE;i++)    for(j=0;j<DIMENSION;j++) individual[i].number[j]=rdft()*(XMAX-XMIN)+XMIN; for(i=0;i<POPSIZE;i++) for(j=0;j<DIMENSION;j++) individual[i].speed[j]=VMAX*rdft(); for(i=0;i<POPSIZE;i++) for(j=0;j<DIMENSION;j++) individual[i].best[j]=individual[i].number[j];
for(i=0;i<POPSIZE;i++) calculation(i);
for(i=0;i<POPSIZE;i++) individual[i].bestfitness=individual[i].fitness;
globalbest(0);
} //微粒历史最优位置修改程序
void localbest(int number)
{ int i;
if(individual[number].bestfitness>individual[number].fitness)for(i=0;i<DIMENSION;i++)individual[number].best[i]=individual[number].number[i];
individual[number].bestfitness=individual[number].fitness;
} //种群历史最优位置修改程序
void globalbest(int number)
{ int i,j; float s=0; int flag=0;
if(number==0)
{
s=individual[0].fitness;
flag=0;
for(i=1;i<POPSIZE;i++)
if(individual[i].fitness<s) { s=individual[i].fitness;  flag=i; }
for(i=0;i<DIMENSION;i++)P[i]=individual[flag].number[i];
PBEST=individual[flag].fitness; } else{
for(i=0;i<POPSIZE;i++)
if(individual[i].bestfitness<PBEST) {
for(j=0;j<DIMENSION;j++) P[j]=individual[i].best[j];
PBEST=individual[i].bestfitness; } }
} //适应值函数计算程序 void calculation(int num)
{ int i; float s=0.0,h=0.0;  s=pow(individual[num].number[0]+individual[num].number[1]+1.0,2.0)*(19.0-14.0*individual[num].number[0]+3.0*pow(individual[num].number[0],2.0)-14.0*individual[num].number[1]+6.0*individual[num].number[0]*individual[num].number[1]+3.0*pow(individual[num].number[1],2.0))+1.0;h=30.0+pow(2.0*individual[num].number[0]-3.0*individual[num].number[1],2.0)*(18.0-32.0*individual[num].number[0]+12.0*pow(individual[num].number[0],2.0)+48.0*individual[num].number[1]-36.0*individual[num].number[0]*individual[num].number[1]+27.0*pow(individual[num].number[1],2.0)
); individual[num].fitness=s*h;
} //主程序
main()
{ int i,j,k,t,total=0; float sum=0; for(j=0;j<50;j++) {  initiate(); for(i=0;i<500;i++) { W=1.0-i*0.6/499;
if((PBEST-3.0)<0.0001) {
total++;
sum=sum+i;
break; }
else {for(k=0;k<POPSIZE;k++) {for(t=0;t<DIMENSION;t++)
{     dividual[k].speed[t]=W*individual[k].speed[t]+C1*rdft()*(individual[k].best[t]-individual[k].number[t])+C2*rdft()*(P[t]-individual[k].number[t]);if(individual[k].speed[t]>VMAX)
individual[k].speed[t]=VMAX;
individual[k].number[t]=individual[k].number[t]+individual[k].speed[t];if(individual[k].number[t]<XMIN)
individual[k].number[t]=2*XMIN-individual[k].number[t];
if(individual[k].number[t]>XMAX)
individual[k].number[t]=2*XMAX-individual[k].number[t];
}
calculation(k);
localbest(k); }
globalbest(1); } }
printf("%d,%f\t",i,PBEST); }
printf("Total number is%d\n",total);
printf("Sum is %f\n",sum);
printf("Average is %f\n",sum/total);
}

标准粒子群C语言程序相关推荐

  1. matlab粒子群加约束条件_多目标粒子群(PSO)与MATLAB程序视频教程及动态优化问题约束条件...

    [内容简介]<粒子群算法与应用和MATLAB程序详解视频>共15章186节视频,总学时1917分钟,合32小时.主要内容包括:粒子群算法(PSO)基本概念与算法流程,粒子群算法利用MATL ...

  2. 6.标准C语言程序的文件名的后缀是,c语言源程序文件名的后缀是什么

    c语言源程序文件名的后缀是".c".c语言源程序经过C编译程序编译生成后缀为".obj"的二进制文件(目标文件),然后由称为"连接程序"(L ...

  3. 长度厘米转换c语言程序,标准长度单位换算c程序设计.doc

    标准长度单位换算c程序设计 菏泽学院 Heze University 蒋震机电工程学院 课程设计报告 课程名称 微机原理与接口技术 题 目 标准单位转换器 姓 名 周宇涛 学号 2012174297 ...

  4. 基于粒子群PSO算法的风光发电与电动汽车充放电协同优化调度matlab程序_电动汽车v2g

    V2G模型 基于粒子群PSO算法的风光发电与电动汽车充放电协同优化调度matlab程序_电动汽车v2g 1.针对大规模电动汽车无序接入电网给电力系统带来的负荷压力问题,提出一种含不确定性电源的电动汽车 ...

  5. C语言学生信息管理系统设计方案,c语言程序设计方案报告图书标准管理系统

    <c语言程序设计方案报告图书标准管理系统>由会员分享,可在线阅读,更多相关<c语言程序设计方案报告图书标准管理系统(6页珍藏版)>请在人人文库网上搜索. 1.c 语言程序设计方 ...

  6. 标准c语言程序设计,C语言程序设计标准.doc

    C语言程序设计标准 徽商职业学院C语言程序设计课程标准 课程编码课程类别B适用专业软件.信管.自动化授课单位电子信息系学 分4学 时64编写执笔人王艳兵审定负责人编写日期2012.9.18审定日期一. ...

  7. 标准C 语言程序的源文件名的默认后缀,c语言源程序文件名的后缀是什么

    c语言源程序文件名的后缀是".c".c语言源程序经过C编译程序编译生成后缀为".obj"的二进制文件(目标文件),然后由称为"连接程序"(L ...

  8. 标准c语言程序设计答案,C语言程序设计标准答案.doc

    C语言程序设计标准答案.doc C语言程序设计综合作业布置日期2012-5-15 截止日期2012-5-25一.单选题 (每小题5分,共100分)1.有关宏定义的正确说明是.A.可出现在一行中的任何位 ...

  9. c语言程序设教材计 乌云高娃,C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt...

    C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt 主要内容 课程概述 为什么选择C语言作为入门课程? C语言 ...

最新文章

  1. 体检系统前端源码_给您的前端进行健康检查
  2. MySQL数据库have_openss_MySQL 关于OpenSSL证书支持检查方式
  3. css 填坑常用代码分享
  4. loj #6053 简单的函数 min_25筛
  5. ML之监督学习算法之分类算法一 ———— k-近邻算法(最邻近算法)
  6. /etc/hosts错误配置,导致TNS-12535
  7. Serverless 躁动背后的 5 大落地之痛
  8. 【AutoML】优化方法可以进行自动搜索学习吗?
  9. 全民app使用率排行榜统计全了,微信再次位居榜首!
  10. [BZOJ4027][HEOI2015]兔子与樱花(贪心)
  11. IE与Chrome对相对URL解析的区别
  12. 从readyState状态看AJAX
  13. java设置小数位数_java设置小数点后位数
  14. c语言经典面试题(附答案)
  15. 学计算机专业工作总结,计算机专业学生个人实习工作总结范文
  16. 经验分享 针式打印机经典案例分析
  17. cad计算机绘注意事项,CAD制图的注意事项
  18. 一个能启动电脑的U盘
  19. 区块链亲民应用场景大猜想 第一次或将献给超大文件传输
  20. NKOJ3685 8数

热门文章

  1. 安卓来电归属地_苹果手机 VS 安卓手机
  2. python 打卡记录代码_python实现自动打卡的示例代码
  3. CAD/CAM/CAE基础(三) 材料加工CAE技术基础
  4. 开年捞金蓝海项目,实操一天就赚了五百多
  5. VISCA CAM_Zoom PosInq ​0p 0q 0r 0s
  6. elance 兼职手册
  7. 联想G510笔记本电脑换屏——操作步骤详解
  8. AdaBoost元算法学习理解与应用实战
  9. Vue中MarvinJS(化学结构式)
  10. 简单介绍一下CAD做三维图的REVOLVE指令