2017-02-05 2 views
0

Ich muss ein Symptom eingeben und wollen Name von Problemen, aber wenn ich defrle Check-Eingabe geschrieben habe, habe ich einen Fehler. Code folgt, bitte helfen denke ich, ist Problem in defrule Überprüfung-EingangEingabe Match in CLIPS, Syntax Fehler

(deftemplate probelm 
    (multislot name) 
    (slot symptom)) 

    (deffacts probelms 
(probelm (name Faulty-Spark-Plug,Low-air-pressure-in-Tyres,Fuel-Injector-Leakage,Bad-Engine-Oil) 
     (symptom High-fuel-consumption)) 
(probelm (name Faulty-Spark-Plug , Fuel-injector-Problem) 
     (symptom Lack-of-acceleration)) 
(probelm (name Loose-or-Dry-belt,misalignment-belt,bearing-of-motor) 
     (symptom Squeaky-belt-noise)) 
(probelm (name Low engine Oil) 
     (symptom Blue-Smoke)) 
(probelm (name Coolant level,transmission fluid level low) 
     (symptom White-Smoke)) 
(probelm (name Air filter Or fuel injector problem,fuel pressure regualtor) 
     (symptom Black-Smoke)) 
     ) 


    (defrule reading-input 
    => 
    (printout t "Enter the symptom your car Shows: ") 
    (assert (var (read)))) 



(defrule checking-input 
(var ?symptom) 
(probelm (symptom ?symptom1)(name $?name1)) 
(test (member$ ?name ?name1)) 
    => 
    (printout t "Problems can be " ?name1 crlf)) 

Antwort

2

Einige Anmerkungen:

  1. Sie verwenden müssen ($ element1 element2 ... erstellen) erstellen Sie Ihre Multi-Slot, kann man nicht trennen Elemente mit einem Komma (,) wie du
  2. Sie (Reset) aufrufen müssen deffacts laden
  3. Ihre Überprüfung-Eingang Regel einen Handler verwenden, ohne ihn zu definieren erste (? Name)

Hier Ihre Arbeits Skript:

(deftemplate probelm 
    (multislot name) 
    (slot symptom)) 

    (deffacts probelms 
(probelm (name (create$ "Air filter" "fuel injector problem" "fuel pressure regualtor")) 
     (symptom Black-Smoke)) 
     ) 
;; add others problems 
     (reset) 

    (defrule reading-input 
    => 
    (printout t "Enter the symptom your car Shows: ") 
    (assert (var (read)))) 



(defrule checking-input 
(var ?symptom) 
(probelm (symptom ?symptom1)(name $?name1)) 
(test (eq ?symptom ?symptom1)) 
    => 
    (printout t "Problems can be " $?name1 crlf)) 

(run) 

(exit) 

Bye Nicola

PS: erinnere mich an die Antwort, wenn nützlich stimmen;)

+0

lieben dank. Ich kam mit der wahren Lösung .. danke viel :) –

+0

Würdest du CLIPS Integration mit Android ???? –

+0

Werfen Sie einen Blick auf Jess: http://www.jessrules.com/jess/index.shtml –