1 | package main |
---|
2 | |
---|
3 | import ( |
---|
4 | "fmt" |
---|
5 | "strings" |
---|
6 | |
---|
7 | probs "go-pge/problems" |
---|
8 | expr "go-symexpr" |
---|
9 | ) |
---|
10 | |
---|
11 | func genBenchmark(probname string) { |
---|
12 | fmt.Printf("Generating files for %s\n", probname) |
---|
13 | bname := probname[strings.Index(probname, ":")+1:] |
---|
14 | fmt.Printf("bname: '%s'\n", bname) |
---|
15 | benches := probs.BenchmarkList |
---|
16 | switch bname { |
---|
17 | case "all": |
---|
18 | for i := 0; i < len(benches); i++ { |
---|
19 | fmt.Printf("bm: %v\n", benches[i]) |
---|
20 | bname = benches[i].Name |
---|
21 | symprob := probs.GenBenchmark(benches[i]) |
---|
22 | symprob.Train[0].WritePointSet("data/benchmark/" + bname + ".trn") |
---|
23 | symprob.Test[0].WritePointSet("data/benchmark/" + bname + ".tst") |
---|
24 | fmt.Println() |
---|
25 | } |
---|
26 | case "list": |
---|
27 | printBenchNames() |
---|
28 | default: |
---|
29 | i := 0 |
---|
30 | for ; i < len(benches); i++ { |
---|
31 | if benches[i].Name == bname { |
---|
32 | fmt.Printf("bm: %v\n", benches[i]) |
---|
33 | symprob := probs.GenBenchmark(benches[i]) |
---|
34 | symprob.Train[0].WritePointSet("data/benchmark/" + bname + ".trn") |
---|
35 | symprob.Test[0].WritePointSet("data/benchmark/" + bname + ".tst") |
---|
36 | fmt.Println() |
---|
37 | return |
---|
38 | } |
---|
39 | } |
---|
40 | if i == len(benches) { |
---|
41 | fmt.Printf("benchmark problem not found: %s\n", probname) |
---|
42 | printBenchNames() |
---|
43 | } |
---|
44 | } |
---|
45 | |
---|
46 | } |
---|
47 | |
---|
48 | func printBenchNames() { |
---|
49 | benches := probs.BenchmarkList |
---|
50 | fmt.Printf("Available Benchmarks: |%d|\n[ %s", len(benches), benches[0].Name) |
---|
51 | for i := 0; i < len(benches); i++ { |
---|
52 | fmt.Printf(", %s", benches[i].Name) |
---|
53 | } |
---|
54 | fmt.Println(" ]") |
---|
55 | } |
---|
56 | |
---|
57 | func printBenchLatex() { |
---|
58 | |
---|
59 | for _, B := range probs.BenchmarkList { |
---|
60 | |
---|
61 | varNames := make([]string, 0) |
---|
62 | for _, v := range B.TrainVars { |
---|
63 | // fmt.Printf(" %v\n", v) |
---|
64 | varNames = append(varNames, v.Name) |
---|
65 | } |
---|
66 | eqn := expr.ParseFunc(B.FuncText, varNames) |
---|
67 | sort := eqn.Clone() |
---|
68 | rules := expr.DefaultRules() |
---|
69 | rules.GroupAddTerms = false |
---|
70 | sort = sort.Simplify(rules) |
---|
71 | |
---|
72 | latex := sort.Latex(varNames, nil, nil) |
---|
73 | |
---|
74 | fmt.Println(B.Name, " \t&\t $", latex, "$ \\\\") |
---|
75 | } |
---|
76 | } |
---|