2016-06-20 5 views
1

私は、CLIPS thahチェックのルールで比較を行い、新しい事実をアサートすることが3つの条件のうちの1つであるとします。if()内の複数のフィールドをチェックするCLIPS

(defrule empresa_cae_mucho 
(Empresa (nombre ?n)(var_anio ?anio)(var_sem ?sem)(var_tri ?tri)) 
=> 
(or (or (test(> ?anio 30))(test (> ?sem 30))(test (> ?tri 30)))) 
    (assert valor_infravalorado 
      (nombre ?n)) 
    (assert (Explicacion 
      (nombre ?n) 
      (motivo "la empresa ha caido bastante aunque no en el ultimo mes 
       pero su PER es bajo"))) 

しかし、それは動作しませんし、私はインターネットでこれを行うの右のフォームを見つけることができません:コードがあります。どんな助け?

答えて

2
CLIPS> (clear) 
CLIPS> 
(deftemplate Empresa 
    (slot nombre) 
    (slot var_anio) 
    (slot var_sem) 
    (slot var_tri)) 
CLIPS> 
(deftemplate valor_infravalorado 
    (slot nombre)) 
CLIPS>  
(deftemplate Explicacion 
    (slot nombre) 
    (slot motivo)) 
CLIPS> 
(deffacts start 
    (Empresa (nombre 1) (var_anio 40) (var_sem 10) (var_tri 25)) 
    (Empresa (nombre 2) (var_anio 0) (var_sem 35) (var_tri 10)) 
    (Empresa (nombre 3) (var_anio 30) (var_sem 20) (var_tri 55)) 
    (Empresa (nombre 4) (var_anio 30) (var_sem 30) (var_tri 30))) 
CLIPS> 
(defrule empresa_cae_mucho 
    (Empresa (nombre ?n) 
      (var_anio ?anio) 
      (var_sem ?sem) 
      (var_tri ?tri)) 
    (test (or (> ?anio 30) 
      (> ?sem 30) 
      (> ?tri 30))) 
    => 
    (assert (valor_infravalorado (nombre ?n))) 
    (assert (Explicacion 
      (nombre ?n) 
      (motivo "la empresa ...")))) 
CLIPS> (reset) 
CLIPS> (watch rules) 
CLIPS> (watch facts) 
CLIPS> (run) 
FIRE 1 empresa_cae_mucho: f-3 
==> f-5  (valor_infravalorado (nombre 3)) 
==> f-6  (Explicacion (nombre 3) (motivo "la empresa ...")) 
FIRE 2 empresa_cae_mucho: f-2 
==> f-7  (valor_infravalorado (nombre 2)) 
==> f-8  (Explicacion (nombre 2) (motivo "la empresa ...")) 
FIRE 3 empresa_cae_mucho: f-1 
==> f-9  (valor_infravalorado (nombre 1)) 
==> f-10 (Explicacion (nombre 1) (motivo "la empresa ...")) 
CLIPS> (facts) 
f-0  (initial-fact) 
f-1  (Empresa (nombre 1) (var_anio 40) (var_sem 10) (var_tri 25)) 
f-2  (Empresa (nombre 2) (var_anio 0) (var_sem 35) (var_tri 10)) 
f-3  (Empresa (nombre 3) (var_anio 30) (var_sem 20) (var_tri 55)) 
f-4  (Empresa (nombre 4) (var_anio 30) (var_sem 30) (var_tri 30)) 
f-5  (valor_infravalorado (nombre 3)) 
f-6  (Explicacion (nombre 3) (motivo "la empresa ...")) 
f-7  (valor_infravalorado (nombre 2)) 
f-8  (Explicacion (nombre 2) (motivo "la empresa ...")) 
f-9  (valor_infravalorado (nombre 1)) 
f-10 (Explicacion (nombre 1) (motivo "la empresa ...")) 
For a total of 11 facts. 
CLIPS> 
関連する問題