当前位置:网站首页>Standard particle swarm optimization C language program
Standard particle swarm optimization C language program
2022-06-28 04:49:00 【Lzg_ n】
// The library files
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"math.h"
// Random number definition
#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))
// Macro definition
#define POPSIZE 20
#define DIMENSION 2
// Global variable definition
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);
// Program initialization definition
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);
}
// Particle history optimal position modification program
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;
}
// Population history optimal location modification program
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;
}
}
}
// Fitness function calculation program
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;
}
// The main program
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);
}
边栏推荐
- 成长一夏 挑战赛来袭 | 学习、创作两大赛道,开启导师报名啦!
- Web3来临时的风口浪尖
- On the necessity of building a video surveillance convergence platform and its scenario application
- Why are cloud vendors targeting this KPI?
- Huawei's 9-year experience as a software testing director
- The coming wave of Web3
- 在线直播源码,JS动态效果之,侧边栏滚动固定效果
- How to traverse collections Ordereddict, taking it and forgetting items
- Notepad++ -- common plug-ins
- ?位置怎么写才能输出true
猜你喜欢

What to do when MySQL changes the password and reports an error

Audio and video technology development weekly

With favorable policies, more than 20 provinces and cities have launched the yuanuniverse development plan

UI自動化測試框架搭建 —— 編寫一個APP自動化

Google Earth engine (GEE) - global flood database V1 (2000-2018)

Flexible IP network test tool -- x-launch

华为9年经验的软件测试总监工作感悟—写给还在迷茫的朋友

mysql导入文本文件时的pager

Meta universe standard forum established

Multi thread implementation rewrites run (), how to inject and use mapper file to operate database
随机推荐
Lazy loading and preloading of pictures
云厂商为什么都在冲这个KPI?
With favorable policies, more than 20 provinces and cities have launched the yuanuniverse development plan
Google Earth Engine(GEE)——全球洪水数据库 v1 (2000-2018年)
Is it true that qiniu business school gives away securities accounts? Is it safe to open an account
The growth summer challenge is coming | learn and create two major tracks, and start the tutor registration!
UI automation test framework construction - write an app automation
Audio and video technology development weekly
Tiktok actual battle ~ take off the blogger
Tiktok practice ~ pay attention to bloggers
[csp-j2020] excellent splitting
代码理解:IMPROVING CONVOLUTIONAL MODELS FOR HANDWRITTEN TEXT RECOGNITION
JS reverse massive star map sign signature
flinkcdc采集oracle,oracle数据库是CDB的
在线直播源码,JS动态效果之,侧边栏滚动固定效果
Performance optimization and implementation of video codec
The second round of free public classes of the red team is coming ~ 8:00 tomorrow night!
论文详读:IMPROVING CONVOLUTIONAL MODELS FOR HANDWRITTEN TEXT RECOGNITION
Database garbled
Necessary skills for test and development: actual combat of security test vulnerability shooting range