• 大小: 77KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: C++  进化计算  

资源简介

对应论文RM-MEDA: A regularity model based multiobjective estimation of distribution algorithm,张青富老师的源代码,很规范,值得学习。

资源截图

代码片段和文件信息

// GenMod.cpp

#include 
#include 
#include 
#include 
#include 
#include “LocalPCA.h“
#include “HCSampler.h“
#include “GenMod.h“

//#define SD_DIS

#if defined(WIN32)
    #define wxFinite(n) _finite(n)
#elif defined(_LINUX)
    #define wxFinite(n) finite(n)
#else
    #define wxFinite(n) ((n)==(n))
#endif

namespace az
{
namespace mea
{
namespace gen
{
namespace mod
{

//constructor
Modelbase::Modelbase()
{
mDataSize = mDataDim = 0;
pData = 0;
mExtension = 0.2;
}

//destructor
Modelbase::~Modelbase()
{
Clear();
}
//clear data pool
void Modelbase::Clear()
{
unsigned int i;
if( pData != 0 )
{
for( i=0; i delete []pData;
pData   = 0;
mDataSize = 0;
}
}

// convert a real number to a nearest positive integer number 
unsigned int Modelbase::ROUND(double X) 

if(X-(unsigned int)(X)<0.5 && (unsigned int)(X)>0 ) 
return (unsigned int)(X); 
else 
return (unsigned int)(X)+1; 
}

// pertubation
double Modelbase::PERTUBATION()

double r;
do{ r = 1.5 + rnd::gaussian()*0.5; }while(r<0.8 || r>2.2);
return r;
}

//////////////////////////////////////////////
//Local PCA based EDA generator
//constructor
ModelLocalPCAU::ModelLocalPCAU()
{
mLatentDim = 0;
mMaxCluster = 0;
}

//initialize the LPCA
void ModelLocalPCAU::Set(unsigned int latent unsigned int cluster unsigned int trainsteps double extension)
{
mLatentDim = latent;
mMaxCluster = cluster;
mTrainSteps = trainsteps;
mExtension = extension;
}

//model-based generator
CPopulationMO& ModelLocalPCAU::Generate(CPopulationMO& popnew CPopulationMO& popref)
{
unsigned int cijk;

//Step 1: assign new data
if( popref.Size() != mDataSize ) 
{
Clear();
mDataSize = popref.Size();
mDataDim = popref.P().XSize();
pData = new double*[mDataSize];
for( i=0; i }
for( i=0; i
//Step 2: train with Local PCA
alg::LocalPCA lpca;
//alg::Kmeans lpca;
lpca.Set(mMaxCluster mDataSize mDataDim mLatentDim mTrainSteps);
for( i=0; i lpca.Train();

//Step 3: calculate the probability of each cluster i.e the size to create in each cluster
unsigned int nt = 0;
std::vector nc(mMaxCluster);
for(i=0; i= 1) ? 2:0; nt += nc[i];}
double vt = 0.0;
std::vector vc(mMaxCluster);
for(i=0; i
vc[i] = 0.0;
if(lpca.mvNo[i] >  1)
{
vc[i] = 1.0;
for(j=0; j  }
vt += vc[i];
}
double ns = mDataSize - nt + 0.0;
nt = 0;
for(i=0; i while(nt {
i = rnd::rand((unsigned int)0 (unsigned int)mMaxCluster);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-06 10:04  RM-MOEA\
     文件       38433  2017-04-06 10:03  RM-MOEA\49282683RM-MEDA.rar
     目录           0  2017-04-06 10:04  RM-MOEA\RM-MEDA\
     文件        4548  2008-02-21 22:25  RM-MOEA\RM-MEDA\Alg.h
     文件        5401  2008-02-21 22:27  RM-MOEA\RM-MEDA\GenMod.cpp
     文件        3208  2008-02-21 22:25  RM-MOEA\RM-MEDA\GenMod.h
     文件         765  2007-02-08 21:04  RM-MOEA\RM-MEDA\HCSampler.cpp
     文件        1692  2008-02-21 22:22  RM-MOEA\RM-MEDA\HCSampler.h
     文件        3638  2007-02-08 21:04  RM-MOEA\RM-MEDA\IndividualMO.cpp
     文件        5150  2008-02-21 22:22  RM-MOEA\RM-MEDA\IndividualMO.h
     文件         553  2008-02-21 22:21  RM-MOEA\RM-MEDA\Initialization.cpp
     文件        1748  2008-02-21 22:21  RM-MOEA\RM-MEDA\Initialization.h
     文件        3677  2007-02-08 21:04  RM-MOEA\RM-MEDA\LocalPCA.cpp
     文件        1657  2008-02-21 22:19  RM-MOEA\RM-MEDA\LocalPCA.h
     文件       15224  2007-02-08 21:04  RM-MOEA\RM-MEDA\Matrix.cpp
     文件        9493  2008-02-21 22:18  RM-MOEA\RM-MEDA\Matrix.h
     文件       11381  2008-02-21 22:17  RM-MOEA\RM-MEDA\MatrixAlg.cpp
     文件        4233  2007-02-08 21:04  RM-MOEA\RM-MEDA\Model.cpp
     文件        3482  2008-02-21 22:18  RM-MOEA\RM-MEDA\Model.h
     文件        6281  2008-02-21 22:16  RM-MOEA\RM-MEDA\Parameter.h
     文件        7545  2009-05-08 22:04  RM-MOEA\RM-MEDA\PopulationMO.cpp
     文件        7058  2008-02-21 22:16  RM-MOEA\RM-MEDA\PopulationMO.h
     文件        5142  2008-02-21 22:30  RM-MOEA\RM-MEDA\Problem.h
     文件        3313  2007-02-08 21:04  RM-MOEA\RM-MEDA\Random.cpp
     文件        2345  2008-02-21 22:15  RM-MOEA\RM-MEDA\Random.h
     文件        4441  2008-02-21 22:14  RM-MOEA\RM-MEDA\Sel.cpp
     文件        2478  2008-02-21 22:13  RM-MOEA\RM-MEDA\Sel.h
     文件        5415  2008-02-21 23:16  RM-MOEA\RM-MEDA\main.cpp

评论

共有 条评论