/*Algoritmo Principal*/ int main(int argc, char *argv[]) { char name[20];// = "_kita_1"; char archiveName[20] = "archive"; char fitputName[20] = "fitput"; char varputName[20] = "varput"; char hvName[20]= "hv"; unsigned int i, j, t; unsigned int fun, gen; clock_t startTime, endTime; double duration, clocktime; FILE *fitfile,*varfile; /*Parametros iniciales*/ strcpy(name,argv[1]); fun = atoi(argv[2]); gen = atoi(argv[3]); printf("%s %d %d \n",name,fun,gen); initialize_data(fun,gen); /*Iniciar variables*/ initialize_memory(); /* sprintf(name,"kita_1_"); sprintf(archiveName,strcat(name,"archive.out")); sprintf(fitputName, strcat(name,"fitput.out")); sprintf(varputName, strcat(name,"varput.out")); sprintf(hvName,strcat(name,"hv.out")); */ //fitfile = fopen(strcat(strcat(fitputName,name),".out"),"w"); //varfile = fopen(strcat(strcat(varputName,name),".out"),"w"); //hv = fopen(strcat(strcat(hvName,name),".out"),"w"); /* Iniciar generador de aleatorios*/ initialize_rand(); startTime = clock(); /* Iniciar contador de generaciones*/ t = 0; /* Iniciar valores de la poblacion de manera aleatoria*/ initialize_pop(); /* Calcular velocidad inicial*/ initialize_vel(); /* Evaluar las particulas de la poblacion*/ evaluate(); /* Almacenar el pBest inicial (variables and valor de aptitud) de las particulas*/ store_pbests(); /* Insertar las particulas no domindas de la poblacion en el archivo*/ insert_nondom(); //printf("\n%d",nondomCtr); /*Ciclo Principal*/ while(t <= maxgen) { //clocktime = (clock() - startTime)/(double)CLOCKS_PER_SEC; /*if(verbose > 0 && t%printevery==0 || t == maxgen) { fprintf(stdout,"Generation %d Time: %.2f sec\n",t,clocktime); fflush(stdout); }*/ /*if(t%printevery==0 || t == maxgen) { fprintf(outfile,"Generation %d Time: %.2f sec\n",t,clocktime); }*/ /* Calcular la nueva velocidad de cada particula en la pooblacion*/ //printf("\n 1"); compute_velocity(); /* Calcular la nueva posicion de cada particula en la poblacion*/ //printf("\n 2"); compute_position(); /* Mantener las particulas en la poblacion de la poblacion en el espacio de busqueda*/ //printf("\n 3"); maintain_particles(); /* Pertubar las particulas en la poblacion*/ if(t < maxgen * pMut) mutate(t); /* Evaluar las particulas en la poblacion*/ //printf("\n 4"); evaluate(); /* Insertar nuevas particulas no domindas en el archivo*/ //printf("\n 5"); update_archive(); /* Actualizar el pBest de las particulas en la poblacion*/ //printf("\n 6"); update_pbests(); /* Escribir resultados del mejor hasta ahora*/ //verbose > 0 && t%printevery==0 || t == maxgen /*if(t%printevery==0 || t == maxgen) { //fprintf(outfile, "Size of Pareto Set: %d\n", nondomCtr); fprintf(fitfile, "%d\n",t); fprintf(varfile, "%d\n",t); for(i = 0; i < nondomCtr; i++) { for(j = 0; j < maxfun; j++) fprintf(fitfile, "%f ", archiveFit[i][j]); fprintf(fitfile, "\n"); } fprintf(fitfile, "\n\n"); fflush(fitfile); for(i = 0; i < nondomCtr; i++) { for(j = 0; j < maxfun; j++) fprintf(varfile, "%f ", archiveVar[i][j]); fprintf(varfile, "\n"); } fprintf(varfile, "\n\n"); fflush(varfile); }*/ /* Incrementar contador de generaciones*/ t++; //printf("%d\n",t); } /* Escribir resultados en el archivo */ save_results(strcat(strcat(archiveName,name),".out")); endTime = clock(); duration = ( endTime - startTime ) / (double)CLOCKS_PER_SEC; fprintf(stdout, "%lf sec\n", duration); //fclose(fitfile); //fclose(varfile); free_memory(); return EXIT_SUCCESS; }
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); } }