【问题标题】:I can't filter facts with fuzzyvariables when using modifiers使用修饰符时,我无法使用模糊变量过滤事实
【发布时间】:2018-04-09 22:49:46
【问题描述】:

您好,我正在使用 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))
)

我只是希望只得到天气过热的日子(星期五),但我得到了:

所以问题是:为什么如果我按过热温度过滤,Clips 又会给我几天不同的温度?我知道它们之间的 CF 是不同的(1.00、0.88 和 0.12),但我希望 Clips 甚至不会考虑温度与超高温不同的事实。我是否误解了如何使用修饰符过滤变量?谢谢!

【问题讨论】:

    标签: clips fuzzy-logic


    【解决方案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)
    )
    )
    

    如果您希望您的规则匹配精确值,那么您不应该使用模糊值。

    【讨论】:

    • 是的,我继续阅读有关模糊逻辑的内容,我理解了。谢谢!
    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 2021-05-15
    • 2015-03-24
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多