Reguła rozmyta

Czasownik: fuzzyRule

Dostępne od: < Enterprise>

Definiuje regułę rozmytą dla wnioskowania w systemie logiki rozmytej, zwracając dane wyjściowe zgodnie z warunkiem.

Składnia

fuzzyRule --name(String) --condition(Fuzzy) --variable(Fuzzy) --set(FuzzySet)

Dane wejściowe

Skrypt Projektant Wymagane AcceptedTypes Opis
-- name Nazwa reguły Wymagane Tekst Nazwa reguły, która powinna zostać zdefiniowana.
-- condition Warunek Wymagane Fuzzy, Zestaw rozmyty Tekst, który konkatenuje zmienne oraz operatory logiczne AND, OR i NOT w celu zdefiniowania reguły.
Tworzenie instancji obiektu IF nie jest wymagane dla konstrukcji reguły
-- variable Zmienna rozmyta Wymagane Zawroty głowy Zmienna rozmyta, w której zestaw rozwiązań jest przechowywany w trakcie wnioskowania rozmytego.
-- set Zestaw rozmyty Wymagane Zestaw rozmyty Definiuje zestaw rozmyty, który powinien być częścią rozwiązania Zmienna rozmytaustawionego podczas wnioskowania rozmytego.

Przykład

Zestaw logiczny rozmyty jest inicjowany za pomocą komendy Begin Fuzzy z Intervals = 1000. Komenda Fuzzy Rule umożliwia utworzenie logiki rozmytej w celu mierzenia jakości usługi restauracji. Komenda End Fuzzy przerywa zestaw.

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"

Uwagi

W parametrze Nazwa reguły nazwy muszą być unikalne wśród zdefiniowanych reguł.

Komenda Begin Fuzzy uruchamia zestaw logiki rozmytej, a komenda End Fuzzy przerywa działanie komendy.

Patrz także

  • Rozpocznij rozmyte
  • Zakończ rozmyte
  • Zestawy rozmyte
  • Zmienna rozmyta