Клипы 6.4 IDE потенциальная ошибка.Не показывает факты для выбранного модуля - PullRequest
0 голосов
/ 08 апреля 2019

Я использую CLIPS 6.4 IDE для целей отладки.Я начал разрабатывать свою экспертную систему, основанную на свойстве «значимости» правил, для изменения приоритета правил.

Я думаю, что наилучшей практикой является изменение этого поведения и перемещение правил с различным уровнем «значимости» в разные именованные модули..

Когда я использую «значимость», я могу легко отлаживать свою программу с помощью IDE (т.е. кнопки сброса, запуска и шага).

В «Обозревателе фактов» можно увидеть все, что есть на данный момент.Активные факты, но когда я использую именованные модули, я ничего не вижу (см. рисунок ниже):

facts browser

С другой стороны, «Обозреватель повестки дня» работает довольно хорошо:

agenda browser

Так что отладка приложения без просмотра текущих активных фактов проблематична, возможно ли это исправить?

PS: Я использую CLIPS IDE 6.4 в Windows 10, x64. Спасибо!

1 Ответ

1 голос
/ 11 апреля 2019

Вот пример кода, который неправильно отображает факты:

(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, поэтому в случае, когда модуль, связанный с этим индексом, не имеет каких-либо фактов в области видимости, браузер неправильно отображает факты при выборе других модулей.

Эту проблему можно исправить, удаливначальная настройка для SelectedIndex в файле EntityBrowser.xaml.Эти строки:

<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" ... ...>
...