www.pudn.com > dgpc.rar > mncommon.h
/*======================================================================+
| PGPC: Parallel Genetic Programming in C |
| (c) 1995 Genetic Algorithm Technology Corp. all rights reserved |
| written by David Andre |
+======================================================================*/
/*======================================================================+
| FILE: mncommon.h |
| DESCRIPTION: Various parallel parameters. |
| |
| REVISIONS: |
| Jan 24, 1995: Works as of today, no known bugs. |
+======================================================================*/
/*==============================+
| MACROS |
+==============================*/
#ifdef __MAIN__
#define EXTERN
#else
#define EXTERN extern
#endif
/* Debugging flags, etc etc */
#define REPORTACK_MODE 0
/* Appropriate #defines for sizes & types (maybe) */
#define NUMNEIGHBORS 4
#define MSGHDRTYPE int
#define MSGHDRSIZE 11
#define REPORTTYPE int
#define TXTSTRLEN 128
#define NUM_PROCESSORS 64
/* Symbolic names handy constants. */
#define TRUE 1
#define FALSE 0
/* Temporary #defines (should be read from a file eventually) */
#define PROGRAMTYPE Individual
#define PROGRAMSIZE 1
#define POPULATIONSIZE 10 /*Only used in int passing code*/
/* Non-atomic macros */
#define _PROGSIZE (PROGRAMSIZE*sizeof(PROGRAMTYPE))
#define _POPPTR get_pop_ptr()
#define _POPSIZE get_pop_size()
#define BOSS_NODE 667
/* Messages and commands */
/* boss to breeder(s) */
#define START_UP 101
#define SEND_STAT 102
#define SHUT_DOWN 103
#define SEND_POP 104
/* breeder(s) to boss */
#define BREEDER_REPORT 201
#define BREEDER_LONG_REPORT 202
#define HEARTBEAT 203
#define STOP_ACK 204
#define EUREKA 205
#define END_OF_GEN 206
#define I_QUIT 207
#define TEXT_STRING 208
#define STARTUP_MESSAGE 5901
#define FAST_HEARTBEAT_MESSAGE 5902
#define SLOW_HEARTBEAT_MESSAGE 5903
#define END_OF_GEN_MESSAGE 5904
#define EUREKA_MESSAGE 5905
#define TRACE_MESSAGE 5906
#define ERROR_MESSAGE 5907
#define BOATLOAD_MESSAGE 5908
#define STATUS_GOOD 0
#define STATUS_SLOW 1
#define STATUS_DANGER 2
#define STATUS_DEAD 3
#define STATUS_ERROR 4
/* system */
#define DONE 901
#define HELP_ME 911
#define NOT_FOR_ME 950
#define NOT_VALID_COMMAND 999
#define NUMCOMMANDS 6
#ifdef __MAIN__
#define CODEINIT \
{START_UP, SEND_STAT, SEND_POP, SHUT_DOWN, HELP_ME, DONE}
#define KEYSINIT \
{'g', 's', 'p', 'k', 'h', 'x'}
#define NAMEINIT \
{"go", "get stat n","get pop n","kill farm","help", "exit boss"}
int cmd_code[NUMCOMMANDS] = CODEINIT;
char cmd_keys[NUMCOMMANDS] = KEYSINIT;
char *cmd_name[NUMCOMMANDS] = NAMEINIT;
#else
extern int cmd_code[NUMCOMMANDS];
extern char cmd_keys[NUMCOMMANDS];
extern char *cmd_name[NUMCOMMANDS];
#endif
/*==============================+
| TYPE AND STRUCT DEFINITIONS |
+==============================*/
#define poptype Population *
/*
typedef struct {
PROGRAMTYPE individual[POPULATIONSIZE][PROGRAMSIZE];
int npop;
} poptype;
*/
typedef struct poor_cuban {
CompInd cargo[EXCHBUFSIZE];
} BoatLoad;
#define MESS_HEADER_INDEX_TYPE 0
#define MESS_HEADER_INDEX_LENGTH 1
#define MESS_HEADER_INDEX_NODE 2
#define MESS_HEADER_INDEX_GEN 3
#define MESS_HEADER_INDEX_IND 4
#define MESS_HEADER_INDEX_FITCASE 5
#define MESS_HEADER_INDEX_LOCATION 6
#define MESS_HEADER_INDEX_DIR 7
#define MESS_HEADER_INDEX_DEST 8
#define MESS_HEADER_INDEX_EXTRA 9
#define EAST 0;
#define NORTH 1;
#define SOUTH 2;
#define WEST 3;
/*==============================+
| GLOBAL DATA |
+==============================*/
/* flags */
EXTERN int g_in_message_header[8];
EXTERN int g_out_message_header[8];
EXTERN int g_outbufs_sent;
EXTERN int g_inbuf_ready[NUMNEIGHBORS];
EXTERN int g_stat_info_flag;