事实可以在JESS中有子事实吗?

时间:2016-04-04 06:32:49

标签: expert-system jess

我有超过150个科目,每个科目都有以下信息,我想在我的deffacts中加入

> Subject: CS222 
> Pre-requisite: CS111
> Units: 4 
> Priority-lvl: 3
> Semester-offered: 2 
> Class: A
>        Schedule: 9:00am - 10:00am (Mon & Wed)
>        Slots Available: 30 
> Class: B
>        Schedule: 9:00am - 10:00am (Tue - Thurs)
>        Slots Available: 26 
> Class: C
>        Schedule: 12:00nn - 01:30pm (Mon - Wed)
>        Slots Available: 10

我知道如何编写deffacts,但问题是,我每个Class有两个信息(显然变成了subfact),我不知道如何将这些信息转换为deffacts。

我知道我可以使用下面的信息制作4个deffacts,但我发现代码效率不高。有没有其他方法可以解释上述信息?

(Deffacts subject
  (subject-information 
             (name CS222)
             (identifier 1)
             (pre-requisite CS111)
             (priority-lvl 3)
             (units 4)
             (semester-offered 2)))

(Deffacts Ident
   (ident-class
              (identifier 1)
              (class A)
              (schedule 0900-1000MW)
              (stud-avail 30)))

(Deffacts Ident
   (ident-class
              (identifier 1)
              (class B)
              (schedule 0900-1000TTH)
              (stud-avail 26)))

(Deffacts Ident
   (ident-class
              (identifier 1)
              (class C)
              (schedule 1200-0130MW)
              (stud-avail 10)))

1 个答案:

答案 0 :(得分:0)

如果您担心内存消耗:150个主题和几个类几乎不会导致OutOfMemory异常。

如果你担心执行时间方面的“效率”,我不能说 - 这取决于访问这些事实的规则。是否使用两个不同的deftemplate或将其压缩为单个deftemplates更好取决于您在访问数据的规则中要做什么。通常最好避免使用列表作为属性并坚持使用关系模型,即你所拥有的。

插槽“标识符”未出现在原始数据中。我想你已经介绍了它将课堂事实与主题事实联系起来。最好使用主题名称。