00001 #if !defined ( __GRADE__ )
00002 #define __GRADE__
00003
00004 #if !defined ( __general_h_ )
00005 #include "general.h"
00006 #endif
00007
00008 #if !defined ( __OBJECTIVE_FUNCTION__ )
00009 #include "obj_funct.h"
00010 #endif
00011
00012 #include <math.h>
00013 #include <string.h>
00014
00015 #include <randy.h>
00016 #include "matrix.h"
00017
00018 #if defined ( __HAVE_KRESLITKO__ )
00019
00020 #include <kreslitko.h>
00021
00022 #define CloseSignal 101
00023 #define NextSignal 102
00024 #define StartStopSignal 103
00025 #define PostScriptSignal 104
00026
00027 #endif
00028
00029 #if defined ( __PARALLEL__ )
00030 #include "my_mpi.h"
00031 #endif
00032
00033
00034 extern randy RND ;
00035
00036 class grade
00037 {
00038 public:
00039 grade ( void );
00040 ~grade ( void );
00041 void run ( double *assessment=NULL );
00042 long vilog;
00043 long vilog_gati;
00044 long fitness_calls_limit;
00045 double cross_limit;
00046
00047 #if defined ( __PARALLEL__ )
00048 void run_master ( my_mpi *oM, double *assessment=NULL ) ;
00049 void run_slave ( my_mpi *oM );
00050 void CONFIGURATION_SLAVE ( void ) ;
00051 void EVALUATE_SLAVE ( void ) ;
00052 void EVALUATE_MASTER ( int start_id ) ;
00053 int to_continue_slave ( void ) ;
00054 #endif
00055
00056
00057 private:
00058 void new_point ( double* p );
00059 void configuration ( void );
00060 void EVALUATE_GENERATION ( long start );
00061 void SELECT ( void );
00062 void MUTATE ( void );
00063 void LOCAL_MUTATE ( void );
00064 void CROSS ( void );
00065 void FIRST_GENERATION ( void);
00066 void clear_pool ( void );
00067 long to_continue ();
00068
00069 #if defined ( __HAVE_KRESLITKO__ )
00070 kreslitko *Ko ;
00071 long running ;
00072 void open_graphics ( void );
00073 void draw_chromos ( double **och , long on );
00074 void draw_top ( void );
00075 long until_next_step ( void );
00076 void close_graphics ( void );
00077 double xmin, xmax, dx, ymin, ymax, dy;
00078 #endif
00079
00080
00081 public:
00082 long pool_rate;
00083 double radioactivity, local_radioactivity;
00084 double mutation_rate, mutagen_rate;
00085 double cross_rate;
00086 obj_funct *F;
00087 randy RND;
00088
00089 private:
00090 long ActualSize, generation, fitness_call, PoolSize, SelectedSize;
00091 double *Force, *mutagen;
00092 long *origine, btg_or;
00093 matrix CH;
00094
00095 double *bsf, bsf_value, btg_value;
00096 int btg;
00097 long bsf_birth;
00098
00099 long ceraf ;
00100
00101 #if defined ( __PARALLEL__ )
00102 int mpi_mode ;
00103 my_mpi *M ;
00104 #endif
00105
00106
00107 void init_vilog ( void );
00108 long vilog_news ( void );
00109 void vilog_results ();
00110 void vilog_make_out ();
00111 void close_vilog ( void );
00112 #if defined ( __HAVE_KRESLITKO__ )
00113 kreslitko *Ko ;
00114 long running ;
00115 void open_graphics ( void );
00116 void draw_chromos ( double **och , long on );
00117 void draw_top ( void );
00118 long until_next_step ( void );
00119 void close_graphics ( void );
00120 double xmin, xmax, dx, ymin, ymax, dy;
00121 #endif
00122
00123 };
00124
00125 #endif // __GRADE__