![](https://csdnimg.cn/release/download_crawler_static/86613017/bg1.jpg)
pso 程序的源代码
建议:看代码之前,请先弄明白 pso 是怎么回事。然后请对应着来:程序中用
Agent 代表一只鸟,PSO 代表鸟群。阅读源代码,不要顺着看,先看 main(),然
后按照出现的东西的顺序,一个一个得来,呵呵,纯粹是建议。
// PSO.cpp : 定义控制台应用程序的入口点。
//粒子群优化算法基本程序
//你可以使用本代码,如果感到对你有用的话,请通知作者,作者会很高兴。
//通讯地址:fashionxu@163.com
//by FashionXu
//本程序在 vc++.net 2003 下面通过,你如果要在 vc6.0 下面使用,请查阅相
关资料修改,或者联系作者
#include "stdafx.h"
#include "iostream"
#define _USE_MATH_DEFINES
#include "math.h"
#include
const int iAgentDim=20;//优化函数的维数
const double iRangL=-30;//函数的取值范围
const double iRangR=30;
const int iPSONum=20;//粒子数
int iStep=10000;//跌代次数
//下面的值,要具体程序中具体的修改,根据你优化的函数来修改
double w=0.9;//惯性系数
const double delta1=1;//1.494;//加速度
const double delta2=1;//1.494;
#define rnd(low,uper)((rand()/(double)RAND_MAX)*((uper)-(low))+(low))
//这个东西,返回 low ,uper 之间的一个值
double gbest[iAgentDim];//global best fitness 保留全局最优值的坐标
using namespace std;
class Agent//这个类表示单个的粒子,也就是一只鸟 :)
{
public:
double dpos[iAgentDim]; //位置,也就是各个维数的值
double dpbest[iAgentDim]; //维护一个“自己”找到的最优
值的解