Fuzzy Rule
Verb: fuzzyRule
Available from: <Enterprise>
Defines a fuzzy rule for inference in a fuzzy logic system, returning an output according to a Condition.
Syntax
fuzzyRule --name(String) --condition(Fuzzy) --variable(Fuzzy) --set(FuzzySet)
Inputs
Script | Designer | Required | AcceptedTypes | Description |
---|---|---|---|---|
--name | Rule name | Required | Text | Name of the rule that should be defined. |
--condition | Condition | Required | Fuzzy, Fuzzy Set | Text that concatenates variables and AND, OR, and NOT logical operators to define the rule.
The IF instantiator is not required for the rule construction |
--variable | Fuzzy variable | Required | Fuzzy | Fuzzy variable where the solution set is stored in during fuzzy inference. |
--set | Fuzzy set | Required | Fuzzy Set | Defines the fuzzy set that should be part of the Fuzzy variable's solution set during fuzzy inference. |
Example
A fuzzy logic set is initiated using the Begin Fuzzy command, with Intervals = 1000. The Fuzzy Rule command creates fuzzy logic to measure the quality of a restaurant's service. The End Fuzzy command terminates the set.
defVar --name low --type FuzzySet
defVar --name medium --type FuzzySet
defVar --name good --type FuzzySet
defVar --name serviceQuality --type Fuzzy
defVar --name foodQuality --type Fuzzy
defVar --name littleTip --type FuzzySet
defVar --name reasonableTip --type FuzzySet
defVar --name generousTip --type FuzzySet
defVar --name tip --type Fuzzy
defVar --name foodGrade --type Numeric --value "7.5"
defVar --name serviceGrade --type Numeric --value 6
defVar --name tipValue --type Numeric
beginFuzzy --intervals 1000
fuzzySet --function "Trapezoidal" --shape "Number" --edge "Right" --m1 0 --m2 5 low=value
fuzzySet --function "Trapezoidal" --shape "Triangular" --m1 3 --m2 5 --m3 7 medium=value
fuzzySet --function "Trapezoidal" --shape "Number" --edge "Left" --m1 5 --m2 10 good=value
fuzzyVariable --left 0 --right 10 --labels "${low} ${medium} ${good}" serviceQuality=value
fuzzyVariable --left 0 --right 10 --labels "${low} ${medium} ${good}" foodQuality=value
fuzzySet --function "Trapezoidal" --shape "Number" --edge "Right" --m1 0 --m2 12.5 littleTip=value
fuzzySet --function "Trapezoidal" --shape "Triangular" --m1 6.25 --m2 12.5 --m3 18.75 reasonableTip=value
fuzzySet --function "Trapezoidal" --shape "Number" --edge "Left" --m1 12.5 --m2 25 generousTip=value
fuzzyVariable --left 0 --right 25 --labels "${littleTip} ${reasonableTip} ${generousTip}" tip=value
//The food was rancid or the service was poor.
fuzzyRule --name "Terrible food or service" --condition "${foodQuality} IS ${low} OR ${serviceQuality} IS ${low}" --variable ${tip} --set ${littleTip}
//The service was reasonable.
fuzzyRule --name "Average service" --condition "${serviceQuality} IS ${medium}" --variable ${tip} --set ${reasonableTip}
//The food was delicious or the service was good.
fuzzyRule --name "Great Food or Service" --condition "${foodQuality} IS ${good} OR ${serviceQuality} IS ${good}" --variable ${tip} --set ${generousTip}
endFuzzy
setVar --name "${foodQuality}" --value "${foodGrade}"
setVar --name "${serviceQuality}" --value "${serviceGrade}"
evaluate --expression "${tip}" tipValue=value
logMessage --message "Tip Value: ${tipValue};\r\nFood Grade: ${foodGrade};\r\nService Grade: ${serviceGrade}" --type "Info"
Remarks
In the Rule name parameter, names must be unique among the defined rules.
The Begin Fuzzy command starts the fuzzy logic set, and the End Fuzzy command terminates it.