-
Notifications
You must be signed in to change notification settings - Fork 0
/
dummy.go
39 lines (32 loc) · 918 Bytes
/
dummy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package mcts
import (
"math/rand"
"strconv"
)
// Copied from github.com/wenooij/model/dummy to use in tests.
type dummyAction int
func (s dummyAction) String() string { return strconv.FormatInt(int64(s), 10) }
type dummySearch struct {
BranchFactor int
depth, MaxDepth int
Rand *rand.Rand
}
func (s dummySearch) Expand(n int) []FrontierAction {
if s.MaxDepth > 0 && s.MaxDepth <= s.depth {
return nil
}
b := make([]FrontierAction, s.BranchFactor)
for i := range b {
b[i] = FrontierAction{Action: dummyAction(i)}
}
return b
}
func (s *dummySearch) Root() { s.depth = 0 }
func (s *dummySearch) Select(Action) bool { s.depth++; return true }
func (s *dummySearch) Hash() uint64 { return s.Rand.Uint64() }
func (s dummySearch) Score() Score[float64] {
return Score[float64]{
Counter: s.Rand.NormFloat64(),
Objective: func(x float64) float64 { return x },
}
}