Пример 5.8. Использование функции assert
(clear) (assert (color red)) (assert (color blue) (value (+ 3 4))) (deftemplate status (slot temp) (slot pressure (default low))) (assert (status (temp high))) Команда clear очищает текущий список фактов (а также все определенные конструкторы, которые уже были и еще будет рассмотрены ниже). В отличие от reset, команда clear не добавляет в список фактов initial-fact. Эту команду также можно выполнить, выбрав пункт Clear CLIPS в меню Execution. При выборе данной команды на экране появляется диалоговое окно, представленное на рис. 5.11. Это окно запрашивает подтверждение пользователя на очистку текущей базы знаний. Рис. 5.11. Подтверждение очистки среды CLIPS В случае, если команда была набрана с клавиатуры, никакого подтверждения на выполнение этой операции система не запрашивает. Если вы недавно начали работать в среде CLIPS, то для очистки системы лучше использовать меню, т. к. потеря всех текущих данных из базы знаний может оказаться весьма болезненной. Включите режим просмотра изменения списка фактов и наберите приведенный выше пример. После этого выполните команду (facts). Если при Рис. 5.12. Добавление фактов выполнении этих действий не было допущено ошибок, то вы должны получить результат, идентичный изображенному на рис. 5.12. Обратите внимание, что при инициализации факта value использовалось выражение, а слот pressure неупорядоченного факта status получил значение по умолчанию low. По умолчанию CLIPS не позволяет добавлять в список фактов два одинаковых факта. Например, попытка добавить два факта color red приведет к ошибке и функция assert вернет значение false. Данную установку системы можно изменить с помощью функции set-fact-duplication. Кроме того, пользователям Windows-версии CLIPS доступен еще один способ настройки. Для этого необходимо открыть диалоговое окно Execution Options,выбрав пункт Options из меню Execution,установить флажок Fact Duplication. Внешний вид этого диалогового окна приведен на рис. 5.6. 5.2.4. Функция retract После добавления факта в базу знаний рано или поздно встанет вопрос о том, как его оттуда удалить. Для удаления фактов из текущего списка фактов в системе CLIPS предусмотрена функция retract. Каждым вызовом этой функции можно удалить произвольное число фактов. Удаление некоторого факта может стать причиной удаления других фактов, которые логически связаны с удаляемым. Кроме того, удаление факта вызывает удаления правил из плана решения текущей задачи, активированных удаляемым фактом, но об этом речь пойдет в следующих главах. В случае если был включен режим просмотра изменения списка фактов, то соответствующее информационное сообщение будет отображаться в окне CLIPS при удалении каждого факта.
|