📄 pso.h
字号:
// PSO.h: interface for the CPSO class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PSO_H__B113CA9D_2CB0_4E2D_BE79_A24C3E941ADA__INCLUDED_)
#define AFX_PSO_H__B113CA9D_2CB0_4E2D_BE79_A24C3E941ADA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "PARTICLE.h"
class CPSO
{
public:
PARTICLE *Particle; //微粒群数组
int PNum; //微粒个数
int GBestIndex; //最好微粒索引
double W; //惯性权重
double C1; //加速度系数1
double C2; //加速度系数2
double *Xup; //微粒坐标上界数组
double *Xdown; //微粒坐标下界数组
double *Vmax; //微粒最大速度数组
bool (*Com)(double, //最优微粒适合度
double*, //最优微粒坐标数组
double**, //所有微粒坐标指针数组
int); //当前最优微粒索引
CPSO();
CPSO(int dim, //微粒维数
int num); //微粒个数
virtual ~CPSO();
void Initialize(); //初始化群体
void CalFit(); //计算全体适合度
virtual void ParticleFly(); //微粒飞翔,产生新一代微粒
void SetXup(double*); //设置微粒坐标上界
void SetXdown(double*); //设置微粒坐标下界
void SetVmax(double*); //设置微粒最大速度,以数组为参数
void SetVmax(double); //设置微粒最大速度,以上下界百分比为参数
void SetW(double w){W=w;}; //设置权重
void SetC1(double c){C1=c;};//设置C1
void SetC2(double c){C2=c;};//设置C2
void SetCom(void *p){Com=(bool(*)(double,double*,double**,int))p;};//设置通讯函数
//计算特定微粒坐标所对应适合度,必须由派生的实际PSO类定义,以便计算适合度
virtual double GetFit(PARTICLE&)=0;
//运行类进行优化
PARTICLE& Run(int max); //按最多次数限制运行PSO
PARTICLE& Run(double fit); //按最佳适合度目标运行PSO
double GetBest(double*); //获得最优微粒适合度和坐标
};
#endif // !defined(AFX_PSO_H__B113CA9D_2CB0_4E2D_BE79_A24C3E941ADA__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -