Esempio n. 1
0
def test_alo():
    v1 = phuzzy.Triangle(alpha0=[0, 4], alpha1=[1], number_of_alpha_levels=5)
    v2 = phuzzy.Superellipse(alpha0=[-1, 2.],
                             alpha1=None,
                             m=1.0,
                             n=.5,
                             number_of_alpha_levels=6)
    v3 = phuzzy.TruncGenNorm(alpha0=[1, 4],
                             alpha1=[2, 3],
                             number_of_alpha_levels=5,
                             beta=3.)
    v4 = phuzzy.Trapezoid(alpha0=[0, 4],
                          alpha1=[2, 3],
                          number_of_alpha_levels=5)
    v5 = phuzzy.TruncNorm(alpha0=[1, 3], number_of_alpha_levels=5, name="y")
    v6 = phuzzy.Triangle(alpha0=[1, 4], alpha1=[3], number_of_alpha_levels=5)

    obj_function = '-1*((x[0] - 1) ** 2 + (x[1] + .1) ** 2 + .1 - (x[2] + 2) ** 2 - (x[3] - 0.1) ** 2 - (x[4] * x[5]) ** 2)'
    name = 'Opti_Test'

    kwargs = {
        'var1': v1,
        'var2': v2,
        'var3': v3,
        'var4': v4,
        'var5': v5,
        'var6': v6,
        'obj_function': obj_function,
        'name': name
    }

    # alo = phuzzy.analysis.alo.Alpha_Level_Optimization(name="test", obj_function=obj_function, vars=[v1, v2, v3, v4, v5, v6])
    alo = phuzzy.analysis.alo.Alpha_Level_Optimization(**kwargs)
    alo.calculation()
    print(alo)
Esempio n. 2
0
def test_sst():

    number_of_alpha_levels = 31

    # load P
    P0 = 5000.  # N
    dP = 0.01 * P0  # N
    P = ph.Triangle(alpha0=[P0 - dP, P0 + dP], alpha1=[P0], name="P", number_of_alpha_levels=number_of_alpha_levels)

    # dimensions L, W, H
    W0 = 50  # mm
    H0 = 100  # mm
    L0 = 2000  # mm

    dW = 0.01 * W0  # mm
    dH = 0.01 * H0  # mm
    dL = 0.01 * L0  # mm

    L = ph.Triangle(alpha0=[L0 - dL, L0 + dL], alpha1=[L0], name="L", number_of_alpha_levels=number_of_alpha_levels)
    W = ph.Triangle(alpha0=[W0 - dW, W0 + dW], alpha1=[W0], name="W", number_of_alpha_levels=number_of_alpha_levels)
    H = ph.Triangle(alpha0=[H0 - dH, H0 + dH], alpha1=[H0], name="H", number_of_alpha_levels=number_of_alpha_levels)

    # material

    E0 = 30000.  # N/mm2
    dE = 0.1 * E0  # N/mm2
    E = ph.TruncNorm(alpha0=[E0 - dE, E0 + dE], alpha1=[E0], name="E", number_of_alpha_levels=number_of_alpha_levels)

    def calc_w(X):
        P = X[0]
        L = X[1]
        W = X[2]
        H = X[3]
        E = X[4]
        A = W * H
        A.name = "A"

        I = W * H** 3 / 12.
        I.name = "I"
        w = P * L ** 3 / (48 * E * I)
        w.name = r"P L^3 / (48 EI)"
        return w

    for x in [P, L, W, H, E]:
        print(x)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[P, L, W, H, E], function=calc_w)
    print(pa)

    pa.lcefa()
Esempio n. 3
0
def normal_estimator():
    import matplotlib.pyplot as plt
    H = 100.  # mm
    B = 300.  # mm
    fig, axs = plt.subplots(1,
                            2,
                            dpi=90,
                            facecolor='w',
                            edgecolor='k',
                            figsize=(B / 25.4, H / 25.4))

    alpha0 = [-3, 8]
    alpha1 = [-1]
    size = 5000
    data = np.random.triangular(alpha0[0], alpha1[0], alpha0[1], size)
    p0 = phuzzy.Triangle(name="org", alpha0=alpha0, alpha1=alpha1)
    p = phuzzy.Triangle.from_data(data=data, name="estimate")
    print(p.df)
    mix_mpl(p)
    mix_mpl(p0)
    p0.plot(ax=axs[1])
    p.plot(ax=axs[1], labels=False)

    print(data.mean())
    print(data.shape)
    p.plot(ax=axs[0])
    h = axs[0].hist(data, bins=50, normed=True, alpha=.5)
    fig.tight_layout()
    plt.show()
Esempio n. 4
0
def test_lcefalr():

    a = 1.23
    def f(x):
        x1 = x[0]
        x2 = x[1]
        return (x1+1.15)**2+(x2+.4)**4 + a

    x = phuzzy.TruncNorm(alpha0=[-6, 2], name="x", number_of_alpha_levels=2)
    y = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[-6], name="y", number_of_alpha_levels=2)
    z = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[6], name="z", number_of_alpha_levels=2)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[x, y, z], function=f)
    print(pa)

    df = pa.lcefalr()
    print(df)
def test_number_of_alpha_levels():
    t = phuzzy.Triangle(alpha0=[1, 3], alpha1=[2], number_of_alpha_levels=4)
    print(t.number_of_alpha_levels)
    print(t.df)
    assert t.number_of_alpha_levels == 4
    t.number_of_alpha_levels = 5
    # t.convert_df(alpha_levels=5)
    print(t.number_of_alpha_levels)
    print(t.df)
Esempio n. 6
0
def test_f1():
    def f(x):
        x1 = x[0]
        x2 = x[1]
        return x1 + 2

    x = phuzzy.TruncNorm(alpha0=[-6, 6], name="x", number_of_alpha_levels=11)
    y = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[6], name="y", number_of_alpha_levels=11)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[x, y], function=f)
    print(pa)

    vars = pa.lcefa()
    assert np.isclose(x.sk, 1)
    assert np.isclose(y.sk, 0)
Esempio n. 7
0
def test_lcefalr2():
    a = 1.23
    def f(x):
        x2 = x[0]

        return x2

    # x = phuzzy.TruncNorm(alpha0=[-6, 2], name="x", number_of_alpha_levels=3)
    y = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[6], name="y", number_of_alpha_levels=3)
    # z = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[6], name="z", number_of_alpha_levels=3)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[y], function=f)
    print(pa)

    df = pa.lcefalr()
    print(df)
Esempio n. 8
0
def atest_f3():
    def f(x):
        x1 = x[0]
        x2 = x[1]
        return np.sin(x1) + np.sin(4*x2)

    x = phuzzy.TruncNorm(alpha0=[0, 2*np.pi], name="x", number_of_alpha_levels=2)
    y = phuzzy.Triangle(alpha0=[0, 2*np.pi], alpha1=[6], name="y", number_of_alpha_levels=2)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[x, y], function=f)
    print(pa)

    sensibilities = pa.lcefa()
    print(sensibilities)
    assert np.isclose(x.sk, .5)
    assert np.isclose(y.sk, .5)
Esempio n. 9
0
def test_fuzzy_analysis():

    a = 1.23
    def f(x):
        x1 = x[0]
        x2 = x[1]
        return (x1+1.15)**2+(x2+.4)**2 + a

    x = phuzzy.TruncNorm(alpha0=[-6, 2], name="x", number_of_alpha_levels=2)
    y = phuzzy.Triangle(alpha0=[-6, 6], alpha1=[6], name="y", number_of_alpha_levels=2)

    pa = phuzzy.analysis.FuzzyAnalysis(designvars=[x, y], function=f)
    print(pa)

    z = pa.eval(ntgo=1000)
    print(z)
    assert np.isclose(z.min(), a)
def test_triangle():
    t = phuzzy.Triangle(alpha0=[1, 3], alpha1=[2], number_of_alpha_levels=15)
    print(t)
    print(t.__class__.__name__)
    print(t.df)
    assert len(t.df) == 15
    print([t])
    print(t.get_01)
    print(t.df.columns)
    assert all([
        x == y
        for x, y in zip(sorted(t.df.columns), sorted(["alpha", "l", "r"]))
    ])
    s = t.to_str()
    print(s)
    pdf = t.pdf([2])
    print(pdf)
    cdf = t.cdf([2])
    print(cdf)
    t.discretize(alpha0=[1, 3], alpha1=[2], alpha_levels=5)
def test_expression():
    x = phuzzy.TruncNorm(alpha0=[1, 2], name="x")
    y = phuzzy.Triangle(alpha0=[3, 6], alpha1=[4], name="y")
    z = f(x, y)

    expr = phuzzy.approx.doe.Expression(designvars=[x, y],
                                        function=f,
                                        name="f(x,y)")

    expr.generate_training_doe(name="train", n=10, method="lhs")
    expr.eval()
    z = expr.get_fuzzynumber_from_results()
    print(z.df)

    expr.fit_model()
    print(expr.model)

    expr.generate_prediction_doe(name="prediction", n=10000, method="lhs")
    u = expr.predict(name="u")
    print(u)
Esempio n. 12
0
def test_operation_class():
    tra = phuzzy.Trapezoid(alpha0=[1, 4],
                           alpha1=[2, 3],
                           number_of_alpha_levels=5)
    tri = phuzzy.Triangle(alpha0=[1, 4],
                          alpha1=[2, 3],
                          number_of_alpha_levels=5)
    uni = phuzzy.Uniform(alpha0=[1, 4],
                         alpha1=[2, 3],
                         number_of_alpha_levels=5)
    x = tra + tra
    assert isinstance(x, phuzzy.Trapezoid)

    x = uni + uni
    assert isinstance(x, phuzzy.Uniform)

    x = tri + uni
    assert isinstance(x, phuzzy.Triangle)

    x = uni + tri
    print(x.__class__)
    assert isinstance(x, phuzzy.Triangle)

    x = tra + uni
    assert isinstance(x, phuzzy.Trapezoid)

    x = uni + tra
    assert isinstance(x, phuzzy.Trapezoid)

    x = tra + tri
    assert isinstance(x, phuzzy.Trapezoid)

    x = tri + tra
    assert isinstance(x, phuzzy.Trapezoid)

    x = uni + tri + tra
    assert isinstance(x, phuzzy.Trapezoid)

    x = uni + 2.
    assert isinstance(x, phuzzy.Uniform)
def test_fuzzy():
    n = phuzzy.FuzzyNumber()
    print(n)
    print(n.__class__.__name__)
    assert hasattr(n, "name")
    assert hasattr(n, "df")
    assert hasattr(n, "number_of_alpha_levels")

    t = phuzzy.FuzzyNumber.from_data(data=[1, 3, 5], number_of_alpha_levels=3)
    print(t.df)
    assert len(t.df) == 3
    print(t.__class__.__name__)
    s = t.to_str()
    print(s)
    pdf = t.pdf([2])
    print(pdf)
    cdf = t.cdf([2])
    print(cdf)

    n = phuzzy.FuzzyNumber()
    with pytest.raises(NotImplementedError) as exp:
        s = n.to_str()
        print(s)

    with pytest.raises(NotImplementedError) as exp:
        s = phuzzy.FuzzyNumber.from_str("!")
        print(s)

    t = phuzzy.Triangle(alpha0=[1, 3], alpha1=[2], number_of_alpha_levels=15)
    p = phuzzy.Trapezoid(alpha0=[1, 4],
                         alpha1=[2, 3],
                         number_of_alpha_levels=5)
    n = t + p

    pdf = n.pdf([2])
    print(pdf)
    cdf = n.cdf([2])
    print(cdf)
Esempio n. 14
0
def plot_tria_cdf():

    import matplotlib.pyplot as plt
    H = 100.  # mm
    B = 300.  # mm
    fig, axs = plt.subplots(1,
                            2,
                            dpi=90,
                            facecolor='w',
                            edgecolor='k',
                            figsize=(B / 25.4, H / 25.4))

    x = np.linspace(0, 6, 200)

    t = phuzzy.Triangle(alpha0=[1, 4], alpha1=[2], number_of_alpha_levels=5)
    p = t.pdf(x)
    P = t.cdf(x)
    axs[0].plot(x, p, label="pdf", lw=2)
    axs[1].plot(x, P, label="cdf", lw=2)
    axs[0].legend(loc="best")
    axs[1].legend(loc="best")

    f = phuzzy.FuzzyNumber(alpha0=[1, 2],
                           alpha1=[1.1, 1.4],
                           number_of_alpha_levels=5)
    f.df = t.df.copy()
    print(f.df)
    pf = f.pdf(x)
    Pf = f.cdf(x)

    mix_mpl(f)
    f.plot(show=False)
    axs[0].plot(x, pf, label="pdf num", lw=3, c="r", alpha=.5)
    axs[1].plot(x, Pf, label="cdf num", lw=3, c="r", alpha=.5)
    axs[0].legend(loc="best")
    axs[1].legend(loc="best")
    plt.show()
Esempio n. 15
0
import matplotlib.pyplot as plt

add_selectbox = st.sidebar.selectbox("phuzzy numbers",
                                     ("Triangle", "Uniform", "Trapezoid"))

st.text('phuzzy')

p1_slot = st.empty()

uniform = phuzzy.Uniform(alpha0=[1, 2])
mix_mpl(uniform)

trapezoid = phuzzy.Trapezoid(alpha0=[1, 2], alpha1=[1.2, 1.5])
mix_mpl(trapezoid)

triangle = phuzzy.Triangle(alpha0=[1, 2], alpha1=[1.8])
mix_mpl(triangle)

p_dict = {"Triangle": triangle, "Uniform": uniform, "Trapezoid": trapezoid}
print(add_selectbox)
p = p_dict.get(add_selectbox, triangle)


def plot_phuzzy_number(p):

    H = 170.  #mm
    B = 270.  #mm
    fig, ax = plt.subplots(dpi=90,
                           facecolor='w',
                           edgecolor='k',
                           figsize=(B / 25.4, H / 25.4))
Esempio n. 16
0
# -*- coding: utf-8 -*-

import phuzzy as ph
number_of_alpha_levels = 31

# load P
P0 = 5000.  # N
dP = 0.01 * P0  # N
P = ph.Triangle(alpha0=[P0 - dP, P0 + dP],
                alpha1=[P0],
                name="P",
                number_of_alpha_levels=number_of_alpha_levels)

# dimensions L, W, H
W0 = 50  # mm
H0 = 100  # mm
L0 = 2000  # mm

dW = 0.01 * W0  # mm
dH = 0.01 * H0  # mm
dL = 0.01 * L0  # mm

L = ph.Triangle(alpha0=[L0 - dL, L0 + dL],
                alpha1=[L0],
                name="L",
                number_of_alpha_levels=number_of_alpha_levels)
W = ph.Triangle(alpha0=[W0 - dW, W0 + dW],
                alpha1=[W0],
                name="W",
                number_of_alpha_levels=number_of_alpha_levels)
H = ph.Triangle(alpha0=[H0 - dH, H0 + dH],