📄 rtcgps.h
字号:
// GPS.h: interface for the CGPS class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_RTGPS_H__1E7817D9_9765_4A33_B58D_DAB98245B893__INCLUDED_)
#define AFX_RTGPS_H__1E7817D9_9765_4A33_B58D_DAB98245B893__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Solution.h"
#include "ElitistSet.h"
#define PI 3.1415926535897932384626
class DGPSSortNode
{
public:
DGPSSortNode();
virtual ~DGPSSortNode();
int Index;
int Type;
double SelctValue;
double Momentum;
double Activity;
};
class RTCGPS
{
public:
//PSO的变量
CSolution * BestSolutions;
//SPEA2的演化算子
int RTCGPS::variate();
int RTCGPS::mutation(CSolution *ind);
int RTCGPS::uniform_crossover(CSolution *ind1, CSolution *ind2);
int RTCGPS::sbx(CSolution *ind1, CSolution *ind2);
int RTCGPS::mutation(CSolution *ind, int GeneID);
int RTCGPS::sbx(CSolution *ind1, CSolution *ind2, int GeneID);
//假如ProblemType ==1表示是MOP
//当是MOP时,停机判据生效
//假如ProblemType ==0表示是DMOP
int ProblemType;
static int StopOK;
static int StopGenerationNum;
public:
BOOL WSMBetter(CSolution*Ind1, CSolution* Ind2);
void SaveBest(CSolution* pInd);
void SetFitness(CSolution& Ind);
void PrintFinalResult();
void DMOP_OnEnvironmentChanged();
void MOP_OnEnvironmentChanged();
bool Dominated(CSolution &m_1, CSolution &m_2);
void PrintPopulation();
void CrossoverMultiParent(int PopIndex,CSolution *pOutSolution);
void Sort(int m_Start, int m_End);
void RunStep9();
void RunStep7();
void RunStep6();
void RunStep5();
void RunStep4();
void RunStep3();
void RunStep2();
void RunStep1();
CSolution* CrossoverRandom(int Host, CSolution*pOutSolution);
CSolution* CrossoverNeighbor(int Host, CSolution*pOutSolution);
CSolution* CrossoverDblRandom(int Host, CSolution *pOutSolution,CSolution *pOutSolution2);
CSolution* CrossoverDblNeighbor(int Host, CSolution *pOutSolution,CSolution *pOutSolution2);
CSolution* Crossover(int Host1, int Host2,CSolution *pOutSolution);
CSolution* Crossover(CSolution*Ind1, CSolution * Ind2,CSolution *pOutSolution);
virtual void RandomMutate(int Index)=0;
bool CheckSentinel(CSolution &tSentinel);
void OnEnvironmentChanged();
bool eDominated(CSolution &m_1, CSolution &m_2);
static double lamda;
static int CrossoverNum;
static BOOL EliteSpaceFirst;
static int EvaluationNum;
static int PopSize; /*种群大小,必须在InitPop运行前初始化*/
static int BetterPolicy; // 0 表示 Random 1 Ecology 2 Independent
static int PopTypeInitPolicy; //0 表示 Random 1 按区域线性分配
static char ProblemName[128];
static int ChangeGenerationNum;
//static int HyperMutation;
static double HyperMutationRate;
static int AlgorithmPolicy;
static int ElitistPolicy;
static int GeneratorPolicy;
static int ParentsNum;
DGPSSortNode* m_Selct;
virtual BOOL ReplaceSolution(int Which, CSolution &m_temp);
BOOL ReplaceSolution2(int Which, CSolution &m_temp);
virtual void RunStep();
virtual void InitPop()=0;
virtual void ComputeFitness(CSolution &m_1)=0;
virtual BOOL BetterEcology(CSolution & m_1, CSolution & m_2);
virtual BOOL BetterRandom(CSolution & m_1, CSolution & m_2);
virtual BOOL BetterIndependent(CSolution & m_1, CSolution & m_2,int Type);
virtual BOOL Better(CSolution &m_1, CSolution &m_2,int Type);
BOOL BetterNewWSM(CSolution &m_1, CSolution &m_2,int Type);
virtual CSolution* Mutation(int Host, CSolution *pOutSolution);
virtual CSolution* HyperDeltaMutate(int Host);
void RunGeneration(int GenerationNum);
RTCGPS();
virtual ~RTCGPS();
double CrossoverLowerLimit;
double CrossoverUpperLimit;
double DeltaLowerLimit;
double DeltaUpperLimit;
int EnvironmentChangedTimes;
int CurrentGeneration;
CSolution* m_Pop;
CElitistSet m_Elist;
private:
int *GUOPopPtr;//[ParentsNum]
double * GUOCoefficient;//
char FileName[128];
virtual void PopTypeRegionLinear();
void PopTypeRandom();
protected:
virtual void InitPopType();
};
#endif // !defined(AFX_GPS_H__1E7817D9_9765_4A33_B58D_DAB98245B893__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -