Ejemplo n.º 1
0
double ga_similarity_bitstring_hamming(const population *pop,
                                      const entity *alpha, const entity *beta)
  {
  int           i;              /* Loop variable over all chromosomes. */
  int		a=0, b=0;	/* Number of ones in the individual entities' chromosomes. */
  int		n=0;		/* Number of ones both entities' chromosomes. */

  /* Checks. */
  if (!pop) die("Null pointer to population structure passed");
  if (!alpha || !beta) die("Null pointer to entity structure passed");

  for (i=0; i<pop->num_chromosomes; i++)
    {
    n += ga_similarity_bitstring_count_and_alleles( pop, alpha, beta, i );
    a += ga_similarity_bitstring_count_1_alleles( pop, alpha, i );
    b += ga_similarity_bitstring_count_1_alleles( pop, beta, i );
    }

  return 1.0 - (a+b-2*n)/pop->len_chromosomes;
  }
Ejemplo n.º 2
0
GAULFUNC double ga_similarity_bitstring_cosine(const population *pop,
                                      const entity *alpha, const entity *beta)
  {
  int           i;              /* Loop variable over all chromosomes. */
  int		a=0, b=0;	/* Number of ones in the individual entities' chromosomes. */
  int		n=0;		/* Number of ones both entities' chromosomes. */

  /* Checks. */
  if (!pop) die("Null pointer to population structure passed");
  if (!alpha || !beta) die("Null pointer to entity structure passed");

  for (i=0; i<pop->num_chromosomes; i++)
    {
    n += ga_similarity_bitstring_count_and_alleles( pop, alpha, beta, i );
    a += ga_similarity_bitstring_count_1_alleles( pop, alpha, i );
    b += ga_similarity_bitstring_count_1_alleles( pop, beta, i );
    }

  if (a==0 || b==0) return 0;

  return n/sqrt((double)(a*b));
  }