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;