⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 有时间约束的车辆数优化的C程序(遗传算法)
💻 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 + -