不运行的规则

时间:2015-12-17 06:07:36

标签: clips expert-system

原谅我的英语,我是西班牙语。 我的CLIPS专家系统计算机配置存在问题。

我的规则“preciogamingoc”没有运行,我尝试了一千种但不起作用。

我将代码留在这里。

我不知道如何把它变得更好,对不起。

 headerview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // Your code here 
        }
    });

1 个答案:

答案 0 :(得分:0)

preciogamingoc规则匹配pc事实,因此您可以运行程序,检查执行哪些规则,并检查pc事实以查看已分配给它的值:

CLIPS> (reset)
CLIPS> (watch rules)
CLIPS> (run)
FIRE    1 inicio: *

Sistema Experto de Configuracion de Ordenadores

FIRE    2 tipopc: f-1
Tipo (juegos:g/diseño:d/otros:o)? g
FIRE    3 oc: f-2
Hará overclock al procesador (si/no)?: si
FIRE    4 presupuesto: f-3


-.PRESUPUESTO.-

PROCESADOR: i5 4690_Intel
RAM: 2x4GB 2133 cl9
PLACA BASE: Gigabyte_H97M-HD3 ejemplo
DISCO DURO:1Tb
GRAFICA: GTX 960
FUENTE: 700W+ silver

PRECIO: 550
CLIPS> (facts)
f-0     (initial-fact)
f-3     (pc (tipo g) (oc si) (procesador "i5 4690_Intel") (ram "2x4GB 2133 cl9") (placabase "Gigabyte_H97M-HD3 ejemplo") (discoduro "1Tb") (grafica "GTX 960") (fuente "700W+ silver") (precio 550))
For a total of 2 facts.
CLIPS> (ppfact 3)
(pc 
   (tipo g) 
   (oc si) 
   (procesador "i5 4690_Intel") 
   (ram "2x4GB 2133 cl9") 
   (placabase "Gigabyte_H97M-HD3 ejemplo") 
   (discoduro "1Tb") 
   (grafica "GTX 960") 
   (fuente "700W+ silver") 
   (precio 550))
CLIPS> 

preciogamingoc规则的模式是:

?A <- (pc (tipo g) 
          (oc si) 
          (procesador) 
          (ram) 
          (placabase) 
          (discoduro) 
          (grafica) 
          (fuente))

tipo和oc插槽的事实值与模式匹配,但处理器,ram,placabase,discoduro,grafica和fuente插槽的值不匹配。这些槽可以具有零个或多个值。事实上每个都有一个值,但是您的模式指定每个插槽都是空的,因此模式不匹配。

您需要从模式中删除这些插槽或检查特定值。一旦在规则的操作中修改了pc事实(也许通过将oc的值更改为si-actualizado以指示已应用规则),您还需要阻止规则再次执行:

(defrule preciogamingoc
   ?A <- (pc (tipo g) (oc si))
   =>
   (printout t "Veo que su sistema será destinado a juegos y que además se le podrá hacer overclock." crlf
               "Ahora debe introducir el presupuesto medio para que podamos darle una configuración mas concreta." crlf
               "Introduzca su presupuesto de referencia(>= 750): ")
   (bind ?precio (read))
   (if (and (>= ?precio 750)(< ?precio 850))
      then 
      (modify ?A (oc si-actualizado)
                 (procesador "i5 4690K_Intel")
                 (ram "2x8GB 2133 cl9")
                 (placabase "Gigabyte_Z97X gaming 3 ejemplo")
                 (discoduro "1Tb")
                 (grafica "GTX 970")
                 (fuente "700W+ silver")
                 (precio 750))))
相关问题