CODeME
global.h
1 #define _CRT_SECURE_NO_WARNINGS
2 #ifndef _GLOBAL_H_
3 #define _GLOBAL_H_ 1
4 
5 #define INF 1.0e14
6 #define EPS 1.0e-10
7 #define E 2.71828182845905
8 #define PI 3.14159265358979
9 #define GNUPLOT_COMMAND "gnuplot -persist"
10 
11 typedef struct
12 {
13  int rank;
14  double constr_violation;
15  double *xreal;
16  int **gene;
17  double *xbin;
18  double *obj;
19  double *constr;
20  double realvar_crowd_dist;
21  double binvar_crowd_dist;
22  double obj_crowd_dist;
23  double crowd_dist;
24 } individual;
25 
26 typedef struct
27 {
28  individual *ind;
29 } population;
30 
31 typedef struct lists
32 {
33  int index;
34  struct lists *parent;
35  struct lists *child;
36 } list;
37 
38 extern int nreal;
39 extern int nbin;
40 extern int nobj;
41 extern int ncon;
42 extern int popsize;
43 extern double pcross_real;
44 extern double pcross_bin;
45 extern double pmut_real;
46 extern double pmut_bin;
47 extern double eta_c;
48 extern double eta_m;
49 extern int ngen;
50 extern int nbinmut;
51 extern int nrealmut;
52 extern int nbincross;
53 extern int nrealcross;
54 extern int *nbits;
55 extern double *min_realvar;
56 extern double *max_realvar;
57 extern double *min_binvar;
58 extern double *max_binvar;
59 extern double *min_obj;
60 extern double *max_obj;
61 extern double *epsilon;
62 extern int bitlength;
63 extern double delta;
64 extern int mate;
65 extern int input_type;
66 extern int run_mode;
67 extern int var_option;
68 extern int obj_option;
69 extern int frequency;
70 extern int var1;
71 extern int obj1;
72 extern int obj2;
73 extern int obj3;
74 extern int angle1;
75 extern int angle2;
76 extern int choice;
77 
78 void allocate_memory_pop (population *, int);
79 void allocate_memory_ind (individual *);
80 void deallocate_memory_pop (population *, int);
81 void deallocate_memory_ind (individual *);
82 
83 void crossover (individual *, individual *, individual *, individual *);
84 void realcross (individual *, individual *, individual *, individual *);
85 void bincross (individual *, individual *, individual *, individual *);
86 
87 void assign_crowding_distance_list (population *, list *, int);
88 void assign_crowding_distance_list_obj (population *, list *, int);
89 void assign_crowding_distance_list_realvar (population *, list *, int);
90 void assign_crowding_distance_list_binvar (population *, list *, int);
91 void assign_crowding_distance_indices (population *, int, int);
92 void assign_crowding_distance_indices_obj (population *, int, int);
93 void assign_crowding_distance_indices_realvar (population *, int, int);
94 void assign_crowding_distance_indices_binvar (population *, int, int);
95 
96 void decode_pop (population *);
97 void decode_ind (individual *);
98 
99 void onthefly_display (population *, FILE *, int);
100 
101 int check_loose_dominance (individual *, individual *);
102 int check_dominance (individual *, individual *);
103 void define_epsilon (population *, int , double *);
104 
105 void evaluate_pop (population *);
106 void evaluate_ind (individual *);
107 
108 void fill_nondominated_sort (population *, population *);
109 void crowding_fill (population *, population *, int , int , list *);
110 
111 void ga_optimizer(void);
112 
113 void input(void);
114 
115 void initialize_pop (population *);
116 void initialize_random_pop (population *);
117 void initialize_latin_pop (population *);
118 void initialize_file_pop (population *);
119 
120 void insert (list *, int);
121 list* del (list *);
122 
123 void merge(population *, population *, population *);
124 void copy_ind (individual *, individual *);
125 
126 void mutation_pop (population *);
127 void mutation_ind (individual *);
128 void bin_mutate_ind (individual *);
129 void real_mutate_ind (individual *);
130 
131 void output (FILE *, FILE *, FILE *, FILE *, FILE *);
132 
133 void pdefinit(void);
134 
135 void test_problem (double *, double *, int **, double *, double *);
136 
137 void assign_rank_and_crowding_distance (population *);
138 
139 void report_pop (population *, FILE *);
140 void report_feasible (population *, FILE *);
141 void report_var (population *, FILE *);
142 void report_obj (population *, FILE *);
143 
144 void quicksort_front_obj(population *, int , int *, int);
145 void q_sort_front_obj(population *, int , int *, int , int );
146 void quicksort_front_realvar(population *, int , int *, int );
147 void q_sort_front_realvar(population *, int , int *, int , int );
148 void quicksort_front_binvar(population *, int , int *, int );
149 void q_sort_front_binvar(population *, int , int *, int , int );
150 void quicksort_dist(population *, int *, int );
151 void q_sort_dist(population *, int *, int , int );
152 
153 void selection (population *, population *);
154 void restricted_selection (population *, population *);
155 individual* tournament (individual *, individual *);
156 list* search_nearest (population *, list *, list *, double *, double *, double *, double *);
157 list* search_second_nearest (population *, list *, list *, list *, double *, double *, double *, double *);
158 double calc_distance (population *, list *, list *, double *, double *, double *, double *);
159 
160 double maximum (double , double);
161 double minimum (double , double);
162 double square (double);
163 double modulus (double *, int);
164 double dot (double *, double *, int);
165 double mean (double *, int);
166 
167 #endif
Definition: global.h:11
Definition: global.h:31
Definition: global.h:26