コード例 #1
0
def test_only_returns_new_points():
    learner = AverageLearner(lambda x: x, atol=None, rtol=0.01)

    # Only tell it n = 5...10
    for i in range(5, 10):
        learner.tell(i, 1)

    learner.tell_pending(0)  # This means it shouldn't return 0 anymore

    assert learner.ask(1)[0][0] == 1
    assert learner.ask(1)[0][0] == 2
    assert learner.ask(1)[0][0] == 3
    assert learner.ask(1)[0][0] == 4
    assert learner.ask(1)[0][0] == 10
コード例 #2
0
def test_min_npoints():
    def constant_function(seed):
        return 0.1

    for min_npoints in [1, 2, 3]:
        learner = AverageLearner(constant_function,
                                 atol=0.01,
                                 rtol=0.01,
                                 min_npoints=min_npoints)
        simple(learner, lambda l: l.loss() < 1)
        assert learner.npoints >= max(2, min_npoints)
コード例 #3
0
def test_avg_std_and_npoints():
    learner = AverageLearner(lambda x: x, atol=None, rtol=0.01)

    for i in range(300):
        # This will add 5000 points at random values of n.
        # It could try to readd already evaluated points.

        n = random.randint(0, 2 * 300)
        value = random.random()

        # With 10% chance None is added to simulate asking that point.
        if value < 0.9:
            learner.tell(n, value)
        else:
            learner.tell_pending(n)

        if i > 2 and i % 10 == 0:
            # We need more than two points for 'learner.std' to be defined.
            values = np.array(list(learner.data.values()))
            std = np.sqrt(sum((values - values.mean())**2) / (len(values) - 1))
            assert learner.npoints == len(learner.data)
            assert abs(learner.sum_f - values.sum()) < 1e-13
            assert abs(learner.std - std) < 1e-13
コード例 #4
0
def test_zero_mean():
    # see https://github.com/python-adaptive/adaptive/issues/275
    learner = AverageLearner(None, rtol=0.01)
    learner.tell(0, -1)
    learner.tell(1, 1)
    learner.loss()