int state4() /* Do what needs to be done in state 4. pre: State 4 means the variator has to terminate. post: Free all memory. Return value == 0 if successful, == 1 if unspecified errors happened, == 2 if file reading failed. */ { /**********| added for DTLZ |**************/ int result; result = read_arc(); if (0 == result) /* arc file correctly read this means it was not read before, e.g., in a reset. */ { write_output_file(); } /**********| addition for DTLZ end |*******/ return (0); }
int state8() /* Do what needs to be done in state 8. pre: State 8 means that the variator needs to reset and get ready to start again in state 0. post: Get ready to start again in state 0. Return value == 0 if successful, == 1 if unspecified errors happened, == 2 if file reading failed. */ { /**********| added for DTLZ |**************/ int result; gen = 1; result = read_arc(); if (0 == result) /* arc file correctly read this means it was not read before */ { write_output_file(); } /**********| addition for DTLZ end |*******/ return (0); }
/* * Read the arcs from the given file into the array of arcs. * * Return 1 on success and 0 on failure. */ static int read_arcs(FILE *f, struct arc arcs[], unsigned int num_arcs){ unsigned int i; int err; for (i = 0; i < num_arcs; i += 1) { err = read_arc(f, &arcs[i]); if (err) { break; } } return err; }
int state2() /* Do what needs to be done in state 2. pre: The global variable 'mu' contains the number of indiviuals you need to read using 'read_sel()'. The global variable 'lambda' contains the number of individuals you need to create by variation of the individuals specified the 'sel' file. post: Optionally call read_arc() in order to delete old uncessary individuals from the global population. read_sel() called 'lambda' children generated from the 'mu' parents Children added to the global population using add_individual(). Information about children written to the 'var' file using write_var(). Return value == 0 if successful, == 1 if unspecified errors happened, == 2 if file reading failed. */ { int *parent_identities, *offspring_identities; /* array of identities */ int result; /* stores return values of called functions */ parent_identities = (int *) malloc(mu * sizeof(int)); if (parent_identities == NULL) { log_to_file(log_file, __FILE__, __LINE__, "variator out of memory"); return (1); } offspring_identities = (int *) malloc(lambda * sizeof(int)); if (offspring_identities == NULL) { log_to_file(log_file, __FILE__, __LINE__, "variator out of memory"); return (1); } result = read_sel(parent_identities); if (result != 0) /* if some file reading error occurs, return 2 */ return (2); result = read_arc(); if (result != 0) /* if some file reading error occurs, return 2 */ return (2); /**********| added for DTLZ |**************/ result = variate(parent_identities, offspring_identities); if (result != 0) return (1); gen++; /**********| addition for DTLZ end |*******/ result = write_var(offspring_identities); if (result != 0) { log_to_file(log_file, __FILE__, __LINE__, "couldn't write var"); free(offspring_identities); free(parent_identities); return (1); } free(offspring_identities); free(parent_identities); return (0); }