Визуальные экспертные системы

Визуальными экспертными системами мы называем экспертные системы, визуализирующие ход своих рассуждений с помощью графических диаграмм. Визуализация рассуждений с помощью диаграмм обеспечивает "прозрачность" процесса принятия решений для пользователя и позволяет реализовать интерактивный поиск решений. Такая возможность является особенно важной в областях, характеризуемых немонотонностью и высокой степенью субъективности принятия решений. Акторный Пролог является мощным инструментом быстрого прототипирования и программирования визуальных экспертных систем, благодаря средствам визуального программирования и автоматического создания графического пользовательского интерфейса на основе SADT диаграмм.

В этом разделе мы рассмотрим учебный пример визуальной экспертной системы Jam-R.A, написанной на Акторном Прологе (см. каталог SADT\Jam-R). В рассматриваемом примере с помощью SADT диаграмм описан процесс изготовления варенья из чёрной рябины, яблок и земляники в домашних условиях. Акторный Пролог "оживляет" графическую модель, перекрашивая диаграммы и вычисляя некоторые параметры в зависимости от выбранных пользователем ягод и фруктов.

Для читателей, не знакомых с SADT методологией, напомним, что на SADT диаграммах прямоугольники обозначают функции (процессы), выполняемые системой, стрелки слева обозначают исходные материалы процесса, стрелки сверху обозначают правила работы и управляющие воздействия, стрелки справа обозначают результаты работы процесса, а стрелки снизу инструменты и исполнителей рассматриваемой функции.

Вот как выглядит обобщающая диаграмма нашего примера:


Рис. 1. Обобщающая диаграмма.

Раскроем блок "Приготовление варенья" с помощью левого щелчка мыши. На экране возникнет диаграмма верхнего уровня, включающая функции "Выбрать ягоды и фрукты", "Стерилизовать банки и крышки", "Подготовить ягоды и фрукты", "Варка", "Охладить варенье", "Разлить варенье в банки". Назначение блока "Анализ модели" будет рассмотрено позже.


Рис. 2. Диаграмма верхнего уровня.

Обратите внимание, что программа закрасила блоки "Подготовить ягоды и фрукты" и "Варка" в красный цвет. Для правильного функционирования этих блоков пользователь должен указать ягоды и фрукты, из которых он собирается варить варенье.

Мы сделаем это позднее, а сейчас раскройте блок "Стерилизовать банки и крышки" и прочитайте инструкции по стерилизации посуды.


Рис. 3. Стерилизация банок и крышек.

Для каждой операции существует подробное текстовое описание, которое можно прочитать, раскрыв соответствующее окно комментария с помощью правого щелчка мыши. Акторный Пролог автоматически создаёт комментарии к блокам диаграмм на основе комментариев к блокам, заданных в исходной SADT модели.



Рис. 4. Просмотр комментариев.

Перед тем как перейти к рассмотрению блока "Подготовить ягоды и фрукты" давайте выберем, из чего именно мы хотим сварить варенье. Для этого щелкните левой кнопкой мыши в блок "Выбрать ягоды и фрукты". Здесь в игру вступит Пролог, и на экране появится диалоговое окно.



Рис. 5. Выбор ягод и фруктов.

Выберем чёрную рябину и закроем блок "Подготовить ягоды и фрукты".


Рис. 6. Подготовка ягод и фруктов.

Раскройте блок "Подготовить сахарную смесь". Экспертная система предусматривает три варианта подготовки сахарной смеси, отдельно для твёрдых ягод (таких как чёрная рябина), для крупных фруктов (таких как яблоки) и мягких ягод (таких как земляника).

Выбранный нами тип ягод (чёрная рябина) подходит только для одного из алгоритмов подготовки сахарной смеси. Экспертная система выявила этот факт и автоматически перекрасила соответствующий блок диаграммы в зелёный цвет. На уровне реализации, параллельный процесс программы, соответствующий рассматриваемому блоку, перешёл в состояние "доказанный", что и вызвало автоматическое изменение цвета блока. Два других блока также автоматически были перекрашены в белый цвет, что означает временную отмену данных ветвей SADT модели (интерпретатор перекрашивает элементарные блоки в красный цвет, а составные, такие как в данном случае, просто делает бесцветными).

Цвет блока верхнего уровня "Подготовить сахарную смесь" был установлен по правилу XOR относительно статуса трёх упомянутых выше блоков. Конкретно, поскольку только один блок, входящий в его состав, соответствует "доказанному" процессу программы, блок верхнего уровня был перекрашен в зелёный цвет. Обратите внимание, что правило раскрашивания XOR блока "Подготовить сахарную смесь" задано явным образом с помощью команды #XOR в составе имени этого блока. Если в имени составного блока не задано правило раскрашивания, по умолчанию используется правило AND.


Рис. 7. Подготовка сахарной смеси.

Раскройте блок "Подготовить смесь из твёрдых ягод и сахара". В состав блока входят операции "Вскипятить воду в кастрюле", "Бланшировать ягоды", "Приготовить сироп" и "Положить ягоды в сироп". Обратите внимание, что чёрную рябину необходимо бланшировать.


Рис. 8. Подготовка сахарной смеси из чёрной рябины.

Два других варианта алгоритма, "Подготовить смесь из крупных фруктов и сахара" и "Подготовить смесь из мягких ягод и сахара", для чёрной рябины не подходят. Поэтому, раскрыв эти блоки, мы увидим, что фон диаграмм закрашен в красный цвет.



Рис. 9. Подготовка сахарной смеси из крупных фруктов и сахара (ветвь отключена).

 



Рис. 10. Подготовка сахарной смеси из мягких ягод и сахара (ветвь отключена).

Теперь перейдём к блоку "Варка". Он также имеет несколько вариантов, а именно "Цикл варки твёрдых ягод и фруктов" и "Цикл варки мягких ягод и фруктов".


Рис. 11. Варка.

Для чёрной рябины подошёл вариант "Цикл варки твёрдых ягод и фруктов".


Рис. 12. Цикл варки твёрдых ягод и фруктов.

Ветвь алгоритма "Цикл варки мягких ягод и фруктов" отключена.



Рис. 13. Цикл варки мягких ягод и фруктов (ветвь отключена).

Раскройте блок "Нагреть смесь" левым щелчком мыши. Акторный Пролог покажет время нагрева сахарной смеси, рекомендуемое для выбранного типа ягод.



Рис. 14. Рекомендуемое время нагрева сахарной смеси.

Вернёмся теперь к диаграмме верхнего уровня и рассмотрим блок "Анализ модели".



Рис. 15. Полный перечень необходимой посуды и инструментов.

Раскрыв этот блок левым щелчком мыши, мы получим полный перечень посуды и инструментов, необходимых для приготовления варенья из выбранных ягод и фруктов. В ходе построения этого списка параллельный процесс, соответствующий блоку "Анализ модели", вычислил полный список блоков SADT модели, задействованных для приготовления варенья из чёрной рябины. Из каждого блока он получил перечень соответствующих ему инструментов и посуды. На основе этих данных был построен полный перечень посуды и инструментов, необходимых для приготовления варенья.

Эта функция экспертной системы запрограммирована с использованием рекурсивных процессов, отключающих портов и резидентов. В ходе трансляции SADT модели Акторный Пролог обеспечивает необходимые "коммуникации", позволяющие процессу установить связь и взаимодействовать с процессами, соответствующими другим блокам диаграмм.

В результате использования этих логически чистых средств, программа гарантирует корректность выведенных результатов даже при изменении параметров, заданных пользователем. Это означает, что при изменении заданных ягод и фруктов, логический вывод, осуществлённый программой, будет автоматически модифицирован, в результате чего список посуды и инструментов в диалоговом окне будет обновлён. Это относится также к рекомендуемому времени нагрева сахарной смеси, рассмотренному ранее, а также к раскраске блоков SADT модели. Выберите для приготовления варенья яблоки и посмотрите, как изменится список посуды и инструментов.



Рис. 16. Автоматический анализ модели.

Для наблюдения за переключением ветвей SADT модели при изменении параметров можно открыть несколько диаграмм и упорядочить их с помощью операции "Window | Horizontal Tile".



Рис. 17. Работа с несколькими диаграммами одновременно.

Откройте диалоговое окно блока "Нагреть смесь" и посмотрите, как изменяется рекомендуемое время нагрева сахарной смеси для различных ягод и фруктов.



Рис. 18. Взаимодействие пользователя с визуальной экспертной системой.

Просмотрев исходный текст экспертной системы, можно убедиться, что эта программа, на самом деле, очень простая. Фактически, программисту не пришлось прилагать никаких дополнительных усилий для визуализации процесса принятия решений. Все это было получено автоматически за счёт повторных доказательств логических акторов и трансляции графических диаграмм в Акторный Пролог. Сравните исходный текст программы с полным листингом, включающим текст, созданный автоматически в ходе трансляции SADT модели. Определение диалоговых окон экспертной системы можно найти здесь.

Оглавление