我将CLIPS 6.4 IDE用于调试目的。我开始根据规则的“显着性”属性开发专家系统,以更改规则的优先级。
我认为最佳实践是更改此行为,并将具有不同“显着性”级别的规则移至不同的命名模块。
当我使用“显着性”时,我可以使用IDE轻松调试程序(即,重置,运行和步进按钮)。
在“事实浏览器”中,可以看到所有当前活动的事实,但是当我使用命名模块时,我什么都看不到(见下图):
另一方面,“议程浏览器”的效果很好:
因此调试应用程序而没有看到当前活动的事实很麻烦,是否可以修复它?
P.S .:我正在Windows 10(x64)上运行CLIPS IDE 6.4 谢谢!
答案 0 :(得分:1)
以下示例代码无法正确显示事实:
(defmodule MAIN (export ?ALL))
(deftemplate point (slot x) (slot y))
(deffacts points (point (x 1) (y 2)) (point (x 3) (y 4)))
(defmodule ENTITIES)
(defmodule PLANNING (import MAIN ?ALL))
下面是执行以下操作的示例代码:
(defmodule MAIN (export ?ALL))
(deftemplate point (slot x) (slot y))
(deffacts points (point (x 1) (y 2)) (point (x 3) (y 4)))
(defmodule ENTITIES (import MAIN ?ALL))
(defmodule PLANNING)
所选模块的起始索引错误地设置为1而不是0,因此,与该索引关联的模块在范围内没有任何事实时,选择其他模块时浏览器将无法正确显示事实
您可以通过删除EntityBrowser.xaml文件中SelectedIndex的初始设置来纠正此问题。这些行:
<DataGrid x:Name="moduleDataGridView" ... SelectedIndex="1" ...>
<DataGrid x:Name="entityDataGridView" ... SelectedIndex="1" ...>
<DataGrid x:Name="slotDataGridView" ... SelectedIndex="1" ...>
应更改为
<DataGrid x:Name="moduleDataGridView" ... ...>
<DataGrid x:Name="entityDataGridView" ... ...>
<DataGrid x:Name="slotDataGridView" ... ...>