source: tags/cvs_2_svn/PARSIMONY/GA_genetic.hxx

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