예제 #1
0
    def test_term(self) -> None:
        term: fl.Term = fl.Triangle("A", 0.0, 1.0, 2.0, 0.5)
        self.assertEqual(fl.PythonExporter().to_string(term),
                         fl.PythonExporter().term(term))
        self.assertEqual(fl.PythonExporter().term(term),
                         "fl.Triangle(\"A\", 0.000, 1.000, 2.000, 0.500)")

        term = fl.Discrete("B", [0.0, 0.0, 0.5, 1.0, 1.0, 0.0])
        self.assertEqual(fl.PythonExporter().to_string(term),
                         fl.PythonExporter().term(term))
        self.assertEqual(
            fl.PythonExporter().term(term),
            "fl.Discrete(\"B\", [0.000, 0.000, 0.500, 1.000, 1.000, 0.000])")

        term = fl.Function("C", "x + 1")
        self.assertEqual(fl.PythonExporter().to_string(term),
                         fl.PythonExporter().term(term))
        self.assertEqual(fl.PythonExporter().term(term),
                         "fl.Function.create(\"C\", \"x + 1\", engine)")

        term = fl.Linear("D", [0.0, 1.0, 2.0, -fl.inf, fl.inf])
        self.assertEqual(fl.PythonExporter().to_string(term),
                         fl.PythonExporter().term(term))
        self.assertEqual(
            fl.PythonExporter().term(term),
            "fl.Linear(\"D\", [0.000, 1.000, 2.000, -fl.inf, fl.inf], engine)")
예제 #2
0
 fl.InputVariable(name="AllInputTerms",
                  description="",
                  enabled=True,
                  minimum=0.000,
                  maximum=6.500,
                  lock_range=False,
                  terms=[
                      fl.Sigmoid("A", 0.500, -20.000),
                      fl.ZShape("B", 0.000, 1.000),
                      fl.Ramp("C", 1.000, 0.000),
                      fl.Triangle("D", 0.500, 1.000, 1.500),
                      fl.Trapezoid("E", 1.000, 1.250, 1.750, 2.000),
                      fl.Concave("F", 0.850, 0.250),
                      fl.Rectangle("G", 1.750, 2.250),
                      fl.Discrete("H", [
                          2.000, 0.000, 2.250, 1.000, 2.500, 0.500, 2.750,
                          1.000, 3.000, 0.000
                      ]),
                      fl.Gaussian("I", 3.000, 0.200),
                      fl.Cosine("J", 3.250, 0.650),
                      fl.GaussianProduct("K", 3.500, 0.100, 3.300, 0.300),
                      fl.Spike("L", 3.640, 1.040),
                      fl.Bell("M", 4.000, 0.250, 3.000),
                      fl.PiShape("N", 4.000, 4.500, 4.500, 5.000),
                      fl.Concave("O", 5.650, 6.250),
                      fl.SigmoidDifference("P", 4.750, 10.000, 30.000,
                                           5.250),
                      fl.SigmoidProduct("Q", 5.250, 20.000, -10.000, 5.750),
                      fl.Ramp("R", 5.500, 6.500),
                      fl.SShape("S", 5.500, 6.500),
                      fl.Sigmoid("T", 6.000, 20.000)
                  ])
예제 #3
0
 fl.Discrete(
     "left", 0.000000000, 0.000000000, 0.006660000, 0.020000000,
     0.013320000, 0.040000000, 0.019980000, 0.060000000, 0.026640000,
     0.080000000, 0.033300000, 0.100000000, 0.039960000, 0.120000000,
     0.046620000, 0.140000000, 0.053280000, 0.160000000, 0.059940000,
     0.180000000, 0.066600000, 0.200000000, 0.073260000, 0.220000000,
     0.079920000, 0.240000000, 0.086580000, 0.260000000, 0.093240000,
     0.280000000, 0.099900000, 0.300000000, 0.106560000, 0.320000000,
     0.113220000, 0.340000000, 0.119880000, 0.360000000, 0.126540000,
     0.380000000, 0.133200000, 0.400000000, 0.139860000, 0.420000000,
     0.146520000, 0.440000000, 0.153180000, 0.460000000, 0.159840000,
     0.480000000, 0.166500000, 0.500000000, 0.173160000, 0.520000000,
     0.179820000, 0.540000000, 0.186480000, 0.560000000, 0.193140000,
     0.580000000, 0.199800000, 0.600000000, 0.206460000, 0.620000000,
     0.213120000, 0.640000000, 0.219780000, 0.660000000, 0.226440000,
     0.680000000, 0.233100000, 0.700000000, 0.239760000, 0.720000000,
     0.246420000, 0.740000000, 0.253080000, 0.760000000, 0.259740000,
     0.780000000, 0.266400000, 0.800000000, 0.273060000, 0.820000000,
     0.279720000, 0.840000000, 0.286380000, 0.860000000, 0.293040000,
     0.880000000, 0.299700000, 0.900000000, 0.306360000, 0.920000000,
     0.313020000, 0.940000000, 0.319680000, 0.960000000, 0.326340000,
     0.980000000, 0.333000000, 1.000000000, 0.339660000, 0.980000000,
     0.346320000, 0.960000000, 0.352980000, 0.940000000, 0.359640000,
     0.920000000, 0.366300000, 0.900000000, 0.372960000, 0.880000000,
     0.379620000, 0.860000000, 0.386280000, 0.840000000, 0.392940000,
     0.820000000, 0.399600000, 0.800000000, 0.406260000, 0.780000000,
     0.412920000, 0.760000000, 0.419580000, 0.740000000, 0.426240000,
     0.720000000, 0.432900000, 0.700000000, 0.439560000, 0.680000000,
     0.446220000, 0.660000000, 0.452880000, 0.640000000, 0.459540000,
     0.620000000, 0.466200000, 0.600000000, 0.472860000, 0.580000000,
     0.479520000, 0.560000000, 0.486180000, 0.540000000, 0.492840000,
     0.520000000, 0.499500000, 0.500000000, 0.506160000, 0.480000000,
     0.512820000, 0.460000000, 0.519480000, 0.440000000, 0.526140000,
     0.420000000, 0.532800000, 0.400000000, 0.539460000, 0.380000000,
     0.546120000, 0.360000000, 0.552780000, 0.340000000, 0.559440000,
     0.320000000, 0.566100000, 0.300000000, 0.572760000, 0.280000000,
     0.579420000, 0.260000000, 0.586080000, 0.240000000, 0.592740000,
     0.220000000, 0.599400000, 0.200000000, 0.606060000, 0.180000000,
     0.612720000, 0.160000000, 0.619380000, 0.140000000, 0.626040000,
     0.120000000, 0.632700000, 0.100000000, 0.639360000, 0.080000000,
     0.646020000, 0.060000000, 0.652680000, 0.040000000, 0.659340000,
     0.020000000, 0.666000000, 0.000000000),
예제 #4
0
import fuzzylite as fl

engine = fl.Engine(name="Laundry", description="")
engine.input_variables = [
    fl.InputVariable(
        name="Load",
        description="",
        enabled=True,
        minimum=0.000,
        maximum=6.000,
        lock_range=False,
        terms=[
            fl.Discrete(
                "small",
                [0.000, 1.000, 1.000, 1.000, 2.000, 0.800, 5.000, 0.000]),
            fl.Discrete("normal", [3.000, 0.000, 4.000, 1.000, 6.000, 0.000])
        ]),
    fl.InputVariable(
        name="Dirt",
        description="",
        enabled=True,
        minimum=0.000,
        maximum=6.000,
        lock_range=False,
        terms=[
            fl.Discrete("low", [0.000, 1.000, 2.000, 0.800, 5.000, 0.000]),
            fl.Discrete(
                "high",
                [1.000, 0.000, 2.000, 0.200, 4.000, 0.800, 6.000, 1.000])
        ])
]