刚开始Prolog ...需要帮助制作小型专家系统

时间:2013-11-27 17:59:42

标签: prolog system

我刚开始使用Prolog,我必须实施专家系统。如果他/她似乎无法在黑暗中看到事物并且似乎在黑暗中感觉不受保护,我想要诊断某人对黑暗的恐惧。以下是此方案的代码:

fear(dark) :- positive(cantSee), positive(unprotectedInDark).

但是,我认为我不确定这是正确的代码。这是我的代码,使积极的(X)“是”:

positive(X) :- ask(X, yes).
ask(X, yes) :- write(X), write('? '), read(yes).

同样,这是我的负面代码(X):

negative(X) :- ask(X, no).
ask(X, no) :- write(X), write('? '), read(no).

这是我上面问题的正确代码吗?另外,如何让我的专家系统“记住”答案?这段代码在我的脑海里,但我不认为这个有用:

remember(X, yes) :- assert(ask(X, yes)).
remember(X, no) :- assert(ask(X, no)).

1 个答案:

答案 0 :(得分:0)

如果问题已经得到解答,可能会问/ 2应该检查。

:- dynamic remember/2.

ask(What, YN) :- remember(What, YN), !.
ask(What, YN) :- write(What), write(?),
     read(YN), /* should validate user'answer */,
     assertz(remember(What, YN)).