📄 test.cpp
字号:
//#include "StdAfx.h"
//#include "ga.h"
int TestVarMemory()
{
GetParameterValue();
InitiateVMemory();
FreeVMemory();
return OK;
}
int TestGetParameter()
{
GetParameterValue();
return OK;
}
int TestGetData()
{
GetParameterValue();
InitiateVMemory();
GetData();
putchar('\n');
for(int i=0; i<iChromLong; i++)
printf("\n\tdWorkTime[%d]=%f",i,dWorkTime[i]);
putchar('\n');
for(i=0; i<iChromLong; i++)
printf("\n\tdSiteWeight[%d]=%f",i,dSiteWeight[i]);
putchar('\n');
for(i=0; i<iChromLong; i++)
printf("\n\tdCarCapacity[%d]=%f",i,dCarCapacity[i]);
for(i=0; i<=iChromLong; i++){
putchar('\n');
for(int j=0; j<=iChromLong; j++)
printf("\n\tdRunTime[%d][%d]=%f",i,j,dRunTime[i][j]);
}
FreeVMemory();
return OK;
}
int TestInitiatePop()
{
//GetParameterValue();
TestPara();
InitiateVMemory();
//GetData();
TestData();
CreatePopulation();
for(int i=0; i<iPopSize; i++){
printf("\nr=%d, f=%f\n",stOldPopulation[i].iCarNum,stOldPopulation[i].dFitness);//$$$
for(int j=0; j<iChromLong; j++){
printf(" %d;",stOldPopulation[i].iChrom[j]);
}
}
FreeVMemory();
return OK;
}
int TestDecode()
{
GetParameterValue();
InitiateVMemory();
GetData();
CreatePopulation();
for(int i=0; i<iPopSize; i++){
DecodeChromosome(stOldPopulation+i);
printf("\n\n\t\t路线数=[%d]\n",stOldPopulation[i].iCarNum);
for(int j=0; j<stOldPopulation[i].iCarNum; j++){
printf("\t时间=[%5.1f],重量=[%5.1f]",
(stOldPopulation+i)->dCarFactTime[j],(stOldPopulation+i)->dCarFactWeight[j]);
}
}
FreeVMemory();
return OK;
}
int TestCalFitness()
{
GetParameterValue();
InitiateVMemory();
GetData();
CreatePopulation();
for(int i=0; i<iPopSize; i++){
CalculateFitnessValue(stOldPopulation+i);
printf("\n\n\t\t路线数=[%d],\t适应度=[%8.2f]\n",
stOldPopulation[i].iCarNum,(stOldPopulation+i)->dFitness);
for(int j=0; j<stOldPopulation[i].iCarNum; j++){
printf(" t=[%5.1f],w=[%5.1f]", (stOldPopulation+i)->dCarFactTime[j],
(stOldPopulation+i)->dCarFactWeight[j]);
}
}
FreeVMemory();
return OK;
}
int TestCrossover()//测试交叉算子
{
TestPara();
InitiateVMemory();
TestData();
CreatePopulation();
printf("\nr=%d, f=%f\n",stOldPopulation[0].iCarNum,stOldPopulation[0].dFitness);//$$$
for(int j=0; j<iChromLong; j++){
printf(" %d;",stOldPopulation[0].iChrom[j]);
}
printf("\nr=%d, f=%f\n",stOldPopulation[1].iCarNum,stOldPopulation[1].dFitness);//$$$
for(j=0; j<iChromLong; j++){
printf(" %d;",stOldPopulation[1].iChrom[j]);
}
CrossoverOperator(stOldPopulation,stOldPopulation+1,
stNewPopulation,stNewPopulation+1,1);
CalculateFitnessValue(stNewPopulation);
CalculateFitnessValue(stNewPopulation+1);
printf("\n$R=%d, F=%f, [%d:%d]\n",stNewPopulation[0].iCarNum,
stNewPopulation[0].dFitness,stNewPopulation[0].iXSite1,stNewPopulation[0].iXSite2);//$$$
for(j=0; j<iChromLong; j++){
printf(" %d;",stNewPopulation[0].iChrom[j]);
}
printf("\n$$R=%d, F=%f\n",stNewPopulation[1].iCarNum,stNewPopulation[1].dFitness);//$$$
for(j=0; j<iChromLong; j++){
printf(" %d;",stNewPopulation[1].iChrom[j]);
}
FreeVMemory();
return OK;
}
int TestMutation()
{
TestPara();
InitiateVMemory();
TestData();
CreatePopulation();
for(int i=0; i<iPopSize; i++){
printf("\nr=%d, f=%f\n",stOldPopulation[i].iCarNum,stOldPopulation[i].dFitness);//$$$
for(int j=0; j<iChromLong; j++){
printf(" %d;",stOldPopulation[i].iChrom[j]);
}
MutationOperator(stOldPopulation+i,1);
CalculateFitnessValue(stOldPopulation+i);
printf("\nR=%d, F=%f\n",stOldPopulation[i].iCarNum,stOldPopulation[i].dFitness);//$$$
for(j=0; j<iChromLong; j++){
printf(" %d;",stOldPopulation[i].iChrom[j]);
}
}
FreeVMemory();
return OK;
}
int TestSelection()
{
TestPara();
InitiateVMemory();
TestData();
CreatePopulation();
for(int i=0; i<1000; i++)
fprintf(outfp,"\t[%d]",SelectionOperator());
return OK;
}
int TestPara()
{
dTimeLimit=TimeLimit;
dPCross=PCross;
dPMutation=PMutation;
iPopSize=PopSize;
iChromLong=ChromLong;
iPrintFlag=PrintFlag;
dMaxTemperature=MaxTemperature;
dMinTemperature=MinTemperature;
iNumCycle=NumCycle;
dDownRate=DownRate;
dAlpha=Alpha;
iMaxGen=MaxGen;
iMaxRuns=MaxRuns;
return OK;
}
int TestData()
{
for(int i=0; i<10; i++){
dWorkTime[i]=WorkTime[i];
dSiteWeight[i]=SiteWeight[i];
dCarCapacity[i]=CarCapacity[i];
}
for(int j=0; j<=10; j++)
for(i=0; i<=10; i++)
dRunTime[j][i]=RunTime[j][i];
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -