optuna

Форк
0
63 строки · 1.8 Кб
1
import numpy as np
2
import pytest
3

4
import optuna
5

6

7
def test_wfg_2d() -> None:
8
    for n in range(2, 30):
9
        r = n * np.ones(2)
10
        s = np.asarray([[n - 1 - i, i] for i in range(n)])
11
        for i in range(n + 1):
12
            s = np.vstack((s, np.asarray([i, n - i])))
13
        np.random.shuffle(s)
14
        v = optuna._hypervolume.WFG().compute(s, r)
15
        assert v == n * n - n * (n - 1) // 2
16

17

18
def test_wfg_3d() -> None:
19
    n = 3
20
    r = 10 * np.ones(n)
21
    s = [np.hstack((np.zeros(i), [1], np.zeros(n - i - 1))) for i in range(n)]
22
    for _ in range(10):
23
        s.append(np.random.randint(1, 10, size=(n,)))
24
    o = np.asarray(s)
25
    np.random.shuffle(o)
26
    v = optuna._hypervolume.WFG().compute(o, r)
27
    assert v == 10**n - 1
28

29

30
def test_wfg_nd() -> None:
31
    for n in range(2, 10):
32
        r = 10 * np.ones(n)
33
        s = [np.hstack((np.zeros(i), [1], np.zeros(n - i - 1))) for i in range(n)]
34
        for _ in range(10):
35
            s.append(np.random.randint(1, 10, size=(n,)))
36
        o = np.asarray(s)
37
        np.random.shuffle(o)
38
        v = optuna._hypervolume.WFG().compute(o, r)
39
        assert v == 10**n - 1
40

41

42
def test_wfg_duplicate_points() -> None:
43
    n = 3
44
    r = 10 * np.ones(n)
45
    s = [np.hstack((np.zeros(i), [1], np.zeros(n - i - 1))) for i in range(n)]
46
    for _ in range(10):
47
        s.append(np.random.randint(1, 10, size=(n,)))
48
    o = np.asarray(s)
49
    v = optuna._hypervolume.WFG().compute(o, r)
50

51
    # Add an already existing point.
52
    o = np.vstack([o, o[-1]])
53

54
    np.random.shuffle(o)
55
    v_with_duplicate_point = optuna._hypervolume.WFG().compute(o, r)
56
    assert v == v_with_duplicate_point
57

58

59
def test_invalid_input() -> None:
60
    r = np.ones(3)
61
    s = np.atleast_2d(2 * np.ones(3))
62
    with pytest.raises(ValueError):
63
        _ = optuna._hypervolume.WFG().compute(s, r)
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.