⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pso.h

📁 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 + -