コード例 #1
0
ファイル: ex_18.py プロジェクト: Haghrah/PyIT2FLS
 def __init__(self, attributes, decisions, parameters, n=3):
     self.attributes = attributes
     self.decisions = decisions
     self.p = self.normalizeParameters(parameters)
     
     self.idomain = linspace(-1.0, 1.0, 1001)
     self.odomain = linspace( 0.0, 1.0, 1001)
     
     self.att1_s1 = IT2FS_RGaussian_UncertStd(self.idomain, params=[self.p[0], 
                                                                     0.25, 0.05, 1.0])
     self.att1_s2 = IT2FS_Gaussian_UncertStd(self.idomain,  params=[self.p[1], 
                                                                     0.25, 0.05, 1.0])
     self.att1_s3 = IT2FS_LGaussian_UncertStd(self.idomain, params=[self.p[2], 
                                                                     0.25, 0.05, 1.0])
     self.ATT1_SETS = [self.att1_s1, self.att1_s2, self.att1_s3]
     
     
     self.att2_s1 = IT2FS_RGaussian_UncertStd(self.idomain, params=[self.p[3], 
                                                                     0.25, 0.05, 1.0])
     self.att2_s2 = IT2FS_Gaussian_UncertStd(self.idomain,  params=[self.p[4], 
                                                                     0.25, 0.05, 1.0])
     self.att2_s3 = IT2FS_LGaussian_UncertStd(self.idomain, params=[self.p[5], 
                                                                     0.25, 0.05, 1.0])
     self.ATT2_SETS = [self.att2_s1, self.att2_s2, self.att2_s3]
     
     
     self.att3_s1 = IT2FS_RGaussian_UncertStd(self.idomain, params=[self.p[6], 
                                                                     0.25, 0.05, 1.0])
     self.att3_s2 = IT2FS_Gaussian_UncertStd(self.idomain,  params=[self.p[7], 
                                                                     0.25, 0.05, 1.0])
     self.att3_s3 = IT2FS_LGaussian_UncertStd(self.idomain, params=[self.p[8], 
                                                                     0.25, 0.05, 1.0])
     self.ATT3_SETS = [self.att3_s1, self.att3_s2, self.att3_s3]
     
     
     self.deci_s1 = IT2FS_RGaussian_UncertStd(self.odomain, params=[self.p[9], 
                                                                     0.25, 0.05, 1.0])
     self.deci_s2 = IT2FS_LGaussian_UncertStd(self.odomain, params=[self.p[10], 
                                                                     0.25, 0.05, 1.0])
     self.DECI_SETS = [self.deci_s1, self.deci_s2]
     
     
     self.DM = IT2Mamdani(product_t_norm, probabilistic_sum_s_norm)
     
     self.DM.add_input_variable("ATT1")
     self.DM.add_input_variable("ATT2")
     self.DM.add_input_variable("ATT3")
     
     self.DM.add_output_variable("DECI")
     
     
     for i in range(3):
         for j in range(3):
             for k in range(3):
                 self.DM.add_rule([("ATT1", self.ATT1_SETS[i]), 
                                   ("ATT2", self.ATT2_SETS[j]), 
                                   ("ATT3", self.ATT3_SETS[k])], 
                                  [("DECI", self.DECI_SETS[int(self.p[11 + i * 9 + j * 3 + k])])])
コード例 #2
0
def IT2FL_v2_fun(x):
    # print("chenggong")
    domain = linspace(-1, 1., 100)

    NB = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
    NS = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
    MM = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    PS = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    PB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    # IT2FS_plot(NB, NS, MM,PS,PB, legends=["NB", "NS", "NN","PS","PB"], filename="v1_input_$y")

    LB = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
    LS = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
    ZO = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    RS = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    RB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    # IT2FS_plot(GB,GS,ZO,BS,BB, legends=["GB", "GS", "ZO","BS","BB"], filename="V1_output")

    #输入和输出都只有一个,输入为y方向的偏离值,输出为速度大小即前进或者后退的快慢
    myIT2FLS = IT2FLS()
    myIT2FLS.add_input_variable("x1")

    myIT2FLS.add_output_variable("y1")

    myIT2FLS.add_rule([("x1", NB)], [("y1", LB)])
    myIT2FLS.add_rule([("x1", NS)], [("y1", LS)])
    myIT2FLS.add_rule([("x1", MM)], [("y1", ZO)])
    myIT2FLS.add_rule([("x1", PS)], [("y1", RS)])
    myIT2FLS.add_rule([("x1", PB)], [("y1", RB)])

    it2out, tr = myIT2FLS.evaluate({"x1": x}, min_t_norm, max_s_norm, domain)
    # it2out["y1"].plot(filename="y1_out")
    # TR_plot(domain, tr["y1"], filename="y1_tr")
    print("v2_output:", crisp(tr["y1"]))
    if crisp(tr["y1"]) < 0:
        print("速度方向:左转", crisp(tr["y1"]) * 90)
    elif crisp(tr["y1"]) == 0:
        print("速度方向:0")
    else:
        print("速度方向:右转", crisp(tr["y1"]) * 90)

    return (crisp(tr["y1"]) * 90)
コード例 #3
0
def IT2FL_fun(x, y):
    # print("chenggong")
    domain = linspace(0., 1., 100)
    # domain = linspace(-1., 1., 100)

    Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    Medium = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    # IT2FS_plot(Small, Medium, Large, legends=["Small", "Medium", "large"], filename="asb(x1,x2)_ex_sets")

    S = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    M = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    L = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    # IT2FS_plot(S, M, L, legends=["S", "M", "L"], filename="y1_ex_sets")

    myIT2FLS = IT2FLS()
    myIT2FLS.add_input_variable("x1")
    myIT2FLS.add_input_variable("x2")
    myIT2FLS.add_output_variable("y1")
    #myIT2FLS.add_output_variable("y2")

    myIT2FLS.add_rule([("x1", Small), ("x2", Small)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Small), ("x2", Medium)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Small), ("x2", Large)], [("y1", M)])

    myIT2FLS.add_rule([("x1", Medium), ("x2", Small)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Medium), ("x2", Medium)], [("y1", M)])
    myIT2FLS.add_rule([("x1", Medium), ("x2", Large)], [("y1", L)])

    myIT2FLS.add_rule([("x1", Large), ("x2", Small)], [("y1", M)])
    myIT2FLS.add_rule([("x1", Large), ("x2", Medium)], [("y1", L)])
    myIT2FLS.add_rule([("x1", Large), ("x2", Large)], [("y1", L)])

    # it2out, tr = myIT2FLS.evaluate({"x1":0.6, "x2":0.8}, min_t_norm, max_s_norm, domain)
    it2out, tr = myIT2FLS.evaluate({
        "x1": x,
        "x2": y
    }, min_t_norm, max_s_norm, domain)
    # it2out["y1"].plot(filename="y1_out")
    # TR_plot(domain, tr["y1"], filename="y1_tr")
    print("v1_output:", crisp(tr["y1"]))
コード例 #4
0
@author: arslan
"""

from pyit2fls import IT2FLS, IT2FS_Gaussian_UncertStd, IT2FS_plot, \
                     min_t_norm, max_s_norm, TR_plot, crisp
from numpy import linspace

#domain = linspace(0., 1., 100)
domain = linspace(-1., 1., 100)
'''
Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
Medium = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
'''
S = IT2FS_Gaussian_UncertStd(domain, [-1., 0.15, 0.1])
Z = IT2FS_Gaussian_UncertStd(domain, [0., 0.15, 0.1])
B = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(S, Z, B, legends=["S", "Z", "B"], filename="x1_simp_ex_sets")

SS = IT2FS_Gaussian_UncertStd(domain, [-1., 0.15, 0.1])
ZZ = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
BB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(SS, ZZ, BB, legends=["SS", "ZZ", "BB"], filename="x2_simp_ex_sets")

A1 = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
A2 = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
A3 = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(A1, A2, A3, legends=["A1", "A2", "A3"], filename="y1_simp_ex_sets")

B1 = IT2FS_Gaussian_UncertStd(domain, [-1., 0.15, 0.1])
コード例 #5
0
ファイル: v2.py プロジェクト: SmallLogin/simulationROS
myIT2FLS.add_rule([("x1", Medium), ("x2", Small)], [("y1", S)])
myIT2FLS.add_rule([("x1", Medium), ("x2", Medium)], [("y1", M)])
myIT2FLS.add_rule([("x1", Medium), ("x2", Large)], [("y1", L)])

myIT2FLS.add_rule([("x1", Large), ("x2", Small)], [("y1", M)])
myIT2FLS.add_rule([("x1", Large), ("x2", Medium)], [("y1", L)])
myIT2FLS.add_rule([("x1", Large), ("x2", Large)], [("y1", L)])

it2out, tr = myIT2FLS.evaluate({"x1":0.8, "x2":0.4}, min_t_norm, max_s_norm, domain)

it2out["y1"].plot(filename="y1_out")
TR_plot(domain, tr["y1"], filename="y1_tr")
print(crisp(tr["y1"]))
'''
Small = IT2FS_Gaussian_UncertStd(domain, [-1, 0.25, 0.1])
Medium = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
# Medium = zero_mf(domain)
Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.25, 0.1])
IT2FS_plot(Small,
           Medium,
           Large,
           legends=["Small", "Medium", "large"],
           filename="asb(x1,x2)_ex_sets")

S = IT2FS_Gaussian_UncertStd(domain, [-1, 0.25, 0.1])
M = IT2FS_Gaussian_UncertStd(domain, [0, 0.001, 0.001])
L = IT2FS_Gaussian_UncertStd(domain, [1., 0.25, 0.1])
IT2FS_plot(S, M, L, legends=["S", "M", "L"], filename="y1_ex_sets")

LB = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
コード例 #6
0
def cost_func(x):
    A1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[:3], 1))
    A2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[3:6], 1))
    A3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[6:9], 1))

    B1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[9:12], 1))
    B2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[12:15], 1))
    B3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[15:18], 1))

    C1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[18:21], 1))
    C2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[21:24], 1))
    C3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[24:27], 1))

    O1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[27:30], 1))
    O2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[30:33], 1))
    O3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[33:36], 1))

    it2fls.rules[0] = ([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    it2fls.rules[1] = ([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    it2fls.rules[2] = ([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])

    err = 0
    for L in LearningSet:
        tr = it2fls.evaluate({
            "A": L[0][0],
            "B": L[0][1],
            "C": L[0][2]
        },
                             min_t_norm,
                             max_s_norm,
                             domain,
                             method="Height",
                             algorithm="EIASC")
        o = tr["O"]
        err += ((o[0] + o[1]) / 2 - L[1])**2
    return err / len(LearningSet)
コード例 #7
0
def calculate(x, i):
    A1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[:3], 1))
    A2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[3:6], 1))
    A3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[6:9], 1))

    B1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[9:12], 1))
    B2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[12:15], 1))
    B3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[15:18], 1))

    C1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[18:21], 1))
    C2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[21:24], 1))
    C3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[24:27], 1))

    O1 = IT2FS_Gaussian_UncertStd(domain, np.append(x[27:30], 1))
    O2 = IT2FS_Gaussian_UncertStd(domain, np.append(x[30:33], 1))
    O3 = IT2FS_Gaussian_UncertStd(domain, np.append(x[33:36], 1))

    it2fls.rules[0] = ([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    it2fls.rules[1] = ([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    it2fls.rules[2] = ([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])

    tr = it2fls.evaluate({
        "A": i[0],
        "B": i[1],
        "C": i[2]
    },
                         min_t_norm,
                         max_s_norm,
                         domain,
                         method="Height",
                         algorithm="EIASC")
    o = tr["O"]
    return (o[0] + o[1]) / 2
コード例 #8
0
ファイル: ex_3.py プロジェクト: sinhmd/PyIT2FLS
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 15 02:40:21 2019

@author: arslan
"""

from pyit2fls import IT2FLS, IT2FS_Gaussian_UncertStd, IT2FS_plot, \
                     min_t_norm, max_s_norm, TR_plot, crisp
from numpy import linspace

domain = linspace(0., 1., 100)

Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1, 1.])
Medium = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1, 1.])
Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1, 1.])
IT2FS_plot(Small,
           Medium,
           Large,
           legends=["Small", "Medium", "large"],
           filename="simp_ex_sets")

myIT2FLS = IT2FLS()
myIT2FLS.add_input_variable("x1")
myIT2FLS.add_input_variable("x2")
myIT2FLS.add_output_variable("y1")
myIT2FLS.add_output_variable("y2")

myIT2FLS.add_rule([("x1", Small), ("x2", Small)], [("y1", Small),
                                                   ("y2", Large)])
コード例 #9
0
ax = fig.add_subplot(1, 4, 1, projection="3d")
surf = ax.plot_surface(X1, X2, Y12, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)
ax = fig.add_subplot(1, 4, 2, projection="3d")
surf = ax.plot_surface(X1, X2, Y22, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)
ax = fig.add_subplot(1, 4, 3, projection="3d")
surf = ax.plot_surface(X1, X2, Y32, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)
ax = fig.add_subplot(1, 4, 4, projection="3d")
surf = ax.plot_surface(X1, X2, Y42, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)
plt.show()


Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1, 1.])
Big = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1, 1.])
# IT2FS_plot(Small, Big, title="Sets", 
#            legends=["Small", "Big"])

myIT2FLS = IT2TSK(product_t_norm, max_s_norm)

myIT2FLS.add_input_variable("x1")
myIT2FLS.add_input_variable("x2")
myIT2FLS.add_output_variable("y1")
myIT2FLS.add_output_variable("y2")

myIT2FLS.add_rule([("x1", Small), ("x2", Small)], 
                  [("y1", {"const":1., "x1":1., "x2":1.}), 
                   ("y2", {"const":1., "x1":2., "x2":-1.})])
myIT2FLS.add_rule([("x1", Small), ("x2", Big)], 
コード例 #10
0
from matplotlib.ticker import LinearLocator, FormatStrFormatter

# Defining the domain of the input variable x1.
domain1 = linspace(1., 2., 100)

# Defining the domain of the input variable x2.
domain2 = linspace(2., 3., 100)

# Defining the domain of the output variable y1.
domain3 = linspace(3., 4., 100)

# Defining the domain of the output variable y2.
domain4 = linspace(4., 5., 100)

# Defining the Small set for the input variable x1.
Small1 = IT2FS_Gaussian_UncertStd(domain1, [1., 0.15, 0.05, 1.])

# Defining the Small set for the input variable x2.
Small2 = IT2FS_Gaussian_UncertStd(domain2, [2., 0.15, 0.05, 1.])

# Defining the Medium set for the input variable x1.
Medium1 = IT2FS_Gaussian_UncertStd(domain1, [1.5, 0.15, 0.05, 1.])

# Defining the Medium set for the input variable x2.
Medium2 = IT2FS_Gaussian_UncertStd(domain2, [2.5, 0.15, 0.05, 1.])

# Defining the Large set for the input variable x1.
Large1 = IT2FS_Gaussian_UncertStd(domain1, [2., 0.15, 0.05, 1.])

# Defining the Large set for the input variable x1.
Large2 = IT2FS_Gaussian_UncertStd(domain2, [3., 0.15, 0.05, 1.])
コード例 #11
0
ファイル: ex_6.py プロジェクト: zhangkun16/PyIT2FLS
             check_set=True)

IT2FS_plot(Const, Tri, legends=["Const Set", "Triangular Set"])
IT2FS_plot(RTri, LTri, legends=["Right Triangular Set", "Left Triangular Set"])

Trapezoid = IT2FS(domain,
                  trapezoid_mf, [0.1, 0.35, 0.65, 0.9, 1.0],
                  trapezoid_mf, [0.2, 0.4, 0.6, 0.8, 0.8],
                  check_set=True)

Trapezoid.plot(legend_text="Trapezoid IT2FS")

Gaussian = IT2FS(domain,
                 gaussian_mf, [0.5, 0.1, 1.0],
                 gaussian_mf, [0.5, 0.05, 0.8],
                 check_set=True)

Gaussian.plot(legend_text="Gaussian IT2FS")

Gaussian_UncertMean = IT2FS_Gaussian_UncertMean(domain, [0.5, 0.1, 0.1, 1.])
Gaussian_UncertMean.plot(legend_text="Gaussian IT2FS with Uncertain Mean")

Gaussian_UncertStd = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.1, 0.05, 0.75])
Gaussian_UncertStd.plot(legend_text="Gaussian IT2FS with Uncertain Std")

RGaussian_UncertStd = R_IT2FS_Gaussian_UncertStd(domain, [0.5, 0.1, 0.05, 0.8])
RGaussian_UncertStd.plot(legend_text="Right Gaussian IT2FS with Uncertain Std")

LGaussian_UncertStd = L_IT2FS_Gaussian_UncertStd(domain, [0.5, 0.1, 0.05, 0.8])
LGaussian_UncertStd.plot(legend_text="Left Gaussian IT2FS with Uncertain Std")
コード例 #12
0
ファイル: tri_ex.py プロジェクト: SmallLogin/simulationROS
    tri_mf,
    [0, 0.5, 1., 1.],
    tri_mf,
    [0.1, 0.5, 0.9, 0.8],
)
Medium.plot(filename="Medium")
Large = IT2FS(
    domain,
    tri_mf,
    [0, 0.5, 1., 1.],
    tri_mf,
    [0.1, 0.5, 0.9, 0.8],
)
Large.plot(filename="Large")

S = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
M = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
L = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(S, M, L, legends=["S", "M", "L"], filename="y1_ex_sets")

myIT2FLS = IT2FLS()
myIT2FLS.add_input_variable("x1")
myIT2FLS.add_input_variable("x2")
myIT2FLS.add_output_variable("y1")
#myIT2FLS.add_output_variable("y2")

myIT2FLS.add_rule([("x1", Small), ("x2", Small)], [("y1", S)])
myIT2FLS.add_rule([("x1", Small), ("x2", Medium)], [("y1", S)])
myIT2FLS.add_rule([("x1", Small), ("x2", Large)], [("y1", M)])

myIT2FLS.add_rule([("x1", Medium), ("x2", Small)], [("y1", S)])
コード例 #13
0
ファイル: ex_ly.py プロジェクト: SmallLogin/simulationROS
myIT2FLS.add_rule([("x1", Medium), ("x2", Small)], [("y1", S)])
myIT2FLS.add_rule([("x1", Medium), ("x2", Medium)], [("y1", M)])
myIT2FLS.add_rule([("x1", Medium), ("x2", Large)], [("y1", L)])

myIT2FLS.add_rule([("x1", Large), ("x2", Small)], [("y1", M)])
myIT2FLS.add_rule([("x1", Large), ("x2", Medium)], [("y1", L)])
myIT2FLS.add_rule([("x1", Large), ("x2", Large)], [("y1", L)])

it2out, tr = myIT2FLS.evaluate({"x1":0.8, "x2":0.4}, min_t_norm, max_s_norm, domain)

it2out["y1"].plot(filename="y1_out")
TR_plot(domain, tr["y1"], filename="y1_tr")
print(crisp(tr["y1"]))
'''
NB = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
NS = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
ZO= IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
PS = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
PB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(NB, NS, ZO,PS,PB, legends=["NB", "NS", "ZO","PS","PB"], filename="asb(x1,x2)_ex_sets")

LVB = IT2FS_Gaussian_UncertStd(domain, [-0.875, 0.15, 0.1])
LB = IT2FS_Gaussian_UncertStd(domain, [-0.625, 0.15, 0.1])
LS= IT2FS_Gaussian_UncertStd(domain, [-0.375, 0.15, 0.1])
LVS = IT2FS_Gaussian_UncertStd(domain, [-0.125, 0.15, 0.1])
Z = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
RVS = IT2FS_Gaussian_UncertStd(domain, [0.125, 0.15, 0.1])
RS = IT2FS_Gaussian_UncertStd(domain, [0.375, 0.15, 0.1])
RB= IT2FS_Gaussian_UncertStd(domain, [0.625, 0.15, 0.1])
RVB = IT2FS_Gaussian_UncertStd(domain, [0.875, 0.15, 0.1])
コード例 #14
0
def IT2FL_v2(x,y):
    #domain = linspace(0., 1., 100)
    domain = linspace(-1., 1., 100)
    '''
    Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    Medium = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    IT2FS_plot(Small, Medium, Large, legends=["Small", "Medium", "large"], filename="asb(x1,x2)_ex_sets")

    S = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    M = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    L = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    IT2FS_plot(S, M, L, legends=["S", "M", "L"], filename="y1_ex_sets")

    myIT2FLS = IT2FLS()
    myIT2FLS.add_input_variable("x1")
    myIT2FLS.add_input_variable("x2")
    myIT2FLS.add_output_variable("y1")
    #myIT2FLS.add_output_variable("y2")

    myIT2FLS.add_rule([("x1", Small), ("x2", Small)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Small), ("x2", Medium)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Small), ("x2", Large)], [("y1", M)])

    myIT2FLS.add_rule([("x1", Medium), ("x2", Small)], [("y1", S)])
    myIT2FLS.add_rule([("x1", Medium), ("x2", Medium)], [("y1", M)])
    myIT2FLS.add_rule([("x1", Medium), ("x2", Large)], [("y1", L)])

    myIT2FLS.add_rule([("x1", Large), ("x2", Small)], [("y1", M)])
    myIT2FLS.add_rule([("x1", Large), ("x2", Medium)], [("y1", L)])
    myIT2FLS.add_rule([("x1", Large), ("x2", Large)], [("y1", L)])

    it2out, tr = myIT2FLS.evaluate({"x1":0.8, "x2":0.4}, min_t_norm, max_s_norm, domain)

    it2out["y1"].plot(filename="y1_out")
    TR_plot(domain, tr["y1"], filename="y1_tr")
    print(crisp(tr["y1"]))
    '''
    NB = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
    NS = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
    ZO= IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    PS = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
    PB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
    # IT2FS_plot(NB, NS, ZO,PS,PB, legends=["NB", "NS", "ZO","PS","PB"], filename="asb(x1,x2)_ex_sets")

    LVB = IT2FS_Gaussian_UncertStd(domain, [-0.875, 0.15, 0.1])
    LB = IT2FS_Gaussian_UncertStd(domain, [-0.625, 0.15, 0.1])
    LS= IT2FS_Gaussian_UncertStd(domain, [-0.375, 0.15, 0.1])
    LVS = IT2FS_Gaussian_UncertStd(domain, [-0.125, 0.15, 0.1])
    Z = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
    RVS = IT2FS_Gaussian_UncertStd(domain, [0.125, 0.15, 0.1])
    RS = IT2FS_Gaussian_UncertStd(domain, [0.375, 0.15, 0.1])
    RB= IT2FS_Gaussian_UncertStd(domain, [0.625, 0.15, 0.1])
    RVB = IT2FS_Gaussian_UncertStd(domain, [0.875, 0.15, 0.1])
    # IT2FS_plot(LVB, LB, LS,LVS,Z,RVS,RS,RB,RVB, legends=["LVB", "LB", "LS","LVS","Z","RVS","RS","RB","RVB"], filename="y2_ex_sets")

    myIT2FLS = IT2FLS()
    myIT2FLS.add_input_variable("x1")
    myIT2FLS.add_input_variable("x2")
    #myIT2FLS.add_output_variable("y1")
    myIT2FLS.add_output_variable("y2")

    myIT2FLS.add_rule([("x1", NB), ("x2", NB)], [("y2", LS)])
    myIT2FLS.add_rule([("x1", NB), ("x2", NS)], [("y2", LS)])
    myIT2FLS.add_rule([("x1", NB), ("x2", ZO)], [("y2", LS)])
    myIT2FLS.add_rule([("x1", NB), ("x2", PS)], [("y2", LB)])
    myIT2FLS.add_rule([("x1", NB), ("x2", PB)], [("y2", LVB)])

    myIT2FLS.add_rule([("x1", NS), ("x2", NB)], [("y2", LVS)])
    myIT2FLS.add_rule([("x1", NS), ("x2", NS)], [("y2", LS)])
    myIT2FLS.add_rule([("x1", NS), ("x2", ZO)], [("y2", LS)])
    myIT2FLS.add_rule([("x1", NS), ("x2", PS)], [("y2", LVB)])
    myIT2FLS.add_rule([("x1", NS), ("x2", PB)], [("y2", LVB)])

    myIT2FLS.add_rule([("x1", ZO), ("x2", NB)], [("y2", Z)])
    myIT2FLS.add_rule([("x1", ZO), ("x2", NS)], [("y2", Z)])
    myIT2FLS.add_rule([("x1", ZO), ("x2", ZO)], [("y2", Z)])
    myIT2FLS.add_rule([("x1", ZO), ("x2", PS)], [("y2", LVB)])
    myIT2FLS.add_rule([("x1", ZO), ("x2", PB)], [("y2", LVB)])

    myIT2FLS.add_rule([("x1", PS), ("x2", NB)], [("y2", RVS)])
    myIT2FLS.add_rule([("x1", PS), ("x2", NS)], [("y2", RS)])
    myIT2FLS.add_rule([("x1", PS), ("x2", ZO)], [("y2", RB)])
    myIT2FLS.add_rule([("x1", PS), ("x2", PS)], [("y2", RVB)])
    myIT2FLS.add_rule([("x1", PS), ("x2", PB)], [("y2", RVB)])

    myIT2FLS.add_rule([("x1", PB), ("x2", NB)], [("y2", RS)])
    myIT2FLS.add_rule([("x1", PB), ("x2", NS)], [("y2", RS)])
    myIT2FLS.add_rule([("x1", PB), ("x2", ZO)], [("y2", RB)])
    myIT2FLS.add_rule([("x1", PB), ("x2", PS)], [("y2", RB)])
    myIT2FLS.add_rule([("x1", PB), ("x2", PB)], [("y2", RVB)])

    it2out, tr = myIT2FLS.evaluate({"x1":x, "x2":y}, min_t_norm, max_s_norm, domain)
    print("v2_output:",crisp(tr["y2"]))
コード例 #15
0
def calculate(x, i):
    A1 = IT2FS_Gaussian_UncertStd(domain, x[:3])
    A2 = IT2FS_Gaussian_UncertStd(domain, x[3:6])
    A3 = IT2FS_Gaussian_UncertStd(domain, x[6:9])
    
    B1 = IT2FS_Gaussian_UncertStd(domain, x[9:12])
    B2 = IT2FS_Gaussian_UncertStd(domain, x[12:15])
    B3 = IT2FS_Gaussian_UncertStd(domain, x[15:18])
    
    C1 = IT2FS_Gaussian_UncertStd(domain, x[18:21])
    C2 = IT2FS_Gaussian_UncertStd(domain, x[21:24])
    C3 = IT2FS_Gaussian_UncertStd(domain, x[24:27])
    
    O1 = IT2FS_Gaussian_UncertStd(domain, x[27:30])
    O2 = IT2FS_Gaussian_UncertStd(domain, x[30:33])
    O3 = IT2FS_Gaussian_UncertStd(domain, x[33:36])
    
    it2fls = IT2FLS()
    it2fls.add_input_variable("A")
    it2fls.add_input_variable("B")
    it2fls.add_input_variable("C")
    it2fls.add_output_variable("O")
    
    it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    #it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    #it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    #it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    #it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    #it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    #it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    
    tr = it2fls.evaluate({"A":i[0], "B":i[1], "C":i[2]}, 
                        min_t_norm, max_s_norm, domain, method="Height", 
                        algorithm="EIASC")
    o = tr["O"]
    return (o[0] + o[1]) / 2
コード例 #16
0
ファイル: guass.py プロジェクト: SmallLogin/simulationROS
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 15 02:40:21 2019

@author: arslan
"""

from pyit2fls import IT2FLS, IT2FS_Gaussian_UncertStd, IT2FS_plot, \
                     min_t_norm, max_s_norm, TR_plot, crisp
from pyit2fls import IT2FS, trapezoid_mf, tri_mf, zero_mf
from numpy import linspace

#domain = linspace(0., 1., 100)
domain = linspace(-1., 1., 100)

NB = IT2FS_Gaussian_UncertStd(domain, [0, 0.25, 0.05])

IT2FS_plot(NB, filename="1")
# IT2FS_plot(NB, NS, PS,PB, legends=["NB", "NS", "PS","PB"], filename="asb(x1,x2)_ex_sets")
コード例 #17
0
def cost_func(x):
    A1 = IT2FS_Gaussian_UncertStd(domain, x[:3])
    A2 = IT2FS_Gaussian_UncertStd(domain, x[3:6])
    A3 = IT2FS_Gaussian_UncertStd(domain, x[6:9])
    
    B1 = IT2FS_Gaussian_UncertStd(domain, x[9:12])
    B2 = IT2FS_Gaussian_UncertStd(domain, x[12:15])
    B3 = IT2FS_Gaussian_UncertStd(domain, x[15:18])
    
    C1 = IT2FS_Gaussian_UncertStd(domain, x[18:21])
    C2 = IT2FS_Gaussian_UncertStd(domain, x[21:24])
    C3 = IT2FS_Gaussian_UncertStd(domain, x[24:27])
    
    O1 = IT2FS_Gaussian_UncertStd(domain, x[27:30])
    O2 = IT2FS_Gaussian_UncertStd(domain, x[30:33])
    O3 = IT2FS_Gaussian_UncertStd(domain, x[33:36])
    
    it2fls = IT2FLS()
    it2fls.add_input_variable("A")
    it2fls.add_input_variable("B")
    it2fls.add_input_variable("C")
    it2fls.add_output_variable("O")
    
    it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    #it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    #it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    #it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    #it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    #it2fls.add_rule([("A", A1), ("B", B1), ("C", C1)], [("O", O1)])
    #it2fls.add_rule([("A", A2), ("B", B2), ("C", C2)], [("O", O2)])
    it2fls.add_rule([("A", A3), ("B", B3), ("C", C3)], [("O", O3)])
    
    err = 0
    for L in LearningSet:
        tr = it2fls.evaluate({"A":L[0][0], "B":L[0][1], "C":L[0][2]}, 
                            min_t_norm, max_s_norm, domain, method="Height", 
                            algorithm="EIASC")
        o = tr["O"]
        err += ((o[0] + o[1]) / 2 - L[1]) ** 2
    return err / len(LearningSet)
コード例 #18
0
ファイル: ex_11.py プロジェクト: primosz/PyIT2FLS
"""
Created on Sun Sep 13 10:24:56 2020

@author: arslan
"""

from pyit2fls import Mamdani, IT2FS_Gaussian_UncertStd, IT2FS_plot, \
                     product_t_norm, max_s_norm, crisp
from numpy import linspace, random, sin, cos, array

domainX1 = linspace(-1., 1., 101)
domainX2 = linspace(-1., 1., 101)
domainY1 = linspace(-0.5, 1.5, 101)
domainY2 = linspace(-0.5, 1.5, 101)

X1Small = IT2FS_Gaussian_UncertStd(domainX1, [-1., 0.2, 0.1, 1.])
X1Medium = IT2FS_Gaussian_UncertStd(domainX1, [0., 0.2, 0.1, 1.])
X1Large = IT2FS_Gaussian_UncertStd(domainX1, [1., 0.2, 0.1, 1.])
# IT2FS_plot(X1Small, X1Medium, X1Large)

X2Small = IT2FS_Gaussian_UncertStd(domainX2, [-1., 0.2, 0.1, 1.])
X2Medium = IT2FS_Gaussian_UncertStd(domainX2, [0., 0.2, 0.1, 1.])
X2Large = IT2FS_Gaussian_UncertStd(domainX2, [1., 0.2, 0.1, 1.])
# IT2FS_plot(X2Small, X2Medium, X2Large)

Y1Small = IT2FS_Gaussian_UncertStd(domainY1, [-0.5, 0.2, 0.1, 1.])
Y1Medium = IT2FS_Gaussian_UncertStd(domainY1, [0.5, 0.2, 0.1, 1.])
Y1Large = IT2FS_Gaussian_UncertStd(domainY1, [1.5, 0.2, 0.1, 1.])
# IT2FS_plot(Y1Small, Y1Medium, Y1Large)

Y2Small = IT2FS_Gaussian_UncertStd(domainY2, [-0.5, 0.2, 0.1, 1.])
コード例 #19
0

def u(t):
    return 1. if t > 1. else 0.


def u_dot(t):
    #    return 0
    a = 10
    return (a if 1. < t < (1. + 1. / a) else 0)


# %% Interval Type 2 Fuzzy PID Codes ...
domain = linspace(-1., 1., 201)

N = IT2FS_Gaussian_UncertStd(domain, [-1., 0.5, 0.1, 1.])
Z = IT2FS_Gaussian_UncertStd(domain, [0., 0.2, 0.025, 1.])
P = IT2FS_Gaussian_UncertStd(domain, [1., 0.5, 0.1, 1.])
IT2FS_plot(N,
           Z,
           P,
           legends=["Negative", "Zero", "Positive"],
           filename="delay_pid_input_sets")

NB = IT2FS_Gaussian_UncertStd(domain, [-1., 0.1, 0.05, 1.])
NM = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.1, 0.05, 1.])
ZZ = IT2FS_Gaussian_UncertStd(domain, [0., 0.1, 0.05, 1.])
PM = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.1, 0.05, 1.])
PB = IT2FS_Gaussian_UncertStd(domain, [1., 0.1, 0.05, 1.])
IT2FS_plot(NB,
           NM,
コード例 #20
0
@author: arslan
"""

from pyit2fls import IT2FLS, IT2FS_Gaussian_UncertStd, IT2FS_plot, \
                     min_t_norm, max_s_norm, TR_plot, crisp
from numpy import linspace

#domain = linspace(0., 1., 100)
domain = linspace(-1., 1., 100)
'''
Small = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
Medium = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
Large = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
'''
NS = IT2FS_Gaussian_UncertStd(domain, [-1., 0.15, 0.1])
NB = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
ZO = IT2FS_Gaussian_UncertStd(domain, [0., 0.15, 0.1])
PS = IT2FS_Gaussian_UncertStd(domain, [0.5, 0.15, 0.1])
PB = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(NS, NB, ZO,PS,PB, legends=["NS", "NB", "ZO", "PS", "PB"], filename="simp_ex_sets")

A1 = IT2FS_Gaussian_UncertStd(domain, [-1, 0.15, 0.1])
A2 = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])
A3 = IT2FS_Gaussian_UncertStd(domain, [1., 0.15, 0.1])
IT2FS_plot(A1, A2, A3, legends=["A1", "A2", "A3"], filename="y1_simp_ex_sets")

B1 = IT2FS_Gaussian_UncertStd(domain, [-1., 0.15, 0.1])
B2 = IT2FS_Gaussian_UncertStd(domain, [-0.25,0.15, 0.1])
B3 = IT2FS_Gaussian_UncertStd(domain, [-0.5, 0.15, 0.1])
B4 = IT2FS_Gaussian_UncertStd(domain, [0, 0.15, 0.1])