📄 syspara.cpp
字号:
// SysPara.cpp: implementation of the SysPara class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RTDMOEA.h"
#include "SysPara.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SysPara::SysPara()
{
}
SysPara::~SysPara()
{
}
BOOL SysPara::ReadParameters(const char *Section)
{
CSolution_GeneLength = GetInt(Section,"CSolution_GeneLength");
CSolution_OBJectiveNum = GetInt(Section,"CSolution_OBJectiveNum");
CSolution_ChangeTypePolicy= GetInt(Section,"CSolution_ChangeTypePolicy");
RTCGPS_PopSize= GetInt(Section,"RTCGPS_PopSize") ;
RTCGPS_BetterPolicy=GetInt(Section,"RTCGPS_BetterPolicy");
RTCGPS_PopTypeInitPolicy=GetInt(Section,"RTCGPS_PopTypeInitPolicy");
/************************************************************************/
/* 算法策略 */
/* 1: 使用超变异策略,并使用Delta变异算子 */
/* 2: 使用超变异策略,使用随机变异算子 */
/* 3: 使用超变异策略,Baseline和Scale自适应 */
/* 4: 使用记忆体策略,固定Baseline和Scale */
/* 5: 使用记忆体策略,Baseline和Scale自适应 */
/* 6: 使用向量预测策略来适应Baseline和Scale */
/************************************************************************/
RTCGPS_AlgorithmPolicy=GetInt(Section,"RTCGPS_AlgorithmPolicy");
/************************************************************************/
/* 精英空间的策略 */
/* 1: 利用精英空间中的解 */
/* 2: 废弃精英空间中的解 */
/************************************************************************/
RTCGPS_ElitistPolicy=GetInt(Section,"RTCGPS_ElitistPolicy") ;
RTCGPS_EliteSpaceFirst=GetInt(Section,"RTCGPS_EliteSpaceFirst") ;
/************************************************************************/
/* 生成器策略 */
/* 1: CGPS:采用邻居交叉 */
/* 2: CGPS:采用随机邻居交叉 */
/* 3: CGPS:采用邻居双交叉 */
/* 4: CGPS:采用随机邻居双交叉 */
/* 5: CGPS:采用郭涛算法 */
/* 9: DGPS: */
/************************************************************************/
RTCGPS_GeneratorPolicy=GetInt(Section,"RTCGPS_GeneratorPolicy");
RTCGPS_HyperMutationRate=GetDbl(Section,"RTCGPS_HyperMutationRate");
/************************************************************************/
/* DGPS中的变量 */
/************************************************************************/
RTCGPS_lamda=GetDbl(Section,"RTCGPS_lamda");
RTCGPS_CrossoverNum=GetInt(Section,"RTCGPS_CrossoverNum");
/************************************************************************/
/* 郭涛算法中的变量 */
/************************************************************************/
RTCGPS_ParentsNum=GetInt(Section,"RTCGPS_ParentsNum");
/************************************************************************/
/* 处理普通多目标优化的变量,用来控制是否停机 */
/************************************************************************/
RTCGPS_StopGenerationNum=GetInt(Section,"RTCGPS_StopGenerationNum");
RTCGPS_ChangeGenerationNum=GetInt(Section,"RTCGPS_ChangeGenerationNum");
RTCGPS_CrossoverLowerLimit=GetDbl(Section,"RTCGPS_CrossoverLowerLimit");
RTCGPS_CrossoverUpperLimit=GetDbl(Section,"RTCGPS_CrossoverUpperLimit");
RTCGPS_DeltaLowerLimit=GetDbl(Section,"RTCGPS_DeltaLowerLimit");
RTCGPS_DeltaUpperLimit=GetDbl(Section,"RTCGPS_DeltaUpperLimit");
RTCGPS_RunGenerationNumber=GetInt(Section,"RTCGPS_RunGenerationNumber");
GetDblArray(Section,"CElitistSet_Scale",&CElitistSet_Scale[0],CSolution_OBJectiveNum);
GetDblArray(Section,"CElitistSet_Baseline",&CElitistSet_Baseline[0],CSolution_OBJectiveNum);
CElitistSet_Location=GetDbl(Section,"CElitistSet_Location");
/********************************************************/
/***** 指定每个维度需要多少个点 **********/
/********************************************************/
//int CElitistSet_PointNum[MAX_OBJECTIVENUM];
GetIntArray(Section,"CElitistSet_PointNum",&CElitistSet_PointNum[0],CSolution_OBJectiveNum-1);
return TRUE;
}
//DEL BOOL SysPara::SetConfigFileName(char * Name)
//DEL {
//DEL ConfigFileName= (CString)Name;
//DEL return TRUE;
//DEL }
double SysPara::GetDbl(const char *Section, const char *Item)
{
char temp[1024];
memset(temp,0,1024);
int len= GetPrivateProfileString( Section, Item, "0", temp, 1023, ConfigFileName );
return atof(temp);
}
BOOL SysPara::GetDblArray(const char *Section, const char *Item, double * Array, int ItemCount)
{
char temp[1024];
memset(temp,0,1024);
int len= GetPrivateProfileString( Section, Item, "0", temp, 1023, ConfigFileName );
int i=0;
char *p= temp;
int j=0;
char a[128];
while (i<ItemCount)
{
if ((*p==',') ||(*p==0))
{
a[j]=0;
Array[i]= atof(a);
j=0;
i++;
p++;
continue;
}
else
{
a[j++]=*p;
p++;
continue;
}
}
return true;
}
int SysPara::GetInt(const char *Section, const char *Item)
{
return (int)GetPrivateProfileInt( Section, Item, 0, ConfigFileName );
}
BOOL SysPara::GetIntArray(const char *Section, const char *Item, int * Array, int ItemCount)
{
char temp[1024];
memset(temp,0,1024);
int len= GetPrivateProfileString( Section, Item, "0", temp, 1023, ConfigFileName );
int i=0;
char *p= temp;
int j=0;
char a[128];
while (i<ItemCount)
{
if ((*p==',') ||(*p==0))
{
a[j]=0;
Array[i]= atoi(a);
j=0;
i++;
p++;
continue;
}
else
{
a[j++]=*p;
p++;
continue;
}
}
return true;
}
void SysPara::Init(char *FileName)
{
ConfigFileName= (CString)FileName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -