📄 person.cpp
字号:
#include "stdafx.h"
#include "person.h"
BOOL SYSPARA::DownPara(int groupno)
{
return 0;
}
//从INI文件中载入需要的参数
BOOL SYSPARA::LoadPara(int groupno)
{
//遗传参数部分
CString strNum,strgroupNo;
strgroupNo.Format("group%02d",groupno);
GetPrivateProfileString(strgroupNo,"popsize","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
popsize = atoi(strNum);
GetPrivateProfileString(strgroupNo,"calgennum","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
calgennum = atoi(strNum);
GetPrivateProfileString(strgroupNo,"pc","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
pc = atof(strNum);
GetPrivateProfileString(strgroupNo,"pm","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
pm = atof(strNum);
GetPrivateProfileString(strgroupNo,"genenum","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
genenum = atoi(strNum);
GetPrivateProfileString(strgroupNo,"chromnum","",strNum.GetBuffer(MAX_PATH),MAX_PATH,GAPARAFILE);
chromnum = atoi(strNum);
//约束条件部分
strgroupNo.Format("约束01");
for(int i = 1; i <= genenum; i++)
{
CString strNo;
strNo.Format("工件%02d",i);
GetPrivateProfileString(strgroupNo,strNo,"",strNum.GetBuffer(MAX_PATH),MAX_PATH,CALPARAFILE);
ncont1[i-1] = atoi(strNum);
}
strgroupNo.Format("约束02");
for(i = 1; i <= genenum; i++)
{
CString strNo;
strNo.Format("工件%02d",i);
GetPrivateProfileString(strgroupNo,strNo,"",strNum.GetBuffer(MAX_PATH),MAX_PATH,CALPARAFILE);
ncont2[i-1] = atoi(strNum);
}
strgroupNo.Format("约束03");
for(i = 1; i <= genenum; i++)
{
CString strNo;
strNo.Format("工件%02d",i);
GetPrivateProfileString(strgroupNo,strNo,"",strNum.GetBuffer(MAX_PATH),MAX_PATH,CALPARAFILE);
ncont3[i-1] = atoi(strNum);
}
strgroupNo.Format("约束04");
for(i = 1; i <= genenum; i++)
{
CString strNo;
strNo.Format("工件%02d",i);
GetPrivateProfileString(strgroupNo,strNo,"",strNum.GetBuffer(MAX_PATH),MAX_PATH,CALPARAFILE);
bcont1[i-1] = atof(strNum);
}
//其他约束情况
strgroupNo.Format("约束05");
CString strNums;
char tempstr[MAXGENENUM * 3];
for(i = 0; i <= genenum; i++)
{
CString strNo;
strNo.Format("%02d",i);
GetPrivateProfileString(strgroupNo,strNo,"",strNums.GetBuffer(MAX_PATH),MAX_PATH,CALPARAFILE);
sprintf(tempstr,"%s",strNums);
for(int j = 0; j < MAXGENENUM ; j++)
{
int ntemp = (tempstr[j * 3] - '0') * 10 + tempstr[j * 3 + 1] - '0';
//nconts[0] = 对应的组号
nconts[i][j] = ntemp;
if (tempstr[j * 3 + 2] == ';')
break;
}
}
return 0;
}
//约束条件的判定 conno:约束号
BOOL PERSN::FitCnst(int conno)
{
BOOL bretn = TRUE;
for(int i = 0; i < MAXGENENUM; i++)
{
for(int j=0; j< MAXCHROMNUM; j++)
{
chrom.abc[i][j] = 0;
}
}
switch(conno)
{
case 1:
case 2:
case 3:
case 4:
case 5:
break;
default:
break;
}
return bretn;
}
//计算目标函数值
double PERSN::CalVal(CHROM chrom)
{
return 0;
}
//计算适应度
double PERSN::CalFit(double dval)
{
return dval;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -