/*! \brief Constructor where MPI communicator can be specified
  */
 PartitioningProblem(Adapter *A, ParameterList *p, MPI_Comm comm):
     Problem<Adapter>(A,p,comm), solution_(),
     problemComm_(), problemCommConst_(),
     inputType_(InvalidAdapterType), 
     graphFlags_(), idFlags_(), coordFlags_(), algName_(),
     numberOfWeights_(), partIds_(), partSizes_(), 
     numberOfCriteria_(), levelNumberParts_(), hierarchical_(false), 
     metricsRequested_(false), metrics_(), graphMetrics_()
 {
   for(int i=0;i<MAX_NUM_MODEL_TYPES;i++) modelAvail_[i]=false;
   initializeProblem();
 }
Пример #2
0
void run(char* func_name, int iRun)
{
	iter=0;
	iter_each=0;
	cnArch=0;

	char objsal[256];
	char varsal[256];
	char timesal[256];
	strcpy(testInstance,func_name);

	double start_time,end_time;
	double duration;

	sprintf(objsal,"results/FUN_%s_%d_%d",testInstance,nDim,iRun);
	sprintf(varsal,"results/VAR_%s_%d_%d",testInstance,nDim,iRun);
	sprintf(timesal,"results/TIME_%s_%d",testInstance,nDim);

	if(mpi_rank==0)
		start_time=clock();

	initializeProblem();
	initializePopulation();
// 	showPopulation();
	initializeIndex();
	if(mpi_color)
		evaluatePopInitial();
	MPI_Barrier(MPI_COMM_WORLD);
	if(master_flag)
		collection_initial();
	if(!mpi_color&&mpi_rank_master==mpi_rank_master_archive)
		refineRepertory_generateArchive();
	MPI_Barrier(MPI_COMM_WORLD);
	if(master_flag)
		SynchronizeArchive();
	SynchronizeArchive_one();
// 	refineRepertory_generateArchive_SDE();
// 	showArchive();
// 	showLimits();
	if(mpi_color)
	{
		update_xBest_initial();
		update_xBest_archive();
	}
	MPI_Barrier(MPI_COMM_WORLD);
	iter=nPop*nObj;

// 	for(int i=0;i<mpi_size;i++)
// 	{
// 		if(i==0&&mpi_rank==0)
// 			showArchive();
// 		if(i!=0&&mpi_rank==i)
// 		{
// 			showGlobalBest();
// 			showPopulation();
// 		}
// 		MPI_Barrier(MPI_COMM_WORLD);
// 	}

	while(iter<maxIteration)
	{
		iter_each=0;
		nRep=0;
		if(mpi_color)
		{
			update_objective();
			permIndexes();
		}
		else
		{
			update_archive();
			perm_archIndex();
		}
		MPI_Barrier(MPI_COMM_WORLD);
// 		showGlobalBest();
		if(master_flag)
		{
			collect2master_archive();
			if(mpi_rank_master==mpi_rank_master_archive)
				refineRepertory_generateArchive();
			SynchronizeArchive();
		}
		SynchronizeArchive_one();
		if(mpi_color)
			update_xBest_archive();
// 		showArchive();
		MPI_Barrier(MPI_COMM_WORLD);
		update_iteration();
	}

	if(mpi_rank==0)
	{
		end_time=clock();
		duration=(end_time-start_time)/CLOCKS_PER_SEC;
	}

	if(mpi_rank==0)
	{
		fpttime=fopen(timesal,"a");
		fprintf(fpttime, "%e\n", duration);

		get_nonDominateSize();

		fptobj=fopen(objsal,"w");
		save_obj(fptobj);

		fptvar=fopen(varsal,"w");
		save_var(fptvar);

		fclose(fpttime);
		fclose(fptobj);
		fclose(fptvar);
	}
}
Пример #3
0
void run(int iRun)
{
	double t_ini, t_fin;
	double secs;

	char evalsal[50];//={"results/Evaluations_"};
	char timesal[50];//={"results/Time_"};
	char sizesal[50];//={"results/Size_"};
	char funsal[50];//={"results/FUN_"};
	char varsal[50];//={"results/VAR_"};
	int evaluations;

	numRest = 0;
	cycle = 0;
	gen = 0;

	sprintf(evalsal,"results/Evaluations_%s_%d",problemInstance,D);
	sprintf(timesal,"results/Time_%s_%d",problemInstance,D);
	sprintf(sizesal,"results/Size_%s_%d",problemInstance,D);
	sprintf(funsal,"results/FUN_%s_%d_%d",problemInstance,D,iRun);
	sprintf(varsal,"results/VAR_%s_%d_%d",problemInstance,D,iRun);

	if(mpi_rank==0)
		t_ini=clock();

	randomize();    
	initializeProblem(problemInstance);    
	initializePopulation();
	synchronize_x_sub_all();
	evaluateSpeciesInitial();

	int i;
	while(cycle<Cycles){
		cycle++;
// 		if(mpi_rank==0)
// 			printf("Cycle:\t%d\n",cycle);

		gen = 0;
		while(gen<Gmax){
			gen++;
			ED_rand_1_bin();
			//species parallel, results differ from original
			evaluatePopulation();
			addSolution();
			selection();
			synchronize_x_sub_all();
		}
	}

	evaluations = cycle * Gmax * numSpecies * NP;

	generateSolutions();	

	if(mpi_rank==0)
	{
		fptx = fopen(funsal,"w");     

		exportNonDominatedPopulationObjetivesValues(finalFitness,sizeSol,fptx);    
		fptv = fopen(varsal,"w");
		exportNonDominatedPopulationSolutionValues(finalSolutions,sizeSol,fptv);

		fptu = fopen(evalsal,"a");
		fprintf(fptu, "%d\n",evaluations);

		fpts = fopen(sizesal,"a");
		fprintf(fpts, "%d\n",sizeSolND);

		if(mpi_rank==0)
			t_fin=clock();

		secs = (t_fin-t_ini)/CLOCKS_PER_SEC;

		fptt = fopen(timesal,"a");
		fprintf(fptt,"%.16g \n", secs);

		fclose(fptx);
		fclose(fptu);
		fclose(fptv);
		fclose(fptt);
		fclose(fpts);
	}
	MPI_Barrier(MPI_COMM_WORLD);
	return;
}