void ordena(float** poblacion,int tam_poblacion,int tam_cromosoma,float *a,float *b,float *precision){ int i=0,j=0; while(i<(tam_poblacion-1)){ for(j=0;j<tam_poblacion-1;j++){ if((*(*(poblacion+j)+tam_cromosoma))<(*(*(poblacion+(j+1))+tam_cromosoma))){ float *tmp=(float*)malloc(sizeof(float)*tam_cromosoma); tmp=*(poblacion+j+1); *(poblacion+j+1)=*(poblacion+(j)); *(poblacion+(j))=tmp; } } i++; } imprime_poblacion(poblacion,tam_poblacion,tam_cromosoma); cruzamiento(poblacion,tam_poblacion,tam_cromosoma,a,b,precision); }
/*****************************PRINCIPAL******************************/ int main() { int i; poblacion *p; char nombre_archivo[255]; printf("Nombre>"); scanf("%s",nombre_archivo); /* iniciar problema*/ iniciar(nombre_archivo); /* crea una poblacion nueva */ p = alloc_poblacion(tampoblacion,bpi); for (i = 0; i < iter; i++) { imprime_poblacion(p); printf("\n"); printf("Generacion = %i mejor hasta ahora= %i promedio hasta ahora = %i\n",i,mejor_aptitud(p),aptitud_promedio(p)); if (mejor_aptitud(p)>=numclausulas) { printf("\nProblema Resuelto!!!\n"); if( mejor_aptitud(p) < numclausulas) printf("Formula con alguna Contradiccion?\n"); break; } else { evolucionar_poblacion(p,cruzamiento,mutacion); if ( iter == MAXITERACIONES && (mejor_aptitud(p) < aptitud_optimo() ) ) printf("\nProblema Indeterminado\n"); } } libera_poblacion(p); printf("\nNumero de Generaciones: %i\nTama¤o de la Poblacion %i\n",i,tampoblacion); printf("Numero de Iteraciones: %i\nProbabilidad Cruzamiento %f\n", iter, cruzamiento); printf("Probabilidad Mutacion %f\n",mutacion); printf("\nNumero de variables en Archivo %i\n",numvars); printf("Numero de clausulas en Archivo %i\n",numclausulas); getch(); return 0; }