• 大小: 98KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-04-13
  • 语言: Matlab
  • 标签: MATLAB  VRPTW  PSO  

资源简介

Particle Swarm Optimization(PSO) Algorithm Matlab Codes for Vehicle Routing Problem With Time Window(VRPTW)

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “.\parswarm.h“

#include 
#include 
#include 
#include “particle.h“

/*CParSwarm::CParSwarm(void)
{
}

CParSwarm::~CParSwarm(void)
{
}*/

CParSwarm::CParSwarm()
{
Particle = 0;
PNum = 0;
GBestIndex = 0;
PosUp = 0;
PosDown = 0;
W = 1;
C1 = 2;
C2 = 2;
Com = 0;
}
CParSwarm::CParSwarm(int dim int num)
{
Particle = new CParticle[num];
for(int i=0; i Particle[i].SetDim(dim);

PNum = num;
GBestIndex = 0;
PosUp = new double[dim];
PosDown = new double[dim];
Vmax = new double[dim];
W = 1;
C1 = 2;
C2 = 2;
Com = 0;
}

//析构函数 Distructor 
CParSwarm::~CParSwarm()
{
if(Particle) delete []Particle;
if(PosUp) delete []PosUp;
if(PosDown) delete []PosDown;
if(Vmax) delete []Vmax;
}
//设置坐标上界  Set coordinates of the upper bound
void CParSwarm::SetPosUp(double *up)
{
if(!Particle) 
return;
for(int i=0; i PosUp[i] = up[i];
}
//设置坐标下界
void CParSwarm::SetPosDown(double *d)
{
if(!Particle) 
return;
for(int i=0; i PosDown[i] = d[i];
}
//设置最大速度 Coordinates of the lower bound set
void CParSwarm::SetVmax(double *max)
{
if(!Particle) 
return;
for(int i=0; i Vmax[i] = max[i];
}
void CParSwarm::SetVmax(double p)
{
if(!Particle) 
return;
for(int i=0; i Vmax[i] = (PosUp[i]-PosDown[i])*p;
}

//初始化群体 Initialize groups
void CParSwarm::Initialize()
{
if(!Particle) 
return;
static int kk=(unsigned)time(NULL);
srand( (unsigned)time(NULL)+kk++ );
GBestIndex = 0;
for(int i=0; i {
for(int j=0; j {
Particle[i].Pos[j] = rand()/(double)RAND_MAX*(PosUp[j]-PosDown[j])+PosDown[j]; //初始化坐标 Initialize the coordinates
Particle[i].PosBest[j] = Particle[i].Pos[j];
Particle[i].Vel[j] = rand()/(double)RAND_MAX*Vmax[j]-Vmax[j]/2; //初始化速度 Initialization speed
}
Particle[i].Fitness = GetFit(Particle[i]); //计算该微粒适合度 Calculate the particle fitness
Particle[i].FitBest = Particle[i].Fitness; //设最优适合度初值 Let the best initial fit
if(Particle[i].Fitness>Particle[GBestIndex].Fitness) 
GBestIndex = i; //查找群体最优微粒 Find the best groups of particles
}
}

//计算群体各个微粒适合度 Group of fit of each particle calculated
void CParSwarm::CalFit()
{
if(!Particle) 
return;
for(int i=0; i Particle[i].Fitness = GetFit(Particle[i]);
}

//微粒飞翔产生新一代微粒 Flying particles resulting in a new generation of particle
void CParSwarm::ParticleFly()
{
static double FitBak[100];
if(!Particle)
return;

static int tt=(unsigned)time(NULL);
srand( (unsigned)time(NULL)+tt++ );
//整个群体飞向新的位置 The entire group flying to the new location
for(int i=0; i {
for(int j=0; j Particle[i].Vel[j] = W*Particle[i].Vel[j]+ // (FitBak[i]-Particle[i].Fit)+//修改速度 Modify the 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件          1  2006-11-20 00:00  PSO\PSO\ClassDiagram1.cd

     文件          1  2006-11-20 00:00  PSO\PSO\ClassDiagram11.cd

    .......         1  2006-11-20 00:11  PSO\PSO\ClassDiagram21.cd

     文件       6612  2012-03-19 16:22  PSO\PSO\Debug\BuildLog.htm

     文件         66  2012-03-19 16:22  PSO\PSO\Debug\mt.dep

     文件      23146  2012-03-19 15:58  PSO\PSO\Debug\ParSwarm.obj

     文件       5635  2012-03-19 15:58  PSO\PSO\Debug\Particle.obj

     文件     611328  2012-03-19 16:22  PSO\PSO\Debug\PSO.exe

     文件        406  2011-10-29 00:00  PSO\PSO\Debug\PSO.exe.embed.manifest

     文件        472  2011-10-29 00:00  PSO\PSO\Debug\PSO.exe.embed.manifest.res

     文件        381  2012-03-19 16:22  PSO\PSO\Debug\PSO.exe.intermediate.manifest

     文件    1445836  2012-03-19 16:22  PSO\PSO\Debug\PSO.ilk

     文件     239829  2012-03-19 16:21  PSO\PSO\Debug\PSO.obj

     文件   10158080  2011-10-29 00:00  PSO\PSO\Debug\PSO.pch

     文件    3222528  2012-03-19 16:22  PSO\PSO\Debug\PSO.pdb

     文件      45509  2011-10-29 00:00  PSO\PSO\Debug\stdafx.obj

     文件     273408  2012-03-19 16:21  PSO\PSO\Debug\vc90.idb

     文件     282624  2012-03-19 16:21  PSO\PSO\Debug\vc90.pdb

     文件       6585  2011-12-17 00:00  PSO\PSO\ParSwarm.cpp

     文件       3173  2011-12-17 00:00  PSO\PSO\ParSwarm.h

     文件        634  2011-12-17 00:00  PSO\PSO\Particle.cpp

     文件        826  2011-12-23 00:00  PSO\PSO\Particle.h

     文件       1806  2012-03-19 16:21  PSO\PSO\PSO.cpp

     文件       4923  2011-10-29 00:00  PSO\PSO\PSO.vcproj

     文件       4037  2008-07-25 00:00  PSO\PSO\PSO.vcproj.7.10.old

     文件       1423  2011-12-23 00:00  PSO\PSO\PSO.vcproj.MRAUF-DESKTOP.MRauf.user

     文件       1413  2012-03-19 21:38  PSO\PSO\PSO.vcproj.MRauf-PC.MRauf.user

     文件       1413  2011-11-17 00:00  PSO\PSO\PSO.vcproj.RAUF-PAK.Rauf.user

     文件       1413  2012-06-14 17:38  PSO\PSO\PSO.vcproj.Saqib-PC.Saqib.user

     文件        967  2008-07-25 00:00  PSO\PSO\ReadMe.txt

............此处省略19个文件信息

评论

共有 条评论