1 | package main
|
---|
2 |
|
---|
3 | import (
|
---|
4 | "fmt"
|
---|
5 | "strings"
|
---|
6 |
|
---|
7 | probs "github.com/verdverm/go-pge/problems"
|
---|
8 | expr "github.com/verdverm/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 | }
|
---|