|
23 | 23 | @test popexp[1] == :(x + 1) |
24 | 24 |
|
25 | 25 | # recursive helper functions |
| 26 | + h = 4 |
26 | 27 | gtr = TreeGP(pop, terms, funcs, maxdepth=2, initialization=:grow) |
27 | | - Random.seed!(rng, 1) |
28 | | - tmp = rand(rng, gtr, 3) |
29 | | - Random.seed!(rng, 1) |
30 | | - gt = rand(rng, gtr, 3) |
| 28 | + Random.seed!(rng, 8237463746) |
| 29 | + tmp = rand(rng, gtr, h) |
| 30 | + Random.seed!(rng, 8237463746) |
| 31 | + gt = rand(rng, gtr, h) |
31 | 32 | @test tmp == gt |
32 | | - @test Evolutionary.nodes(gt) < 15 |
33 | | - @test Evolutionary.height(gt) <= 3 |
34 | | - @test length(gt) < 15 |
35 | | - ft = rand(rng, TreeGP(pop, terms, funcs, maxdepth=2, initialization=:full), 3) |
36 | | - @test Evolutionary.nodes(ft) == 15 |
37 | | - @test Evolutionary.height(ft) == 3 |
38 | | - @test length(ft) == 15 |
39 | | - @test Evolutionary.depth(ft, :x) == 3 |
| 33 | + @test Evolutionary.nodes(gt) < 2^(h+1)-1 |
| 34 | + @test Evolutionary.height(gt) <= h |
| 35 | + @test length(gt) < 2^(h+1)-1 |
| 36 | + ft = rand(rng, TreeGP(pop, terms, funcs, maxdepth=2, initialization=:full), h) |
| 37 | + @test Evolutionary.nodes(ft) == 2^(h+1)-1 |
| 38 | + @test Evolutionary.height(ft) == h |
| 39 | + @test length(ft) == 2^(h+1)-1 |
| 40 | + @test Evolutionary.depth(ft, :x) == 4 |
40 | 41 | ft[3] = :z |
41 | | - @test Evolutionary.depth(ft, :z) == 3 |
| 42 | + @test Evolutionary.depth(ft, :z) == 4 |
42 | 43 | @test Evolutionary.depth(ft, ft) == 0 |
43 | 44 | @test Evolutionary.depth(ft, ft[3]) > 0 |
44 | 45 | @test Evolutionary.depth(ft, :w) == -1 |
|
116 | 117 | ys = fitfun.(rg) |
117 | 118 | function fitobj(expr) |
118 | 119 | ex = Evolutionary.Expression(expr) |
119 | | - #ex = Evolutionary.Expression(expr, Dict(:x=>1)) |
120 | 120 | yy = ex.(rg) |
121 | 121 | sum(v->isnan(v) ? 1.0 : v, abs2.(ys .- yy) )/length(rg) |
122 | 122 | end |
123 | 123 |
|
124 | 124 | Random.seed!(rng, 42) |
125 | 125 | res = Evolutionary.optimize(fitobj, |
126 | | - TreeGP(25, Terminal[:x, randn], Function[+,-,*,Evolutionary.aq], |
| 126 | + TreeGP(50, Terminal[:x, randn], Function[+,-,*,Evolutionary.aq], |
127 | 127 | mindepth=1, |
128 | 128 | maxdepth=3, |
129 | 129 | simplify = Evolutionary.simplify!, |
130 | 130 | selection = tournament(3), |
131 | 131 | ), |
132 | 132 | Evolutionary.Options(show_trace=false, rng=rng, iterations=50) |
133 | 133 | ) |
134 | | - @test minimum(res) < 1.1 |
| 134 | + @test minimum(res) < 1.5 |
135 | 135 |
|
136 | 136 | end |
137 | 137 |
|
0 commit comments