资源简介
万有引力算法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
相关资源
- CCS FFT c语言算法
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- DES加密算法C语言实现
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- Em算法(使用C++编写)
- STM32烧写算法flash包
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
评论
共有 条评论