Implementación de un CHC (Algoritmo genético con control de endogamia )


Convenciones para que sea mas leible independiente del programador
@ Autor Fabio Andres Palmieri Villa
// @ Unimagdalena
 
#include "library.h"
 
#define Tiempo_Simulacion 100
#define POBLACION 10
#define GENES 7
#define P_Cambio 0
#define Ratio 0.5
 
#include "chc.h"
#include "Individuo.h"
 
static Integer Stop ;
static Integer D ;
Individuo_ New_P[POBLACION + 1];
Individuo_ P[POBLACION + 1];
Individuo_ C[POBLACION + 1];
Individuo_ C_[POBLACION + 1];
Real Tabla[POBLACION + 1];
Real Tabla_C[POBLACION + 1];
 
Real Funcion(Real a)
{
/*F(x) = a*/
return a;
 
}
 
void Inicializar (void) ;
void Evaluar(void) ;
void EvaluarC_(void) ;
Integer Hamming_Distance(Individuo_ A_ , Individuo_ B_ ) ;
void Recombine(void) ;
void Select_r (void) ;
void Mostrar(void) ;
void RenovarPoblacion(void) ;
void SelectR(void) ;
BOOL Son_Iguales(void) ;
void Swap( Individuo_ &A , Individuo_ &B ) ;
void Diverge(void) ;
 
PROCEDURE(CHC) BEGIN
 
CLEAR
INICIAR(P)
EVALUATE(P)
Integer t = 0;
D = POBLACION/4;
 
 
 
while ( t <= Tiempo_Simulacion )
 
BEGIN t = t + 1;
SELECT_R (C(t)) FROM (P(t-1))
RECOMBINE (C(t)) FORMANDO (C_(t))
EVALUAR (C_(t))
GENERATING(P(t+1)) FROM (C_(t) AND P(t-1))
 
IF_ARE_EQUALS(P(t) AND P(t+1)) BEGIN
 
D = D - 1;
 
END
if ( D <>
 
DIVERGE(P(t))
D = (Integer)( Ratio )*(1.0 - Ratio )*GENES;
 
 
 
END
 
MOSTRAR
PAUSE
RELEVAR( P(t) CON P(t+1) )
 
END
PAUSE
 
END
#include "funciones.h"
 

Este algoritmo corre bajo el Dev C++ 4.9.9.2