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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Import standard library
from collections import namedtuple
# Import modules
import numpy as np
import pytest
# Import from pyswarms
from pyswarms.utils.functions import single_obj as fx
def test_ackley_output(common_minima):
"""Tests ackley function output."""
assert np.isclose(fx.ackley(common_minima), np.zeros(3)).all()
def test_beale_output(common_minima2):
"""Tests beale function output."""
assert np.isclose(fx.beale([3, 0.5] * common_minima2), np.zeros(3)).all()
def test_booth_output(common_minima2):
"""Test booth function output."""
assert np.isclose(fx.booth([1, 3] * common_minima2), np.zeros(3)).all()
def test_bukin6_output(common_minima2):
"""Test bukin function output."""
assert np.isclose(fx.bukin6([-10, 1] * common_minima2), np.zeros(3)).all()
@pytest.mark.parametrize(
"x",
[
np.array(
[
[1.34941, -1.34941],
[1.34941, 1.34941],
[-1.34941, 1.34941],
[-1.34941, -1.34941],
]
)
],
)
@pytest.mark.parametrize(
"minima", [np.array([-2.06261, -2.06261, -2.06261, -2.06261])]
)
def test_crossintray_output(x, minima):
"""Tests crossintray function output."""
assert np.isclose(fx.crossintray(x), minima).all()
def test_easom_output(common_minima2):
"""Tests easom function output."""
assert np.isclose(
fx.easom([np.pi, np.pi] * common_minima2), (-1 * np.ones(3))
).all()
def test_eggholder_output(common_minima2):
"""Tests eggholder function output."""
assert np.isclose(
fx.eggholder([512, 404.3219] * common_minima2),
(-959.6407 * np.ones(3)),
).all()
def test_goldstein_output(common_minima2):
"""Tests goldstein-price function output."""
assert np.isclose(
fx.goldstein([0, -1] * common_minima2), (3 * np.ones(3))
).all()
@pytest.mark.parametrize(
"x",
[
np.array(
[
[3.0, 2.0],
[-2.805118, 3.131312],
[-3.779310, -3.283186],
[3.584428, -1.848126],
]
)
],
)
def test_himmelblau_output(x):
"""Tests himmelblau function output."""
assert np.isclose(fx.himmelblau(x), np.zeros(4)).all()
@pytest.mark.parametrize(
"x",
[
np.array(
[
[8.05502, 9.66459],
[-8.05502, 9.66459],
[8.05502, -9.66459],
[-8.05502, -9.66459],
]
)
],
)
@pytest.mark.parametrize(
"minima", [np.array([-19.2085, -19.2085, -19.2085, -19.2085])]
)
def test_holdertable_output(x, minima):
"""Tests holdertable function output."""
assert np.isclose(fx.holdertable(x), minima).all()
def test_levi_output(common_minima2):
"""Test levi function output."""
assert np.isclose(fx.levi(common_minima2), np.zeros(3)).all()
def test_matyas_output(common_minima):
"""Test matyas function output."""
assert np.isclose(fx.matyas(common_minima), np.zeros(3)).all()
def test_rastrigin_output(common_minima):
"""Tests rastrigin function output."""
assert np.array_equal(fx.rastrigin(common_minima), np.zeros(3))
def test_rosenbrock_output(common_minima2):
"""Tests rosenbrock function output."""
assert np.array_equal(
fx.rosenbrock(common_minima2).all(), np.zeros(3).all()
)
def test_schaffer2_output(common_minima):
"""Test schaffer2 function output."""
assert np.isclose(fx.schaffer2(common_minima), np.zeros(3)).all()
def test_sphere_output(common_minima):
"""Tests sphere function output."""
assert np.array_equal(fx.sphere(common_minima), np.zeros((3,)))
def test_threehump_output(common_minima):
"""Tests threehump function output."""
assert np.array_equal(fx.threehump(common_minima), np.zeros(3))
|