rtcgpsfda1.cpp
来自「基于GPS的多目标优化及动态多目标优化源代码 里面 包含MOP, DMOP的程序」· C++ 代码 · 共 97 行
CPP
97 行
// RTCGPSFDA1.cpp: implementation of the RTCGPSFDA1 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RTDMOEA.h"
#include "RTCGPSFDA1.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
RTCGPSFDA1::RTCGPSFDA1()
{
}
RTCGPSFDA1::~RTCGPSFDA1()
{
}
void RTCGPSFDA1::InitPop()
{
CSolution t_temp;
t_temp.Init();
for (int i=0;i<PopSize;i++)
{
/** 设置 FDA1 的初始化GENE **/
t_temp.Gene[0] =CRandom::Random(0.0,1.0);
for (int j =1;j< CSolution::GetGeneLength() ;j++)
t_temp.Gene[j] =CRandom::Random(-1.0,1.0);
/*** 增加个体 */
m_Pop[i].Init();
m_Pop[i].Copy(&t_temp);
}
InitPopType();
}
void RTCGPSFDA1::ComputeFitness(CSolution &m_1)
{
EvaluationNum++;
if ((m_1.Gene[0]<0) ||(m_1.Gene[0]>1))
m_1.Gene[0] =CRandom::Random(0.0,1.0);
for (int j =1;j< CSolution::GetGeneLength() ;j++)
{
if ((m_1.Gene[j]<-1.0) ||(m_1.Gene[j]>1))
m_1.Gene[j] =CRandom::Random(-1.0,1.0);
}
/*
if (m_1.Gene[0]<0 )
m_1.Gene[0] =0;
if (m_1.Gene[0]>1 )
m_1.Gene[0] =1;
for (int j =1;j< CSolution::GetGeneLength() ;j++)
{
if (m_1.Gene[j]<-1.0 )
m_1.Gene[j] =-1;
if (m_1.Gene[j]>1.0)
m_1.Gene[j] =1;
}
*/
int nr=10;
int rt=ChangeGenerationNum;
double t= 1.0/(double)nr*((int)CurrentGeneration/rt);
m_1.Objective[0] = m_1.Gene[0];
double gt=sin(0.5*PI*t);
double g=1;
for (int i=1;i< CSolution::GetGeneLength();i++)
{
g +=(m_1.Gene[i]-gt) *(m_1.Gene[i]-gt);
}
double h;
h= 1- sqrt(m_1.Gene[0] /g) ;
m_1.Objective[1]=g*h;
}
void RTCGPSFDA1::RandomMutate(int Index)
{
/** 设置 FDA1 的初始化GENE **/
m_Pop[Index].Gene[0] =CRandom::Random(0.0,1.0);
for (int j =1;j< CSolution::GetGeneLength() ;j++)
m_Pop[Index].Gene[j] =CRandom::Random(-1.0,1.0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?