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

It_Kompyuterny_Praktikum

.Pdf
Скачиваний:
26
Добавлен:
21.03.2016
Размер:
1.65 Mб
Скачать

Рис. 1.3. Разработка правил в редакторе правил.

Пример. Пусть при реализации обратного вывода используется цель с именем Sovet. Тогда логический вывод инициируется с помощью функции:

BackwardChain (Sovet).

При реализации как прямого, так и обратного выводов формируются два списка. Первый из них – это список правил (Rule List), намеченных к анализу на последующих шагах логического вывода. При прямом выводе правило включается в список, если его посылка содержит пару объект:слот из заключения, полученного на предыдущем шаге. При обратном выводе наоборот, а именно, правило включается в список, если его заключение содержит пару объект:слот из анализируемой посылки. Построение списка правил порождает второй список. Действительно, рассмотрим прямой вывод. В общем случае каждое правило, включаемое в первый список (Rule List), имеет в своей посылке еще и другие условия, кроме того, из-за которого оно было включено в этот список. Истинность всех этих дополнительных условий должна быть проверена прежде, чем это правило будет применено в процессе рассуждения. Для этого соответствующие этим условиям пары объект:слот собираются в специальном списке Agenda и затем последовательно проверяются на истинность. Очевидно, что в момент

11

запуска прямого вывода этот список не должен быть пуст. Поэтому перед запуском в список заносится одна или более пар объект:слот, котор ых достаточно, по мнению разработчика, для начала вывода. Занесение производится с помощью команды Assert (), аргументом которой является имя заносимого слота. Заметим, что в ЭО Kappa принято считать, что все функции, инициирующие какие-либо действия, принимают значения TRUE и FALSE (истина, ложно). В отношении функций инициирующих логический вывод такой подход адекватен, т.к. при этом доказывается истинность или ложность некоторого утверждения (цели).

Пример. Пусть значение слота Lgoth:NumberofP равно 1000. =>Assert (Lgoth:NumberOfP);

TRUE =>ForwardChain(NULL,Empty); FALSE

Цель не определена, поэтому на месте ее имени в функции ForwardChain написано NULL . Результат вывода (состоящего из одного правила) ложен, т.к. значение слота Lgotn:NumberofP равно 1000.

Установка приоритета правил позволяет регулировать порядок рассуждений. Каждая стратегия регулирования использует приоритет правила для выявления относительной важности правил, соответствующих заданному пункту Списка подлежащих рассмотрению пар объект: слот (Agenda), прежде чем применять эти правила (Rule List) в процессе рассуждения. По умолчанию приоритет равен нулю, и правила в списке организованы случайным образом. Можно установить приоритет в диапазоне [-32000; 32000], чем больше число, тем выше приоритет.

Формирование цепи рассуждений в обратном направлении

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

Для такого формирования цепочки рассуждений требуется предопределенная цель (написанная в Goal-редакторе), а процесс вывода непрерывно пытается удовлетворить эту цель

Различают три возможные фазы в обратном рассуждении

1.Расширение (Expanding) - происходит попытка оценить как условные части правил, так и значения пар объект: слот в направлении достижения цели,

2.Разрушение (Collapsing) - определение достижения цели. Цель может быть достигнута благодаря недавно добавленным с помощью

процесса расширения новым фактам Пары объект: слот и правила могут быть "разрушены" ради достижения цели (когда они становятся «лишними»).

12

3. Выяснение (Asking) - происходит запрос у пользователя значения слота при обнаружении отсутствия последнего. Эта фаза является не обязательной. Для отказа от этой функции используется переменная

[NOASK].

Вызвать процесс формирования цепочки в обратном направлении можно четырьмя способами

в интерпретаторе KAL (функция BackwardChain),

в окне трассировщика правил (окно Rule Trace, меню Option, BackwardChain),

из окна Inference Browser (меню Options, Step Mode),

программно, используя необходимые KAL-выражения.

Стратегии принятия решения. Нам известно, что Rule List - это список правил из текущего набора правил, которые соответствуют предпосылке элемента в Списке слотов, a Agenda (Список слотов) - список пар объект:слот, назначенных к рассмотрению в процессе рассуждения в прямом направлении. Во время выполнения логического вывода состав этих списков взаимосвязано изменяется.

Слоты, значения которых изменяются в результате выполняемых правил, автоматически добавляются в список Agenda. Для этого также можно воспользоваться функцией Assert в Then-части правила или в KALинтерпретатора. По умолчанию процесс формирования цепочки в прямом направлении продолжается до тех пор, пока не опустеет один из списков - Agenda или Rule List .

Предусмотрены следующие режимы Списка слотов:

IGNORE - обрабатываться будет пункт Списка слотов, появившийся в этом перечне самым последним (очередь будет перестраиваться);

NOIGNORE - пункт будет обработан в порядке очереди независимо от момента его появления в Списке.

Очевидно, что в процессе рассуждения не исключены конфликтные ситуации. Например, если пункту Списка слотов соответствует несколько правил, то какое из них будет выполнено в первую очередь? Для решения подобной проблемы KAPPA предлагает четыре различные стратегии:

1.SELECTIVE Evaluation - выборочная оценка (по умолчанию),

2.DEPTHFIRST- оценка по глубине;

3.BREADTHFIRST - широтная оценка;

4.BESTFIRST Evaluation -оценка лучших.

Стратегия выборочной оценки является наиболее эффективной, так как выбирается только одно самое успешное направление рассуждения. Как только одно правило из Списка стало истинным, так все остальные правила удаляются из Rule List и новый цикл начинается с пустым Списком правил.

Глубинная стратегия является исчерпывающей, она раскрывает все возможные последствия только что появившейся в Списке слотов пары.

13

Отличие от выборочной только в том, что она не очищает Список правил после каждого успешного выполнения правила. Новые правила добавляются к началу Списка в соответствии с приоритетами. Если не пусты оба списка (Rule List и Agenda), то приоритет отдается очередному элементу Списка слотов. Слоты добавляются к началу списка Agenda.

Широтная стратегия (тоже исчерпывающая) раскрывает все возможные значения нового факта. Новые правила добавляются к концу Списка (в соответствии с их приоритетами). Первым применяется то правило, которое может производить новые пункты в Списке слотов. Если не пусты оба списка (Rule List и Agenda), то приоритет отдается очередному элементу Списка правил.

Оценка лучших. Новые правила перемешиваются с уже имеющимися в Списке в соответствии приоритетами, первым применяется правило; которое может производить новые пункты в Списке слотов. Если не пусты оба списка (Rule List и Agenda); то приоритет отдается очередному элементу Списка слотов.

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

1.1.5. Средства отладки базы знаний

Как правило, при разработке базы знаний допускаются многочисленные ошибки. Часто они являются следствием недостаточной внимательности и организованности. Так, например, в результате ошибки могут не совпадать обозначения одного и того же слота, использованные в предметной и функциональной моделях. Вплоть до того, что в одном случае имя может начинаться с большой буквы, в другом с маленькой. Иногда возникает путаница в обозначениях оператора присваивания «=», оператора сравнения данных числового типа «==» и оператора сравнения данных символьного типа «#=». Также распространена ошибка, когда вместо круглых скобок ставится квадратная и наоборот. Для обнаружения подобных и многих других ошибок в ЭО KAPPA предусмотрены средства отладки.

Окно связи правил (Rule Relations)

В этом окне можно просматривать связи правил. Для этого надо выбрать интересующее Вас правило, тогда в группе IF Dependencies окажутся правила, заключения которых являются посылками для него, а справа (в разделе Then Dependencies) - правила, предпосылки которых - заключение нашего правила. Слоты, которыми связаны эти правила, просматриваются посредством выбора пункта List Slots из всплывающего меню (при выборе конкретного правила).

Можно просмотреть отношения любого правила, появившегося в этом окне, выбрав его с помощью мыши или обратившись к пунктам меню

14

Options/Show Relations. Кроме того, из этого окна возможна загрузка редактора правил.

Окно трассировки правил (Rule Trace)

Это окно позволяет просматривать процесс рассуждения поэтапно, т.е. является инструментом отладки (трассировки) системы правил.

Рис. 1.4. Окно трассировки правил.

Состав основного меню рассматриваемого окна виден из рисунка. Пункт File содержит только строку Save Window Content... - позволяет сохранить в файле содержимое окна. Подменю Edit - Clear Window - очистить окно (тем самым, удалив информацию из памяти компьютера). Подменю Options -

Resize Window Content..., Active Trace и Step Mode... – рассмотрено выше. Состав меню Trace/Break: Rule Trace и Slot Trace - позволяет выбрать (Select)

правила и слоты для трассировки. Rule Break и Slot Break - для прерывания процесса трассировки.

Разберемся с подменю управления (Control). Start - запускает пользовательскую функцию с аналогичным именем (если такой нет, то опция недоступна). Assert... - вызывает KAL-функцию Assert, которая помещает слот в список рассматриваемых слотов, это необходимо проделать перед выполнением правила с неопределенным параметром (Patterns). SetForwardChainMode... - позволяет установить режим работы Списка правил и Списка подлежащих рассмотрению слотов (Agenda) и рассматривается подробно при изучении стратегий принятия решений, ForwardChain... - начинает прямое формирование цепочки рассуждений вызовом одноименной KAL-функции, BackwardChain...- формирование цепочки в обратном направлении, ResetForwardChain - вызывает одноименную KAL-функцию для очищения Списка правил и Списка подлежащих рассмотрению слотов, Call Function ... - выполняет функцию пользователя, предварительно предложив список имеющихся, Explain - активизирует средство объяснений системы

КАРРА .

Для использования трассировщика правил надо

1) выбрать в главном окне системы КАРРА иконку Rule Trace;

15

2)из меню Trace/Break - Rule Trace;

3)выбрать правила из списка доступных (Available Rules);

4)перенести их в список выбранных (Selected Rules);

5)OK;

6)начать рассуждения, выбрав надлежащий режим из меню управления

(Control).

Активная трассировка при прямом формировании цепочки рассуждений

Формирование прямой цепочки рассуждений можно выполнять в режиме активной трассировки (Active Trace Mode). При этом можно по Списку слотов (Agenda) и Списку Правил (Rule List) видеть процесс формирования цепочки. Кроме того, можно пройти весь процесс формирования цепочки по шагам.

Окно трассировки правил (The Rule Trace window) содержит три дочерних окна и одну кнопку: окно текста трассировки (Trace Text window), окно Списка слотов (Agenda list box, в нем перечисляются, все необходимые в процессе рассуждения пары объект: слот), список трассируемых правил (Rule list box) и кнопку Шаг (Step button). По умолчанию, видимым является только окно с текстом трассировки (когда режим активной трассировки выключен).

Если установлен режим активной трассировки (с помощью меню Options в окне Rule Trace), то станут видимыми и остальные дочерние окна. Кнопка Шага появляется, если выполняется прямое формирование цепочки по шагам. Чтобы установить пошаговый режима, необходимо прежде установить режим активной трассировки. Пошаговый режим автоматически вызывает функцию ForwardChain (формирования цепочки рассуждений в прямом направлении), появляется диалоговая панель с запросом аргументов этой функции.

Пример. Пусть в окне трассировки правил (Rule Trace) выбран режим активной трассировки (Active Trace в меню Options). Тогда поместим правило Empty в список выбранных правил (в меню Trace/Break, Rule Trace).

Аналогичным образом выберем слот

[People]:NumberOfP (в меню Trace/Break, Slot Trace),

поместим слот

Lgotn;NumberOfP в Список слотов (Agenda) с помощью функции

Assert(Lgotn:NumberOfP) из меню Control.

Рис. 1.5.Аргументы функции ForwardChain. Выберем в меню

Options пункт Step Mode... и

16

заполним появившуюся панель (рис. 1.5).

Окно трассировки правил примет вид (рис. 1.6 а).

а)

б)

в)

Рис. 1.6. Трассировка правил

После нажатия экранной кнопки STEP или клавиши ввода очередной элемент Списка слотов удаляется, и в Список правил добавляются все

17

Рис.1.7. Конец вывода.

правила, имеющие отношение к этому элементу (пара объект: слот):

Стрелка на кнопке STEP показывает направление действия следующего шага. Очередное нажатие этой кнопки удалит следующее правило в списке и добавит новые элементы в Список слотов (связанные с этим правилом). В нашем примере новых элементов в Agenda не появится:

Формирование цепочки вывода завершится (рис.1.7).

Окно просмотра иерархии выводов (Inference Browser) Пример.

Рис. 1.8. Окно просмотра иерархии выводов (Inference Browser).

Так выглядит Inference Browser после прогона нашего примера (см. выше). Меню Options выполняет те же функции, что и одноименный пункт в окне Object Browser, отличие только одно - пункт меню Step Mode..., который активизирует режим формирования цепочки рассуждений в обратном направлении. Кроме того, выбор левой кнопкой мыши правила в окне просмотра иерархии выводов влечет появление меню Edit/Show Relations. Edit - вызывает редактор правил с текстом текущего правила. Show Relations

-активизирует окно Rule Relations для выбранного правила.

1.1.6.Средства создания интерфейса с пользователем. Окно сеанса

(Session Window)

Интерфейс для решаемой прикладной задачи формируется пользователем в окне Session. Все элементы этого окна, включая и само окно, представлены в объектной модели в виде объектов соответствующих классов. Эти классы изначально предусмотрены (предопределены) в ЭО Kappa и составляют инструментарий для разработки интерфейса. Так окно Session представлено объектом Session в классе KSession, который, в свою

18

очередь, является подклассом в классе KWindow. Слотами любого создаваемого объекта-окна являются его геометрия, цветовая гамма, меню и т.п. Все элементы интерфейса, размещаемые в окне сеанса (надписи, информационные окна, кнопки и т.п.), представляются объектами соответствующих подклассов класса Image. Так любая кнопка представляется объектом подкласса Button, статическая надпись – объектом подкласса Text и т.д. Таким образом, для создания нового интерфейсного окна необходимо создать объект в классе KSession, для создания новой кнопки – объект в классе Button и т.д. Создавать и редактировать элементы интерфейса можно в окнах сеанса, просмотра объектов и интерпретатора. В последнем случае следует использовать функции MakeImage и MakeInstance. Ниже рассматривается процедура проектирования интерфейса в окне сеанса, основанная на принципах визуального программирования, при которой проектировщик должен лишь встроить заготовку элемента интерфейса, а не разрабатывать ее.

Рис. 1.9. Окно сеанса (Session Window)

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

Состав меню окна виден на рисунке. Print - для распечатки определенного образа или целого экрана. Пункт Edit включает пять опций, которые доступны только в режиме Расположения:

редактирования образа (Edit Image),

переименования (Rename Image),

удаления (Delete Image),

свертывания (Hide Image) - образ удаляется из окна сеанса (в БЗ сохраняется),

показа скрытых образов (ShowHiddenImage...) в окне Session - предлагается список скрытых образов, надо выбрать тот, который Вы хотите сделать видимым.

19

Меню управления (Control) позволяет вызывать функции и получать объяснения рассуждений. Имеет три опции: Start, Call Function, Explain.

Пункт Опции (Options) позволяет выбирать режим окна сеанса и создавать новые образы. Имеет 4 опции: Tool Box (инструментарий) - выбор этой опции вызывает появление в окне сеанса панели с инструментами - доступно в режиме Layout, Image Adjuster (монтажник) - открывает в окне сессии панель регулировки размеров и расположения образа. Set Tab Stops (установка табулостопов) - упорядочивает активизацию образов при нажатии клавиши табуляции. Layout Mode - переключает режимы окна сеанса.

Меню Window содержит пункты New, Delete, Rename Object, Select, Hide, Unhide и Attributes. Рассматриваемая нами версия системы КАРРА (1.2) позволяет создавать несколько окон сеанса (с разными именами), но главным остается окно Session. Если мы установили режим Runtime, то доступными становятся только Hide и Unhide -скрыть и показать окно (соответственно). В зависимости от ситуации может быть предложен список окон сеанса. В режиме Layout в Session доступны еще New (можно создать новое окно) и Attributes (позволяет просмотреть и изменить основные атрибуты текущего окна), а если открыто еще какое-либо окно сеанса, то активизируется и Select, обеспечивающий возможность выбрать другое окно текущим. Кроме того, если текущим является не главное окно сеанса (Session) и выбран режим Layout, то доступными становятся все пункты меню Window (Delete уничтожение,Rename Object - переименование текущего окна).

Меню Image позволяет создавать новые объекты предопределенных классов активных образов (ActiveImages classes), имеет 16 опций: Button, Text, Edit, Transcript, Bitmap, Drawing, State Box, Meter, Line Plot, Slider, Single List Box. Multiple List Box, Check Box Group, Radio Button Group, Check Box и Select Image, которые типичны для средств визуального проектирования интерфейсов в Windows и здесь не рассматриваются.

1.1.7. Средства объяснений оболочки KAPPA

Позволяет Вам задать вопрос: «Почему слот имеет такое значение?». Эта возможность открыта для любого слота, имеющего единственное значение (single). Вы можете воспользоваться этим средством одним из следующих способов:

в окне SESSION выбрать пункты Control, Explain и обозначить интересующий Вас слот (Имя объекта: Имя слота);

то же самое проделать в окне Rule Trace;

в интерпретаторе языка KAL воспользоваться функцией

Explain();

Окно объяснений содержит текст объяснений (если значение слота

изменено в результате работы правила, то указывается это правило и относящийся к нему комментарий) и две кнопки: Выход (ОК) и Объяснить (Explain). Последняя позволяет запрашивать объяснение значения других слотов, а информация помещается в то же окно. Для нашего примера окно с

20

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