#include"stdafx.h"
#include<math.h>
#include<time.h>
#include<iostream>
#include<fstream>
usingnamespacestd;
intc1=2;//加速因子
intc2=2;//加速因子
doublew=1;//惯性权重
doubleWmax=1;//最大惯性权重
doubleWmin=0.6;//最小惯性权重
intKmax=110;//迭代次数
intGdsCnt;//物资总数
intconstDim=10;//粒子维数
intconstPNum=50;//粒子个数
intGBIndex=0;//最优粒子索引
doublea=0.6;//适应度调整因子
doubleb=0.5;//适应度调整因子
intXup[Dim];//粒子位置上界数组
intXdown[Dim]=;//粒子位置下界数组
intValue[Dim];//初始急需度数组
intVmax[Dim];//最大速度数组
classPARTICLE;//申明粒子节点
voidCheck(PARTICLE&,int);//约束函数
voidInput(ifstream&);//输入变量
voidInitial();//初始化相关变量
doubleGetFit(PARTICLE&);//计算适应度
voidCalculateFit();//计算适应度
voidBirdsFly();//粒子飞翔
voidRun(ofstream&,int=2000);//运行函数
classPARTICLE//微粒类
{
public:
intX[Dim];//微粒的坐标数组
intXBest[Dim];//微粒的最好位置数组
intV[Dim];//粒子速度数组
doubleFit;//微粒适合度
doubleFitBest;//微粒最好位置适合度
};PARTICLEParr[PNum];//粒子数组
intmain()//主函数
{
ofstreamoutf("out.txt");
ifstreaminf("data.txt");//关联输入文件
inf>>GdsCnt;//输入物资总数
Input(inf);
Initial();
Run(outf,100);
system("pause");
return0;
}
voidCheck(PARTICLE&p,intcount)//参数:p粒子对象,count物资数量
{
srand((unsigned)time(NULL));
intsum=0;
for(inti=0;i<Dim;i++)
{
if(p.X>Xup)
p.X=Xup;
elseif(p.X<Xdown)
p.X=Xdown;