Exemplo n.º 1
0
def test_centroid_singleton():
    x = np.r_[0]
    mfx = np.r_[0]
    assert_allclose(np.r_[0], fuzz.centroid(x, mfx))

    x = np.r_[3]
    mfx = np.r_[0.5]
    assert_allclose(x, fuzz.centroid(x, mfx))
Exemplo n.º 2
0
def test_centroid_singleton():
    x = np.r_[0]
    mfx = np.r_[0]
    assert_allclose(np.r_[0], fuzz.centroid(x, mfx))

    x = np.r_[3]
    mfx = np.r_[0.5]
    assert_allclose(x, fuzz.centroid(x, mfx))
Exemplo n.º 3
0
def test_centroid():
    def helper_centroid(mean=0, sigma=1):
        x = np.arange(21) - 10
        gmf = fuzz.gaussmf(x, mean, sigma)
        assert_allclose(mean, fuzz.centroid(x, gmf), atol=1e-1)
        return None

    def helper_dcentroid(mean=0, sigma=1, dc=0):
        x = np.arange(21) - 10
        gmf = fuzz.gaussmf(x, mean, sigma)
        assert_allclose(mean, fuzz.dcentroid(x, gmf, dc), atol=1e-1)
        assert_allclose(fuzz.centroid(x, gmf), fuzz.dcentroid(x, gmf, 0))
        return None

    for mean in np.arange(-5, 5, 2):
        for sigma in range(1, 3):
            helper_centroid(mean, sigma)
            for differential_centroid in 42 * (np.arange(11) - 5):
                helper_dcentroid(mean, sigma, differential_centroid)

    # Test with ends @ zero, to evaluate special cases in new defuzz method
    x = np.arange(21) - 10
    gmf = fuzz.gaussmf(x, 0, np.pi)
    gmf[0] = 0
    gmf[-1] = 0
    assert_allclose(0, fuzz.centroid(x, gmf), atol=1e-8)
Exemplo n.º 4
0
 def helper_dcentroid(mean=0, sigma=1, dc=0):
     x = np.arange(21) - 10
     gmf = fuzz.gaussmf(x, mean, sigma)
     assert_allclose(mean, fuzz.dcentroid(x, gmf, dc), atol=1e-3)
     assert_allclose(fuzz.centroid(x, gmf),
                     fuzz.dcentroid(x, gmf, 0))
     return None
Exemplo n.º 5
0
 def helper_dcentroid(mean=0, sigma=1, dc=0):
     x = np.arange(21) - 10
     gmf = fuzz.gaussmf(x, mean, sigma)
     assert_allclose(mean, fuzz.dcentroid(x, gmf, dc), atol=1e-1)
     assert_allclose(fuzz.centroid(x, gmf),
                     fuzz.dcentroid(x, gmf, 0))
     return None
Exemplo n.º 6
0
def test_centroid():

    def helper_centroid(mean=0, sigma=1):
        x = np.arange(21) - 10
        gmf = fuzz.gaussmf(x, mean, sigma)
        assert_allclose(mean, fuzz.centroid(x, gmf), atol=1e-2)
        return None

    def helper_dcentroid(mean=0, sigma=1, dc=0):
        x = np.arange(21) - 10
        gmf = fuzz.gaussmf(x, mean, sigma)
        assert_allclose(mean, fuzz.dcentroid(x, gmf, dc), atol=1e-2)
        assert_allclose(fuzz.centroid(x, gmf),
                        fuzz.dcentroid(x, gmf, 0))
        return None

    for mean in np.arange(-5, 5, 2):
        for sigma in range(1, 3):
            helper_centroid(mean, sigma)
            for differential_centroid in 42 * (np.arange(11) - 5):
                helper_dcentroid(mean, sigma, differential_centroid)

    # Test with ends @ zero, to evaluate special cases in new defuzz method
    x = np.arange(21) - 10
    gmf = fuzz.gaussmf(x, 0, np.pi)
    gmf[0] = 0
    gmf[-1] = 0
    assert_allclose(0, fuzz.centroid(x, gmf), atol=1e-8)
Exemplo n.º 7
0
def visualise_all(x, y_list, titles, ncols=3):
    '''
        Just display the given plot-data on a grid of separate graphs.
        Also show the centroid as a vertical red line.
    '''
    nrows = np.int(np.ceil(len(y_list) / ncols))
    fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(8, 9))
    fig.tight_layout()
    fig.subplots_adjust(bottom=-.25)
    for i, p in enumerate(y_list):
        r, c = divmod(i, ncols)
        axes[r][c].plot(x, p)
        cog = skfuzzy.centroid(x, p)
        axes[r][c].axvline(x=cog, color='red', linestyle='--')
        axes[r][c].set_title(titles[i])
        axes[r][c].set_ylim([-0.05, 1.05])  # so all have the same (0,1) y-axis
Exemplo n.º 8
0
 def helper_centroid(mean=0, sigma=1):
     x = np.arange(21) - 10
     gmf = fuzz.gaussmf(x, mean, sigma)
     assert_allclose(mean, fuzz.centroid(x, gmf), atol=1e-2)
     return None
Exemplo n.º 9
0
 def helper_centroid(mean=0, sigma=1):
     x = np.arange(21) - 10
     gmf = fuzz.gaussmf(x, mean, sigma)
     assert_allclose(mean, fuzz.centroid(x, gmf), atol=1e-2)
     return None