【问题标题】:CLIPS how can I sum up slots of facts剪辑我如何总结事实
【发布时间】:2018-05-22 00:14:13
【问题描述】:

假设我有以下两个定义模板:

(deftemplate total-crop-yield-quality (slot primary_key) (slot quality))
(deftemplate total-fertilizer-quality (slot primary_key) (slot quality))

以及以下事实:

   (deffacts tQuality 
    (total-crop-yield-quality (primary_key 1) (quality 10))
    (total-crop-yield-quality (primary_key 2) (quality 7))
    (total-crop-yield-quality (primary_key 3) (quality 9))
    (total-crop-yield-quality (primary_key 4) (quality -2)))

   (deffacts fQuality 
    (total-fertilizer-quality (primary_key 1) (quality 4))
    (total-fertilizer-quality (primary_key 2) (quality 0))
    (total-fertilizer-quality (primary_key 3) (quality 2))
    (total-fertilizer-quality (primary_key 4) (quality 5)))

我如何将两个 deffacts 的所有质量的总和汇总到一个变量中?

(defrule determine-total-quality
  =>
 //code here to add quality to a variable)

【问题讨论】:

    标签: clips


    【解决方案1】:
             CLIPS (6.31 2/3/18)
    CLIPS> (deftemplate total-crop-yield-quality (slot primary_key) (slot quality))
    CLIPS> (deftemplate total-fertilizer-quality (slot primary_key) (slot quality))
    CLIPS> 
    (deffacts tQuality 
       (total-crop-yield-quality (primary_key 1) (quality 10))
       (total-crop-yield-quality (primary_key 2) (quality 7))
       (total-crop-yield-quality (primary_key 3) (quality 9))
       (total-crop-yield-quality (primary_key 4) (quality -2)))
    CLIPS> 
    (deffacts fQuality 
       (total-fertilizer-quality (primary_key 1) (quality 4))
       (total-fertilizer-quality (primary_key 2) (quality 0))
       (total-fertilizer-quality (primary_key 3) (quality 2))
       (total-fertilizer-quality (primary_key 4) (quality 5)))
    CLIPS>    
    (defrule determine-total-quality
      =>
      (bind ?sum 0)
      (do-for-all-facts ((?f total-crop-yield-quality)) TRUE
         (bind ?sum (+ ?sum ?f:quality)))
      (printout t "Crop Yield Quality: " ?sum crlf)
      (bind ?sum 0)
      (do-for-all-facts ((?f total-fertilizer-quality)) TRUE
         (bind ?sum (+ ?sum ?f:quality)))
      (printout t "Fertilizer Quality: " ?sum crlf))
    CLIPS> (reset)
    CLIPS> (run)
    Crop Yield Quality: 24
    Fertilizer Quality: 11
    CLIPS> 
    

    【讨论】:

    • 非常感谢 Gary Riley。
    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多