コード例 #1
0
ファイル: cruzamiento.c プロジェクト: hykatza/C
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);
}
コード例 #2
0
/*****************************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;
}