私はJESSを初めて使用しています。私は生徒のID番号を尋ねるプログラムを持っており、プログラムは生徒の科目を取得します。JESSでルールが有効になりますが、起動しません。
事は、彼/彼女が他の学生の科目を取得したい場合、プログラムは、ユーザーに尋ねる手順の最後です。
ユーザが入力に別の学生を希望する場合、それは反撃最初のルールに移動しますが、私が試したときのルールにのみ有効にして起動しませんでした、ということ。
何が問題なのですか?私はコースがあることを確かめた。
ここに私のコードです。相選択し、学生が
(defrule student-select
(phase choose-student)
=>
(printout t "Input Student ID: ")
(assert (lookupID (id (read)))))
ルール学生セレクトアサートされたときに
(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))
そして、私は機能を持っているが
(deffunction ask()
(printout t "Consult another? (y/n) ")
(if (eq (read) y)
then (assert (phase choose-student))))
そして、私のDEFRULEを頼む、活性化したが発射したことがありません。私のプログラムはそこで止まります。
問題はジェスコードの間違いです。これは、関連するコードを見ることができる人によって発見され、修正される可能性があります。 – laune
投稿を編集しました。私を助けてください。ありがとうございました。 –
*使用できる場合は*受け入れる*ことを確認してください。 「ありがとう」というコメントを書く必要はありません。 – laune