|
3 | 3 | import sys
|
4 | 4 | import time
|
5 | 5 |
|
| 6 | +import numpy as np |
6 | 7 | import pytest
|
7 | 8 |
|
8 |
| -from adaptive.learner import Learner1D, Learner2D |
| 9 | +from adaptive.learner import ( |
| 10 | + BalancingLearner, |
| 11 | + DataSaver, |
| 12 | + IntegratorLearner, |
| 13 | + Learner1D, |
| 14 | + Learner2D, |
| 15 | + SequenceLearner, |
| 16 | +) |
9 | 17 | from adaptive.runner import (
|
10 | 18 | AsyncRunner,
|
11 | 19 | BlockingRunner,
|
12 | 20 | SequentialExecutor,
|
| 21 | + auto_goal, |
13 | 22 | simple,
|
14 | 23 | stop_after,
|
15 | 24 | with_distributed,
|
@@ -150,3 +159,40 @@ def test_default_executor():
|
150 | 159 | learner = Learner1D(linear, (-1, 1))
|
151 | 160 | runner = AsyncRunner(learner, npoints_goal=10)
|
152 | 161 | asyncio.get_event_loop().run_until_complete(runner.task)
|
| 162 | + |
| 163 | + |
| 164 | +def test_auto_goal(): |
| 165 | + learner = Learner1D(linear, (-1, 1)) |
| 166 | + simple(learner, auto_goal(4, learner)) |
| 167 | + assert learner.npoints == 4 |
| 168 | + |
| 169 | + learner = Learner1D(linear, (-1, 1)) |
| 170 | + simple(learner, auto_goal(0.5, learner)) |
| 171 | + assert learner.loss() <= 0.5 |
| 172 | + |
| 173 | + learner = SequenceLearner(linear, np.linspace(-1, 1)) |
| 174 | + simple(learner, auto_goal(None, learner)) |
| 175 | + assert learner.done() |
| 176 | + |
| 177 | + learner = IntegratorLearner(linear, bounds=(0, 1), tol=0.1) |
| 178 | + simple(learner, auto_goal(None, learner)) |
| 179 | + assert learner.done() |
| 180 | + |
| 181 | + learner = Learner1D(linear, (-1, 1)) |
| 182 | + learner = DataSaver(learner, lambda x: x) |
| 183 | + simple(learner, auto_goal(4, learner)) |
| 184 | + assert learner.npoints == 4 |
| 185 | + |
| 186 | + learner1 = Learner1D(linear, (-1, 1)) |
| 187 | + learner2 = Learner1D(linear, (-2, 2)) |
| 188 | + balancing_learner = BalancingLearner([learner1, learner2]) |
| 189 | + simple(balancing_learner, auto_goal(4, balancing_learner)) |
| 190 | + assert learner1.npoints == 4 and learner2.npoints == 4 |
| 191 | + |
| 192 | + learner1 = Learner1D(linear, bounds=(0, 1)) |
| 193 | + learner1 = DataSaver(learner1, lambda x: x) |
| 194 | + learner2 = Learner1D(linear, bounds=(0, 1)) |
| 195 | + learner2 = DataSaver(learner2, lambda x: x) |
| 196 | + balancing_learner = BalancingLearner([learner1, learner2]) |
| 197 | + simple(balancing_learner, auto_goal(10, balancing_learner)) |
| 198 | + assert learner1.npoints == 10 and learner2.npoints == 10 |
0 commit comments