Skip to content

OutputVariable

OutputVariable

Bases: Variable

Variable to represents the output of a fuzzy logic controller.

During the activation of a rule block, the activated terms of each rule are aggregated in the fuzzy output, which represents a fuzzy set hereinafter referred to as \(\tilde{y}\).

The defuzzification of \(\tilde{y}\) converts the fuzzy output value \(\tilde{y}\) into a crisp output value \(y\), which is stored as the value of this variable.

related

Attributes

aggregation property writable

aggregation: SNorm | None

Get/Set the aggregation operator.

Getter

Returns:

Type Description
SNorm | None

aggregation operator.

Setter

Parameters:

Name Type Description Default
value SNorm

aggregation operator

required

default_value instance-attribute

default_value = default_value

defuzzifier instance-attribute

defuzzifier = defuzzifier

fuzzy instance-attribute

fuzzy = Aggregated(name=name, minimum=minimum, maximum=maximum, aggregation=aggregation)

lock_previous instance-attribute

lock_previous = lock_previous

maximum property writable

maximum: float

Get/Set the maximum value of the range of the output variable.

Getter

Returns:

Type Description
float

maximum value of the range of the output variable.

Setter

Parameters:

Name Type Description Default
value float

maximum value of the output variable.

required

minimum property writable

minimum: float

Get/Set the minimum value of the range of the output variable.

Getter

Returns:

Type Description
float

minimum value of the range of the output variable.

Setter

Parameters:

Name Type Description Default
value float

minimum value of the output variable.

required

previous_value instance-attribute

previous_value = nan

Functions

__init__

__init__(
    name: str = "",
    description: str = "",
    enabled: bool = True,
    minimum: float = -inf,
    maximum: float = inf,
    lock_range: bool = False,
    lock_previous: bool = False,
    default_value: float = nan,
    aggregation: SNorm | None = None,
    defuzzifier: Defuzzifier | None = None,
    terms: Iterable[Term] | None = None,
) -> None

Constructor.

Parameters:

Name Type Description Default
name str

name of the variable

''
description str

description of the variable

''
enabled bool

enable the variable

True
minimum float

minimum value of the variable

-inf
maximum float

maximum value of the variable

inf
lock_range bool

lock the value to the range of the variable

False
lock_previous bool

lock the previous value of the output variable

False
default_value float

default value of the output variable

nan
aggregation SNorm | None

aggregation operator

None
defuzzifier Defuzzifier | None

defuzzifier of the output variable

None
terms Iterable[Term] | None

list of terms.

None

__repr__

__repr__() -> str

Return the code to construct the output variable in Python.

Returns:

Type Description
str

code to construct the output variable in Python.

__str__

__str__() -> str

Return the code to construct the output variable in the FuzzyLite Language.

Returns:

Type Description
str

code to construct the output variable in the FuzzyLite Language.

clear

clear() -> None

Clear the output variable.

defuzzify

defuzzify() -> None

Defuzzify the output variable and store the output value and the previous output value.

The final value \(y\) depends on the following cascade of properties in order of precedence expressed in the FuzzyLite Language:

  • lock-previous: boolean: when the output value is not finite (ie, nan or inf) and lock-previous: true, then the output value is replaced with the value defuzzified in the previous iteration.

  • default: scalar: when the output value is (still) not finite and the default value is not nan, then the output value is replaced with the default value.

  • lock-range: boolean: when lock-range: true, the output value is clipped to the range of the variable.

fuzzy_value

fuzzy_value() -> Array[str_]

Return the current fuzzy output value.

Returns:

Type Description
Array[str_]

current fuzzy output value.