Skip to content

Variable

Variable

Base class for linguistic variables.

related

Attributes

description instance-attribute

description = description

drange property

drange: float

Return the magnitude of the range of the variable.

Returns:

Type Description
float

maximum - minimum

enabled instance-attribute

enabled = enabled

lock_range instance-attribute

lock_range = lock_range

maximum instance-attribute

maximum = maximum

minimum instance-attribute

minimum = minimum

name instance-attribute

name = name

range property writable

range: tuple[float, float]

Return the range of the variable.

Getter

Returns:

Type Description
tuple[float, float]

tuple of (minimum, maximum).

Setter

Parameters:

Name Type Description Default
min_max tuple[float, float]

range of the variable

required

terms instance-attribute

terms = list(terms or [])

value property writable

value: Scalar

Get/Set the value of the variable.

Getter

Returns:

Type Description
Scalar

value of the variable

Setter

when lock_range = true, the value is clipped to the range of the variable

Parameters:

Name Type Description Default
value Scalar

value of the variable

required

Functions

__getitem__

__getitem__(item: int | str | slice) -> Term | list[Term]

Allow indexing terms by index, name, or slices (eg, engine["power"]["low"]).

Parameters:

Name Type Description Default
item int | str | slice

index, name, or slice of terms

required

Returns:

Type Description
Term | list[Term]

term by index or name, or slice of terms

__init__

__init__(
    name: str = "",
    description: str = "",
    enabled: bool = True,
    minimum: float = -inf,
    maximum: float = inf,
    lock_range: bool = False,
    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 range

-inf
maximum float

maximum value of the range

inf
lock_range bool

lock the value to the range of the variable

False
terms Iterable[Term] | None

list of terms

None

__iter__

__iter__() -> Iterator[Term]

Return the iterator of the terms.

Returns:

Type Description
Iterator[Term]

iterator of the terms

__len__

__len__() -> int

Return the number of terms.

Returns:

Type Description
int

number of terms

__repr__

__repr__() -> str

Return the code to construct the variable in Python.

Returns:

Type Description
str

code to construct the variable in Python.

__str__

__str__() -> str

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

Returns:

Type Description
str

code to construct the variable in the FuzzyLite Language.

clear

clear() -> None

Clear the variable to its initial state.

fuzzify

fuzzify(x: Scalar) -> Array[str_]

Return the fuzzy representation of \(x\).

The fuzzy representation is computed by evaluating the membership function of \(x\) for each term \(i\), resulting in a fuzzy value in the form \(\tilde{x}=\sum_i{\mu_i(x)/i}\)

Parameters:

Name Type Description Default
x Scalar

value to fuzzify

required

Returns:

Type Description
Array[str_]

fuzzy value expressed as \(\sum_i{\mu_i(x)/i}\).

highest_membership

highest_membership(x: float) -> Activated | None

Return the term that has the highest membership function value for \(x\).

Parameters:

Name Type Description Default
x float

value

required

Returns:

Type Description
Activated | None

term \(i\) that maximimizes \(\mu_i(x)\)

term

term(name_or_index: str | int) -> Term

Find the term by the name or index.

The best performance is \(O(1)\) when using indices, and the worst performance is \(O(n)\) when using names, where \(n\) is the number terms.

Parameters:

Name Type Description Default
name_or_index str | int

name or index of the term

required

Returns:

Type Description
Term

term by the name or index

Raises:

Type Description
ValueError

when there is no term by the given name.

IndexError

when the index is out of range