Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка автоматизированных экспертных систем в Exsys CORVID. Лабораторный практикум

.pdf
Скачиваний:
1
Добавлен:
12.08.2026
Размер:
832 Кб
Скачать
☆

4) «IF (50 < «Признак_2» ≤ 100), THEN («Ситуация_2» := 20 баллов)».

Сначала добавьте переменную «Признак_1». В строке «Name» введите «Признак_1», выберите пункт «Static List», нажмите на кнопку OK (рис. 2.7), после этого переменная добавляется в список переменных слева.

Комментарий «Prompt» (поле «Main Prompt») для данной переменной изначально автоматически устанавливается такой же, как и имя переменной. Если необходимо, то можно изменить этот комментарий так, чтобы он отражал семантику соответствующей переменной. При этом комментарий может содержать любые символы, будет отображаться при задании вопроса пользователю и, иногда, использоваться для описания переменной в конечных результатах. Текст «Prompt» может быть объединен с каким-либо утверждением. Для изменения этого текста просто кликните на поле ввода и введите изменения.

Теперь необходимо добавить возможные значения, входящие в статический список для данной переменной. Для этого введите первое из двух значений «Значение_1_1» в текстовое поле «Full Text» (вкладка «Static List» находится внизу на правой стороне, рис. 2.8). На этой вкладке автоматически размещается тип переменной, которую вы выбрали. Можно сменить тип переменной, нажав на вкладку, которая означает другой тип, но это можно сделать, только если переменная еще не используется.

Значения переменной имеют два вида – полный текст («Full text») и сокращенный текст («Short text»). Сокращенный текст используется для построения логических блоков «Logic Block» и команд (диаграмм логической структуры), в которых удобнее применять короткие строки, обычно не более 30 символов. Хотя ограничения на него нет. Если «Full Text» слишком длинен, то его лучше уменьшить, чтобы легче было работать в «Logic Block».

11

Рис. 2.7. Окно «New Variable»

Если полный текст значения переменной состоит из небольшого количества символов, то он может быть просто скопирован нажатием на клавишу <Enter>. Часто в качестве сокращенного текста используется подходящий фрагмент полного текста. Для копирования такого фрагмента следует его выделить и нажать на кнопку <Copy>. При этом пробелы автоматически конвертируются в подчеркивания, а неразрешенные символы удаляются из сокращенного текста. Также можно просто ввести сокращенный текст или любую другую часть полного текста с клавиатуры.

Теперь первое значение переменной введено (см. рис. 2.8). Для добавления этого значения нажмите на кнопку «>». Поля «Short Text» и «Full Text» очистятся для ввода следующего значения. Кнопки «<» и «>» позволяют перемещаться по списку от одного значения к другому. Ограничений на количество значений в списке нет.

Добавьте следующее значение переменной «Значение_1_2» в список. «Значение_1_1» и «Значение_1_2» может быть числовым.

12

Рис. 2.8. Окно переменных «Variables»

Теперь необходимо указать, что пользователь может выбрать только одно значение из списка. Существует несколько способов сделать это в CORVID. В данном случае ограничим количество значений, которые могут быть присвоены данной переменной. Для этого выберите закладку «Options» и выделите кнопку-пере- ключатель «SINGLE value» (рис. 2.9).

Рис. 2.9. Закладка «Options» в окне переменных «Variables»

Первая переменная полностью определена и может быть использована в логических блоках и командах. Для создания

13

следующей переменной «Признак_2» необходимо нажать на кнопку «New» в окне «Variables» (рис. 2.10), ввести название переменной, выбрать тип «Numeric value» и нажать на кнопку ОK.

Рис. 2.10. Окно переменных «Variables»

Переменные типа «Numeric Variables» не имеют списка значений, они могут использоваться, когда присваиваемые им значения являются числами, и значение будет использоваться в алгебраических выражениях.

Во вкладке «Continuous» можно настроить диапазон значений. Она используется для того, чтобы ограничить диапазон значений, которые вводит пользователь, например для проверки данных на достоверность. Так как значение «Признак_2» не может быть меньше 0 и больше 100, введите 0 в поле «Lower Limit» (нижний предел), а 100 в поле «Upper Limit» (верхний предел) (рис. 2.11). Ввод значения автоматически выберет пункт рядом с «Lower Limit».

14

Рис. 2.11. Закладка «Continuous» в окне переменных «Variables»

Этот диапазон используется, когда система просит пользователя ввести значения. Значения, которые не входят в заданный предел, не учитываются. В некоторых системах использование проверки ввода упрощает логическую структуру.

IF-части правил уже определены и для продолжения построения базы знаний необходимы еще две переменные для THENчастей – «Ситуация_1» и «Ситуация_2». В CORVID существует несколько способов определения этих частей правил, но обычно для целей или действий, которые рекомендует экспертная система (выбирает наилучший вариант, рекомендацию, совет), используются доверительные переменные «Confidence Variable».

Если окно переменных скрыто, то его можно открыть с помощью пункта «Variables» меню «Windows» или с помощью кнопки панели инструментов (значок «Add / Edit Variables», рис. 2.3).

Для добавления переменной нажмите на кнопку «New». Новая переменная «Ситуация_1» будет использоваться для оценивания возможности возникновения ситуации № 1. Также необходимо указать тип переменной – «Confidence», выбрав соответствующую кнопку-переключатель «Confidence – Value will be a confidence factor». Затем нажмите OK (рис. 2.12).

Для новой переменной автоматически будет установлен комментарий, повторяющий ее имя (рис. 2.13). В группе вкладок, расположенных внизу справа, выбрана вкладка «Confidence». На ней расположено много настроек, которые позволяют объединять значения находится (например, путем суммирования, команда «Sum» в закладке «Calculation»), которые были переданы (присвоены) переменной, различными путями. То есть опции для доверительной переменной устанавливаются на закладе «Confidence» – значения, которые она может принимать, и алгоритмы комбинирования этих значений для вывода окончательного значения (суммарной балльной оценки возникновения ситуаций № 1 и № 2).

15

Рис. 2.12. Окно «New Variable»

Рис. 2.13. Окно переменных «Variables»

16

Для данного примера можно оставить значения по умолчанию, а именно входные значения «Input Value», которые не ограничены, и окончательное значение переменной «Ситуация_1», вычисляемое как сумма всех присвоенных значений (баллов) переменой в THEN-части правил, у которых выполнилось условие IF-части.

Аналогично добавьте переменную «Ситуация_2»: нажмите на кнопку «New», введите имя переменной, выберите тип переменной «Confidence» и нажмите OK. Далее нажмите на кнопку «Done», чтобы запомнить изменения и закрыть окно «Variables».

Теперь, когда все необходимые переменные определены, следует перейти к построению логических блоков.

17

3. Лабораторная работа 2. ПОСТРОЕНИЕ ЛОГИЧЕСКОГО БЛОКА ЭКСПЕРТНОЙ СИСТЕМЫ

С помощью логических блоков описываются знания в экспертной системе. Логический блок «Logic Block» может содержать одно или несколько логических деревьев и/или правил. Вся система может быть построена с помощью нескольких логических блоков. Отдельные логические блоки позволяют сгруппировать деревья и правила, относящиеся к какому-либо аспекту решаемой проблемы.

Для создания логического блока выберите пункт «Logic Block» в меню «Windows» или нажмите на кнопку «Add a New Logic Block» в панели инструментов (рис. 3.1). На экране появится окно «Logic Block» (рис. 3.2).

Рис. 3.1.Меню «Windows» и значок «Add a New Logic Block»

Рис. 3.2. Окно «Logic Block»

18

В этом окне выполняется построение и редактирование логических блоков. Просматривать содержимое логического блока можно также в окне правил «Rule View» (рис. 3.3), которое отображает базу знаний в виде правил.

Когда открывается новое окно «Logic Block», оно получает имя «Logic Block N», где N – это номер логического блока. Изменять это имя не обязательно, но если в системе используется несколько логических блоков, то лучше переименовать логический блок так, чтобы его имя отражало решаемую подзадачу (для этого необходимо использовать кнопку «Edit Name»).

Рис. 3.3. Окно правил «Rule View»

Для начала следует добавить IF-части правил. В данном примере имеются четыре правила, условия этих правил относятся к состоянию одного и того же объекта. Поэтому можно использовать логическое дерево для описания данных знаний. Древовидные структуры позволяют отслеживать, что все возможные варианты значений учтены в правилах, их быстрее построить и легче поддерживать, чем отдельные правила (хотя последние и могут использоваться вместо деревьев).

Если логический блок пустой, то активна только кнопка «Add» в поле «IF». Всего имеются четыре кнопки для добавления IF-части правил. Они позволяют добавлять часть «IF» в различные позиции относительно текущего выделенного узла дерева. Нажмите на кнопку «ADD» в поле «IF».

На экране отображается окно для добавления узлов (утверждений) к логическому блоку «Add To Block» (рис. 3.4). С помощью данного окна могут быть добавлены различные типы узлов. Но так как для правил части «IF («Признак_1» = «Зна-

19

чение_1_1»), THEN («Ситуация_1» := 10 баллов)» переменная уже добавлена, то для выделения требуемой переменной просто нажмите на имя «Признак_1».

Переменная «Признак_1» выделена. В правой части окна появляется статический список значений для выделенной переменной. Список значений отображается на закладке «Static List».

Так как первое выражение для правил IF-части звучит «Признак_1» = «Значение_1_1», то следует выбрать «Значение_1_1» из списка «Select Values». В качестве значения отображается сокращенный текст переменной. Чтобы увидеть полный текст, необходимо поставить галочку «Show Full Value Text».

Рис. 3.4. Окно «Add To Block»

Следует также сформировать часть «IF» для второго правила: «IF («Признак_1» = «Значение_1_2»), THEN («Ситуация_2» := 10 баллов)». Надо добавлять отдельные ветви дерева для каждого из двух значений таким образом. Наиболее быстрый способ это сделать – нажать на кнопку «Add Each Individually».

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]