
typedef struct gene {
  int iFrequency[3];
  int *bMating_Strategy; // Whether the organism attempts to mate on a given round.  Not mating
} genome;				 // results in the storing of points, giving advantage in the next round.


typedef struct geneL {
  int index;
  int iFrequency;
  struct geneL * next;
} order;

int total_gen_score; // The sum of the score for the current generation.

int init_genome (genome *genome_list);

order * sort_by_frequency (genome *genome_list);

void free_gene_list (order * head);

int * scoring_function (order * head, genome * genome_list);

int evaluate_ratio(double f_ratio, double f_margin);

genome crossover(int first, int second, genome * gen_Pop);

genome mutate(genome child);


