• 大小: 12KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: 算法  

资源简介

万有引力算法C++程序

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “global.h“
#include “CGSA.h“


int INDIVIDUAL::Dim = 0;

bool  INDIVIDUAL::operator > (const INDIVIDUAL &p) const
{
return Fitness > p.Fitness;
}

INDIVIDUAL::INDIVIDUAL(void)
{
X   = NULL;
V   = NULL;
Fitness = 0.0;
}

INDIVIDUAL::INDIVIDUAL(int N)
{
Dim   = N;

X = new double[Dim];
memset(X 0 sizeof(double)*(Dim));

V = new double[Dim];
memset(V 0 sizeof(double)*(Dim));

Fitness = 0.0;
}

INDIVIDUAL::INDIVIDUAL(const INDIVIDUAL& p)
{
X = NULL;
if (NULL != X && Dim != p.Dim)
{
delete []X;
X = NULL;
}

V = NULL;
if (NULL != V && Dim != p.Dim)
{
delete []V;
V = NULL;
}


if (NULL == X)
{
Dim = p.Dim;
X = new double[Dim];
}
memcpy(X p.X sizeof(double)*(Dim));

if (NULL == V)
{
Dim = p.Dim;
V = new double[Dim];
}
memcpy(V p.V sizeof(double)*(Dim));

Fitness = p.Fitness;
}

INDIVIDUAL::~INDIVIDUAL(void)
{
if (NULL != X)
{
delete []X;
X = NULL;
}

if (NULL != V)
{
delete []V;
V = NULL;
}
}

INDIVIDUAL &INDIVIDUAL::operator = (const INDIVIDUAL &p) 
{
if (this == &p)
{
return *this;
}

if (NULL != X && Dim != p.Dim)
{
delete []X;
X = NULL;
}

if (NULL == X)
{
Dim = p.Dim;
X = new double[Dim];
}
memcpy(X p.X sizeof(double)*(Dim));

if (NULL != V && Dim != p.Dim)
{
delete []V;
V = NULL;
}

if (NULL == V)
{
Dim = p.Dim;
V = new double[Dim];
}
memcpy(V p.V sizeof(double)*(Dim));

Fitness = p.Fitness;
return *this;
}

bool INDIVIDUAL::operator == (const INDIVIDUAL &p) const
{
if (p.Dim != Dim)
{
return false;
}

if (Fitness != p.Fitness)
{
return false;
}

return true;

}



CGSA::CGSA(int MaxFES int PopSize int Dim int Findex)
{
srand(timeGetTime());

m_MaxFES  = MaxFES;          //   The Max generation  
m_PopSize = PopSize;      //   The Popsize
m_Dim   = Dim;             //   The dimension  
INDIVIDUAL::Dim = m_Dim;

m_BestFit.BestIndi = new INDIVIDUAL(m_Dim);  // Initialize  the Best Individual
m_BestFit.BestIndi->Fitness =  1.0e+300; 

SetProbleIndex(Findex);

m_Mass = new double[m_PopSize];
m_TemMass = new double[m_PopSize];
m_MIndex = new int[m_PopSize];

m_AC   = new double*[m_PopSize];
for (int i=0; i {
m_AC[i] = new double [Dim];
}

m_KBest = m_PopSize;
m_G0 = 100;

m_FEs = 0;                   //  The Number of evaluating
m_Gen = 0;
m_StratTime = timeGetTime();
}



/********************************************
*Initialize  which problem to optimize
*
*********************************************/
void CGSA::SetProbleIndex(int FIndex)
{
m_FID = FIndex;
m_XLower = g_Boundary[FIndex-1][0];  // set  the  low and up boundary
m_XUpper = g_Boundary[FIndex-1][1];

if (FIndex == 19)
{
m_XLower = -m_Dim*m_Dim;
m_XUpper =  m_Dim*m_Dim;
}
}


CGSA::~CGSA(void)
{
if (NULL != 

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

     文件       9844  2016-12-06 18:08  MyGSA\CGSA.cpp

     文件       2701  2016-12-06 18:03  MyGSA\CGSA.h

     文件       1196  2016-12-06 16:52  MyGSA\global.cpp

     文件        342  2016-12-06 16:51  MyGSA\global.h

     文件        324  2016-12-06 16:55  MyGSA\MyGSA.cpp

     文件        875  2014-11-12 20:47  MyGSA\MyGSA.sln

    ..A..H.     13824  2016-12-06 18:08  MyGSA\MyGSA.suo

     文件       4460  2016-12-06 16:48  MyGSA\MyGSA.vcproj

     文件       3181  2014-09-28 11:58  MyGSA\Random.cpp

     文件        749  2014-05-24 18:40  MyGSA\Random.h

     文件        208  2011-06-06 15:38  MyGSA\stdafx.cpp

     文件        233  2011-06-06 15:38  MyGSA\stdafx.h

     文件        498  2011-06-06 15:38  MyGSA\targetver.h

     目录          0  2016-12-06 18:08  MyGSA

----------- ---------  ---------- -----  ----

                38435                    14


评论

共有 条评论