当前位置:网站首页>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);
}
边栏推荐
- 2022-06-27:给出一个长度为n的01串,现在请你找到两个区间, 使得这两个区间中,1的个数相等,0的个数也相等, 这两个区间可以相交,但是不可以完全重叠,即两个区间的左右端点不可以完全一样。
- Pager when importing text files from MySQL
- UI自動化測試框架搭建 —— 編寫一個APP自動化
- Multithreading and high concurrency II: detailed introduction to volatile and CAS
- MySQL gets the current date of the year
- Resolve cross domain
- 求一个能判断表中数据,只填充不覆盖的sql
- Project practice! Teach you JMeter performance test hand in hand
- 易周金融 | Q1手机银行活跃用户规模6.5亿;理财子公司布局新兴领域
- Live online source code, JS dynamic effect, sidebar scrolling fixed effect
猜你喜欢

The coming wave of Web3

Why are cloud vendors targeting this KPI?

Google Earth Engine(GEE)——全球洪水数据库 v1 (2000-2018年)

UI自動化測試框架搭建 —— 編寫一個APP自動化
![[matlab traffic light identification] traffic light identification [including GUI source code 1908]](/img/0e/3103c4c5dd664196c85db9b30bcaf5.png)
[matlab traffic light identification] traffic light identification [including GUI source code 1908]

Sword finger offer 53 - I. find the number I in the sorted array (improved bisection)

Congratulations to myself, official account has more than ten thousand fans

Ppt production tips

Multithreading and high concurrency IV: varhandle, strong weak virtual reference and ThreadLocal

With favorable policies, more than 20 provinces and cities have launched the yuanuniverse development plan
随机推荐
E-week finance Q1 mobile banking has 650million active users; Layout of financial subsidiaries in emerging fields
Go language -select statement
Oracledata installation problems
Matlab exercises -- basic data processing
Notepad++ -- column editing mode -- Usage / instance
论文详读:IMPROVING CONVOLUTIONAL MODELS FOR HANDWRITTEN TEXT RECOGNITION
Audio and video technology development weekly
inherit
Aspnetcoreratelimit rate limit interface access limit current limit control
CUPTI error: CUPTI could not be loaded or symbol could not be found.
Idle interrupt cannot be cleared
Meta universe standard forum established
Why is the frame rate calculated by opencv wrong?
Role of native keyword
Excel knowledge and skills summary
Lamaba expression learning and common functional interfaces
Multithreading and high concurrency V: detailed explanation of wait queue, executor and thread pool (key)
Necessary skills for test and development: actual combat of security test vulnerability shooting range
控制器的功能和工作原理
Multithreading and high concurrency IV: varhandle, strong weak virtual reference and ThreadLocal