source: tags/svn.1.5.4/PARSIMONY/GA_genetic.hxx

Last change on this file was 7812, checked in by westram, 13 years ago

merge from dev [7751] [7752]

  • updated many old-style typedefs (typedef struct/enum)
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 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
7enum AP_init_status {
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};
15
16enum GA_JOB_MODE {
17    GA_CROSSOVER,
18    GA_KERNIGHAN,
19    GA_CREATEJOBS,
20    GA_NNI,
21    GA_NONE
22};
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 mode;
43    void  printl() {
44        cout << "JOB Clu0 " << cluster0 <<
45            " tr " << id0 <<
46            " *  CLu1 " << cluster1 << " tr " << id1 <<
47            " * mode " << mode << " 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, char *dest, long mode);
91    AP_tree  *read_tree_rek(char **data);
92    AP_ERR  *write_tree(GBDATA *gb_tree, GA_tree *tree);
93    GA_tree *read_tree(GBDATA *gb_tree, long tree_id);
94    AP_ERR *create_job_container(GA_job *job);
95    GBDATA *get_cluster(GBDATA * container, int cluster);
96    GBDATA *get_tree(GBDATA *container, long tree_id);
97    long get_treeid(GBDATA *gbtree);
98
99    AP_ERR * read_presets();
100public:
101    GA_genetic();
102    ~GA_genetic();
103    void init(GBDATA *gbmain);
104    void init_first(GBDATA *gbmain); // dummy zum testen der db eintraege generiert
105    void exit();
106    // for errorfile
107    FILE *fout;
108
109    AP_ERR  *put_start_tree(AP_tree *tree, const long name, int  cluster);
110    AP_ERR *remove_job(GBDATA *gb_cluster);
111    AP_ERR *delete_job(GBDATA *gb_job);
112    AP_ERR *delete_tree(GBDATA *gb_cluster, GBDATA *gb_tree);
113    AP_ERR *create_jobs(GA_tree *tree, int cluster);
114    GA_tree *get_start_tree(int cluster);
115    AP_ERR  *put_opt_tree(char *tree, int cluster);
116    GA_job  *get_job(int cluster);
117    AP_ERR *put_job(int cluster, GA_job *job);
118    AP_ERR * put_optimized(GA_tree *tree, int cluster);
119
120    int     getMaxCluster() { return max_cluster; };
121    int     getMaxJob()     { return max_jobs; };
122};
Note: See TracBrowser for help on using the repository browser.