source: branches/2929_PrioritizedGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.PGE/3.3/src/go-pge/pge/pge_init_method_1.go @ 16620

Last change on this file since 16620 was 16620, checked in by hmaislin, 9 months ago

#2929: Reorganized folder structure for make script, removed explicit marshalling, erased go-side logging

File size: 2.4 KB
Line 
1package pge
2
3import (
4  "fmt"
5
6  probs "go-pge/problems"
7  expr "go-symexpr"
8)
9
10func (PS *PgeSearch) GenInitExprMethod1() *probs.ReportQueue {
11  fmt.Printf("generating initial expressions\n")
12
13  GP := PS.cnfg.treecfg
14
15  eList := make([]expr.Expr, 0)
16
17  for _, T := range GP.Roots {
18    switch T.ExprType() {
19    case expr.ADD:
20      eList = append(eList, PS.GenInitExprAddMethod1()[:]...)
21    case expr.MUL:
22      eList = append(eList, PS.GenInitExprMulMethod1()[:]...)
23    case expr.DIV:
24      eList = append(eList, PS.GenInitExprDivMethod1()[:]...)
25    default:
26      fmt.Printf("Error in GenInitExpr: unknown ROOT %d\n", T)
27    }
28  }
29
30  exprs := probs.NewReportQueue()
31  // exprs.SetSort(PS.cnfg.sortType)
32  exprs.SetSort(probs.PESORT_PARETO_TST_ERR)
33 
34  for i, e := range eList {
35    fmt.Printf("%d:  %v\n", i, e)
36   
37    serial := make([]int, 0, 64)
38    serial = e.Serial(serial)
39    PS.Trie.InsertSerial(serial)
40    // on train data
41
42    //fmt.Printf("RegressExpr:  e: %v  || PS.prob: %v\n", e, PS.prob)
43    re := RegressExpr(e, PS.prob)  //DER DO
44    //fmt.Printf("RegressExpr:  e: %v  || PS.prob: %v || %v \n", e, PS.prob, re)
45   
46    re.SetUnitID(i)
47    exprs.Push(re)
48  }
49
50  exprs.Sort()
51  return exprs
52}
53
54func (PS *PgeSearch) GenInitExprAddMethod1() []expr.Expr {
55
56  exprs := make([]expr.Expr, 0)
57
58  // WARNING adding a single coefficient results in the same traversal but with the added extra coefficient
59  cf := new(expr.Constant)
60  cf.P = 1
61  af := new(expr.Add)
62  af.Insert(cf)
63  exprs = append(exprs, af)
64
65  for _, i := range PS.cnfg.treecfg.UsableVars {
66    c := new(expr.Constant)
67    c.P = -1
68    v := new(expr.Var)
69    v.P = i
70
71    m := expr.NewMul()
72    m.Insert(c)
73    m.Insert(v)
74
75    a := expr.NewAdd()
76    a.Insert(m)
77    exprs = append(exprs, a)
78  }
79
80  fmt.Println("Initial Add:  ", exprs)
81  return exprs
82}
83
84func (PS *PgeSearch) GenInitExprMulMethod1() []expr.Expr {
85  exprs := make([]expr.Expr, 0)
86
87  for _, i := range PS.cnfg.treecfg.UsableVars {
88    c := new(expr.Constant)
89    c.P = -1
90    v := new(expr.Var)
91    v.P = i
92
93    m := expr.NewMul()
94    m.Insert(c)
95    m.Insert(v)
96
97    exprs = append(exprs, m)
98  }
99
100  fmt.Println("Initial Mul:  ", exprs)
101  return exprs
102}
103
104func (PS *PgeSearch) GenInitExprDivMethod1() []expr.Expr {
105  exprs := make([]expr.Expr, 0)
106
107  for _, i := range PS.cnfg.treecfg.UsableVars {
108    c := new(expr.Constant)
109    c.P = -1
110    v := new(expr.Var)
111    v.P = i
112
113    d := new(expr.Div)
114    d.Numer = c
115    d.Denom = v
116
117    exprs = append(exprs, d)
118  }
119
120  fmt.Println("Initial Div:  ", exprs)
121  return exprs
122}
Note: See TracBrowser for help on using the repository browser.