00001 #if !defined ( __SADE__ )
00002 #define __SADE__
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 sade
00037
00038
00039
00040
00041 {
00042 public:
00043 sade ( void );
00044 ~sade ( void );
00045 #if defined ( __PARALLEL__ )
00046 void run_master ( my_mpi *oM, double *assessment=NULL ) ;
00047 void run_slave ( my_mpi *oM );
00048 void CONFIGURATION_SLAVE ( void ) ;
00049 void EVALUATE_SLAVE ( void ) ;
00050 void EVALUATE_MASTER ( int start_id ) ;
00051 int to_continue_slave ( void ) ;
00052 #endif
00053 void run ( double *assessment=NULL );
00054 long vilog;
00055 long fitness_calls_limit;
00056
00057 private:
00058
00059 void new_point ( double* p );
00060 void configuration ( void );
00061 void EVALUATE_GENERATION ( long start );
00062 void SELECT ( void );
00063 void MUTATE ( void );
00064 void LOCAL_MUTATE ( void );
00065 void CROSS ( void );
00066 void FIRST_GENERATION ( void);
00067 void clear_pool ( void );
00068
00069 long to_continue ();
00070
00071
00072 void init_vilog ( void );
00073 long vilog_news ( void );
00074 void vilog_results ();
00075 void vilog_make_out ();
00076 void close_vilog ( void );
00077 #if defined ( __HAVE_KRESLITKO__ )
00078 kreslitko *Ko ;
00079 long running ;
00080 void open_graphics ( void );
00081 void draw_chromos ( double **och , long on );
00082 void draw_top ( void );
00083 long until_next_step ( void );
00084 void close_graphics ( void );
00085 double xmin, xmax, dx, ymin, ymax, dy;
00086 #endif
00087
00088
00089 public:
00090 long pool_rate;
00091 double radioactivity, local_radioactivity;
00092 double mutation_rate, mutagen_rate;
00093 double cross_rate;
00094 long gradient;
00095 obj_funct *F;
00096 randy RND;
00097
00098 private:
00099 long ActualSize, generation, fitness_call, PoolSize, SelectedSize;
00100 double *Force, *mutagen;
00101 long *origine, btg_or;
00102 matrix CH;
00103
00104 double *bsf, bsf_value, btg_value;
00105 int btg;
00106 long bsf_birth;
00107
00108 long ceraf ;
00109
00110 #if defined ( __PARALLEL__ )
00111 int mpi_mode ;
00112 my_mpi *M ;
00113 #endif
00114
00115 };
00116
00117 #endif // __SADE__
00118