2016-10-28 17 views
0

В моей экспертной системе пользователь должен проверить Developer and Price после просмотра ноутбука, который подходит для этих параметров.Экспертная система на клипах не работает

Например, с этими параметрами (на скриншоте), я должен иметь результат: Модель: Noteebok1

Screenshot

Но я не вижу ничего. Где проблема или ошибка?

CLP Код файла:

(defglobal ?*s* = 0) 
(deftemplate Notebook 
(slot pModel) 
(slot pDeveloper) 
(slot pPrice)) 
;*******************************************************************  
(deffunction QuestionOf(?TextQuestion $?variations) 
(printout t ?TextQuestion) 
(bind ?Answer (read)) 
(if (lexemep ?Answer) 
then (bind ?Answer (lowcase ?Answer))) 
(while (not (member ?Answer ?variations)) do 
(printout t ?TextQuestion) 
(bind ?Answer (read)) 
(if (lexemep ?Answer) 
then (bind ?Answer (lowcase ?Answer)))) 
?Answer) 
;********************************************************************' 
(defrule banner 
(declare (salience 10)) 
=>(load-facts D:\fact.txt) 
(printout t crlf crlf) 
(printout t "Expert system. Nout search") 
(printout t crlf crlf)) 
;******************************************************************' 
(defrule QuestionDeveloper 
(not (Developer ?)) 
=>(bind ?asssert(QuestionOf "Check Developer (a-HP,b-Samsung,c-Apple,d-IDontKnow)" a b c d)) 
(if (eq ?asssert a)then (assert (Developer HP))) 
(if (eq ?asssert b)then (assert (Developer Samsung))) 
(if (eq ?asssert c)then (assert (Developer Apple))) 
(if (eq ?asssert d)then (assert (Developer IDontKnow)))) 
;******************************************************************' 
(defrule QuestionPrice 
(not (Price ?)) 
=>(bind ?asssert(QuestionOf "Price?(a-300,b-400,c-500,d-IDontKnow)" a b c d)) 
(if (eq ?asssert a)then (assert (Price 300))) 
(if (eq ?asssert b)then (assert (Price 400))) 
(if (eq ?asssert c)then (assert (Price 500))) 
(if (eq ?asssert d)then (assert (Price IDontKnow)))) 
;******************************************************************' 
(defrule Vyvod 
(or (Developer ?xDeveloper)(Developer IDontKnow)) 
(or (Price ?xPrice)(Price IDontKnow)) 
(Notebook(pModel ?Model)(pDeveloper ?xDeveloper)(pPrice ?xPrice)) 
=>(bind ?*s*(+ ?*s* 1)) 
(printout t crlf " " ?*s* ". Model : " ?Model crlf)) 
;******************************************************************' 

Fact.txt:

(Notebook(pModel Notebook1)(pDeveloper HP)(pPrice 500)) 
(Notebook(pModel Notebook2)(pDeveloper Samsung)(pPrice 400)) 
(Notebook(pModel Notebook3)(pDeveloper Apple)(pPrice 500)) 

ответ

0

факты из файла fact.txt не загружается. Убедитесь, что файл находится по указанному пути и у вас есть доступ на чтение.

+0

Спасибо, сейчас это работает) –