source: tags/initial/PARSIMONY/GA_genetic.hxx

Last change on this file was 2, checked in by oldcode, 24 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1
2#define CLUSTER_ANZ_MAX 10
3#define GA_SAFETY 40
4// max loop repeat count
5#define GB_read_APfloat (AP_FLOAT)GB_read_float
6#define GB_write_APfloat GB_write_float
7
8typedef enum {
9    INIT_NONE = 0,
10    INIT_MAIN =1,
11    INIT_START= 2,
12    INIT_OPT  =4,
13    INIT_JOB  =8,
14    INIT_ALL = 15
15} AP_init_status;
16
17typedef enum {
18    GA_CROSSOVER,
19    GA_KERNIGHAN,
20    GA_CREATEJOBS,
21    GA_NNI,
22    GA_NONE
23} GA_JOB_MODE;
24
25class GA_tree {
26public:
27        int ref_count;
28        AP_FLOAT criteria;
29        AP_tree_nlen *tree;
30        long id;
31       
32};
33
34class GA_job {
35public:
36        AP_FLOAT criteria;
37        int cluster0;
38        int cluster1;
39        GA_tree * tree0;        // fuer return
40        GA_tree * tree1;
41        long id0;
42        long id1;
43        GA_JOB_MODE modus;
44        void  printl() { 
45                cout << "JOB Clu0 " << cluster0 << 
46                        " tr " << id0 <<
47                        " *  CLu1 " << cluster1 << " tr " << id1 <<
48                           " * mode " << modus << " crit " << criteria
49                        << "\n";cout.flush(); };
50        void calcCrit(AP_FLOAT crit0,AP_FLOAT crit1) {
51                criteria = crit0 + crit1; };
52};
53
54
55class GA_genetic  {
56        AP_init_status init_status;
57        AP_tree *tree_prototype;
58        // presets
59        int min_job; // min jobs per cluster before removing jobs
60        int max_cluster;// max cluster
61        int max_jobs;// max jobs
62        int maxTree;// max trees per clustergbp
63        int jobCount;
64        AP_FLOAT bestTree;
65
66        int jobOpt;
67        int jobCrossover;
68        int jobOther;
69        int jobKL;
70               
71        // array of trees in cluster
72        long  **treelist; // treeids
73        int *treePerCluster; // clusterid
74       
75        int clusterCount;
76       
77       
78        // stored DB pointers (which won't change)
79        GBDATA *gb_tree_start;
80        GBDATA *gb_treeName;
81        GBDATA *gb_tree_opt;
82        GBDATA *gb_joblist;
83        GBDATA *gb_genetic;
84        GBDATA *gb_main;
85        GBDATA *gb_presets;
86        GBDATA *gb_jobCount;
87        GBDATA *gb_bestTree;
88        GBDATA *gb_maxTree;
89        // writes and reads compressd tree from database
90        double AP_atof(char *str);
91        char * write_tree_rek( AP_tree *node,
92                          char *dest, long mode);
93        AP_tree  *read_tree_rek(char **data);
94        AP_ERR  *write_tree(GBDATA *gb_tree,GA_tree *tree);   
95        GA_tree *read_tree(GBDATA *gb_tree,long tree_id);
96        AP_ERR *create_job_container(GA_job *job);
97        GBDATA *get_cluster(GBDATA * container,int cluster); 
98        GBDATA *get_tree(GBDATA *container,long tree_id);
99        long get_treeid(GBDATA *gbtree);
100
101        AP_ERR * read_presets();
102public:
103         GA_genetic();
104         ~GA_genetic();
105        void init(GBDATA *gbmain);
106        void init_first(GBDATA *gbmain); // dummy zum testen der db eintraege generiert
107        void exit();
108        // for errorfile
109        FILE *fout;
110
111        AP_ERR  *put_start_tree(AP_tree *tree,const long name, int  cluster);
112        AP_ERR *remove_job(GBDATA *gb_cluster);
113        AP_ERR *delete_job(GBDATA *gb_job);
114        AP_ERR *delete_tree(GBDATA *gb_cluster,GBDATA *gb_tree);
115        AP_ERR *create_jobs(GA_tree *tree,int cluster);
116        GA_tree *get_start_tree(int cluster);
117        AP_ERR  *put_opt_tree(char *tree,int cluster);
118        GA_job  *get_job(int cluster);
119        AP_ERR *put_job(int cluster,GA_job *job);
120        AP_ERR * put_optimized(GA_tree *tree,int cluster);
121       
122        int     getMaxCluster() {return max_cluster;};
123        int     getMaxJob()     {return max_jobs;};
124};
125
126
Note: See TracBrowser for help on using the repository browser.