/*! \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(); }
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); } }
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; }