Клипы: невозможно продолжить после ввода выбора
Я пытаюсь создать экспертную систему диагностики. Мне удалось создать меню и подменю, но после ввода моего выбора (например, 1). Вопрос, который должен быть задан после подменю, не появляется. Следовательно, не в состоянии продолжать. Я хотел бы спросить, есть ли что-то не так с тем, что я сделал? Если есть, как правильно это сделать?
Вот часть кода для справки:
CLIPS> ;; MainMenu
(defrule Menu
(not (iffoundChoice ?))
=>
(printout t crlf crlf crlf
"Choose one of the problem areas listed below" crlf crlf
" 1.) Brake Pedal System. "crlf crlf
" 2.) Gearbox. "crlf crlf
" 3.) ." crlf crlf
" 4.) END SYSTEM. "crlf crlf crlf
" Enter no. of your choice: ")
(assert (iffoundChoice (read))))
CLIPS> ;; submenu1
(defrule subMenu1
(not (iffoundChoice1 ?))
=>
(printout t crlf crlf crlf
"Choose which topic best relates to your problem? "crlf crlf
" 1.1) Car Pulls One Side When Braking. "crlf crlf
" 1.2) Rear Brake Drag. "crlf crlf
" 1.3) Brake squeal. "crlf crlf
" 4.) END SYSTEM. "crlf crlf crlf
" Enter no. of your choice: ")
(assert (iffoundChoice1 (read))))
CLIPS> ;; Rule 1 based on choice 1
(defrule car_pulls_one_side_when_braking
(iffoundChoice1)
?retractCh1 <- (iffoundChoice1)
(not (ifYesNochoice ?))
=>
(retract ?retractCh1)
(printout t crlf crlf crlf
" Was your tyre uneven? (yes|no) "crlf crlf
" Your answer: ")
(assert (ifYesNochoice (read))))
CLIPS> ;;Rule 2 based on Yes answer in Rule 1
(defrule car_pulls_one_side_when_braking1
(ifYesNochoice yes)
?retractChy <- (ifYesNochoice yes)
(not (ifYesNochoice1 ?))
=>
(retract ?retractChy)
(printout t crlf crlf crlf
" Please check your tyre pressure "crlf crlf
" Is it in good condition? (yes|no) "crlf crlf
" Your answer: "
(assert (ifYesNochoice1 (read)))))
CLIPS> ;;Rule 3 based on Yes answer in Rule 2
(defrule car_pulls_one_side_when_braking2
(ifYesNochoice1 yes)
?retract <- (ifYesNochoice1)
(not (ifYesNochoise2 ?))
=>
(retract ?retract Chy)
(printout t crlf crlf crlf
" Then your car should be no problem. " crlf crlf
" Thanks for using Vehicle Diagnosis Failure System. " crlf crlf))
CLIPS> ;; Rule 4 based on NO answer in Rule 2
(defrule car_pulls_one_side_when_braking3
(ifYesNochoice1 no)
?retract <- (ifYesNochoice1)
(not (ifYesNochoice3 ?))
=>
(retract ?retract Chy)
(printout t crlf crlf crlf
" Please inflate all the tyres according to the tyre plycard. "crlf crlf
" Please check again with your technician if problem is solved. "crlf crlf
" Thanks for using Vehicle Diagnosis Failure System. "crlf crlf))
CLIPS> (reset)
CLIPS> (run)
1 ответ
Измените шаблоны для iffoundChoice и iffoundChoice1, чтобы включить выбор пользователя.
(defrule car_pulls_one_side_when_braking
(iffoundChoice 1) ; <--
?retractCh1 <- (iffoundChoice1 1) ; <--
(not (ifYesNochoice ?))
=>
(retract ?retractCh1)
(printout t crlf crlf crlf
" Was your tyre uneven? (yes|no) "crlf crlf
" Your answer: ")
(assert (ifYesNochoice (read))))