#ifndef __GA_H__ #define __GA_H__ //#define POPULATION_SIZE 5000 #define TOTAL_GENERATIONS 10000 //#define MUTATE 50 //#define RANDOM_SEED 151 //#define RETRIES_FACTOR 2 //#define TABU_SIZE 200 #define VIOLATE_TABU_IF_REQD 1 #define TABU_SEARCH 1 #define WALK_SAT 2 typedef struct gene{ char* assignment; int fitness; } GENE; void crossGenes(GENE* parent1, GENE* parent2, GENE* child1, GENE* child2); void mutateGene(GENE* mutate); void calculateFitness(GENE* gene); int clausesSatisfied(GENE* gene); int runGeneticAlgorithm(); void initializeGeneticAlgorithm(); int runGA(int argc, char** argv); void printSolution(int hasSolution); int literalsToSatisfyMostUnsatisfied(GENE* gene, int* tabuList); void copyGenes(GENE* parent1, GENE* parent2, GENE* child1, GENE* child2); int localSearchTabu(GENE* gene); int localSearchWithRandomFlipsTabu(GENE* gene); int localSearch(GENE* gene); int localSearchWalkSat(GENE* gene); #endif