Ich bin neu bei JESS und ich weiß ein wenig von seiner Funktionalität. Ich habe ein Programm, das nach einer Studenten ID-Nummer fragt und das Programm geht und bekommt die Fächer des Schülers.Regeln aktiviert aber nicht feuern in JESS
Die Sache ist bis zum Ende des Verfahrens das Programm den Benutzer fragt, ob er/sie einen anderen Schüler Untertanen bekommen will.
Wenn der Benutzer die Eingabe will einen anderen Schüler, wird es die erste Regel zurück, die gefeuert, aber als ich versuchte, dass die Regel nur dann aktiviert, und nicht Feuer.
Was könnte das Problem sein? Ich habe natürlich dafür gesorgt, dass es lief.
Hier ist mein Code.
(defrule check-subject
?a <- (phase check-back)
?stud <- (lookupID (id ?id))
(student-information (id-number ?id)
(course ?course)
(subjects-taken $?taken)
(year ?year)
(semester ?sem))
(prospectus-information (curriculum-name ?course)
(1st-year-1st-sem-subjects $?subjects1))
=>
(printout t "Student took: " (intersection$ $?taken $?subjects1) crlf)
(printout t "Student flunked: " (complement$ $?taken $?subjects1) crlf)
(assert (back-subject (complement$ $?taken $?subjects1)))
(retract ?a ?stud)
(ask))
Und ich habe die Funktion
(deffunction ask()
(printout t "Consult another? (y/n) ")
(if (eq (read) y)
then (assert (phase choose-student))))
Und meine defrule fragen, wann Phase wählen-Student
(defrule student-select
(phase choose-student)
=>
(printout t "Input Student ID: ")
(assert (lookupID (id (read)))))
Die Regel Student-select aktiviert wird, aktiviert aber nie ausgelöst. Mein Programm hört dort auf.
Das Problem ist ein Fehler im Jess-Code. Dies kann entdeckt und behoben werden, indem die Leute den relevanten Code betrachten können. – laune
Ich habe meinen Beitrag bearbeitet. Bitte hilf mir. Vielen Dank. –
Achten Sie darauf, * Antworten * zu akzeptieren, wenn sie von Nutzen sind. Es ist nicht nötig, "Danke" -Zeichen zu schreiben. – laune