Я не могу фильтровать факты с нечеткими переменными при использовании модификаторов

Привет, я использую FuzzyClips v6.10.d, я читал об использовании модификаторов для нечетких переменных и попробовал:

(deftemplate temperature 
0.0 1.0 ; 
(
    (cold (z 0.1 0.2))
    (warm(PI 0.3 0.6))
    (hot (s 0.7 0.9))
    (hyperhot very hot)
)
)

(deftemplate temp-day
(slot day (type SYMBOL) (allowed-symbols Monday Thursday Friday Sunday))
(slot day-temp (type FUZZY-VALUE temperature))
)

(deffacts fuzzyfacts

(temp-day (day Sunday) (day-temp warm))
(temp-day (day Monday) (day-temp cold))
(temp-day (day Thursday) (day-temp hot))
(temp-day (day Friday) (day-temp hyperhot))

)

(defrule select
(temp-day (day ?x) (day-temp hyperhot))
=>
(assert(was-so-hyper-hot ?x))
)

Я просто ожидал получить только те дни, когда погода была очень жаркой (пятница), но вместо этого я получил:

Изображение 1

Итак, вопрос: почему, если я фильтрую по высокой температуре, Clips дает мне другие дни с другой температурой? Я знаю, что CF у них разный (1,00, 0,88 и 0,12), но я ожидал, что клипы даже не будут рассматривать факты с температурой, отличной от сверхгорячей. Я неправильно понимаю, как фильтровать переменные с помощью модификаторов? Спасибо!


person Keka Bron    schedule 09.04.2018    source источник


Ответы (1)


Вы неправильно понимаете, как работают нечеткие значения. Они нечеткие, поэтому, когда вы говорите, что что-то очень горячее, может быть, что это просто горячее или теплое (как показывают факты в вашем примере). Если вы изменили диапазон, указывающий на тепло, так, чтобы он был дальше от жаркого, вы увидите, что факт (воскресенье было очень жарким) больше не утверждается.

(deftemplate temperature 
0.0 1.0 ; 
(
    (cold (z 0.1 0.2))
    (warm(PI 0.3 0.4))
    (hot (s 0.7 0.9))
    (hyperhot very hot)
)
)

Если вы хотите, чтобы ваши правила соответствовали точным значениям, вам не следует использовать нечеткие значения.

person Gary Riley    schedule 10.04.2018
comment
Да, я продолжал читать о нечеткой логике, и я понял это. Спасибо! - person Keka Bron; 10.04.2018