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

It_Kompyuterny_Praktikum

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

Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики

О.С. Амосов, Н.В. Колесов, Д.С. Магола, О.А. Степанов

Интеллектуальные технологии в задачах управления и навигации

(Компьютерный практикум)

Санкт-Петербург

2012 г.

1

Оглавление

 

1. Компьютерный практикум по экспертным системам .........................

3

1.1.Экспертная оболочка KAPPA – инструментальное средство

разработки экспертных систем .....................................................................

3

1.1.1.

Представление знаний и интерфейс в системе KAPPA...................

3

1.1.2.

Редакторы знаний и функции системы KAPPA ..............................

5

1.1.3.

Основные этапы разработки объектной модели..............................

7

1.1.4.

Построение функциональной модели с использованием

 

продукционных правил ...............................................................................

10

1.1.5.

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

14

1.1.6.

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

 

(Session Window) ...........................................................................................

18

1.1.7.

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

20

1.2.

Практическое задание ......................................................................

21

1.2.1.

Разработка и программирование объектной модели предметной

области...........................................................................................................

22

1.2.2.

Разработка и программирование функциональной модели

 

предметной области......................................................................................

27

2. Компьютерный практикум по нечетким системам............................

34

2.1.Аппроксимация функции одной переменной с использованием

нечеткой системы.........................................................................................

34

2.2. Построение элементарной нечеткой экспертной системы............

41

2.3.Программирование нечеткой системы в среде MATLAB с

использованием встроенных функций.......................................................

51

2.4.

Кластеризация с помощью алгоритма нечетких центров ............

57

3. Компьютерный практикум по нейронным сетям...............................

68

3.1.

Аппроксимация функции на основе нейронных сетей .................

68

3.2.Использование инструмента NNTool для построения нейронной

сети

............................................................................................................

71

3.3.

Кластеризация с помощью нейронных сетей.................................

79

3.4.

Рекуррентные нейронные сети Хопфилда и Хэмминга ................

87

3.5.Нейронные сети радиально-базисных функций. Вероятностные

сети ............................................................................................................

91

3.6.Построение нейронечеткой модели с помощью ANFIS-

редактора.......................................................................................................

 

95

Приложение 1.

Функции пакета «Fuzzy Logic Toolbox» системы

 

MATLAB для работы с системами нечеткой логики ..............................

101

Приложение 2.

Функции пакета «Neural Network Toolbox» системы

 

MATLAB для работы с нейронными сетями ...........................................

104

2

1. Компьютерный практикум по экспертным системам

1.1.Экспертная оболочка KAPPA – инструментальное средство разработки экспертных систем

1.1.1. Представление знаний и интерфейс в системе KAPPA

Экспертная оболочка (ЭО) KAPPA версии 1.2 предназначается для построения ЭС. Она является экспертной оболочкой общего назначения и содержит все программные компоненты ЭС. При работе с ней в задачу пользователя входит лишь разработка БЗ и необходимого для его прикладной задачи интерфейса.

Воболочке KAPPA для представления знаний используются две модели

объектно-ориентированная модель и продукционные правила. В результате объектная модель предметной области может быть представлена в виде иерархии классов и объектов, а функциональная модель – в виде

продукционных правил.

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

Процессы, происходящие в предметной области, отражаются в БЗ оболочки КАРРА тремя способами.

1. Методы (присоединенные к объектам процедуры). Используются для описания поведения слотов. Методы создаются на языке KAPPA-

приложений KAL (КАРРА Application Language).

2.Функции. В системе КАРРА содержится более 240 стандартных (встроенных) функций для манипулирования БЗ. Также можно создавать свои собственные функции на Си или KAL.

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

Синтаксическая основа правил, методов и функций одинакова и определяется синтаксисом языка КАРРА –приложений.

Интерфейс системы KAPPA. После запуска системы KAPPA на экране появляются три окна: главное (KAPPA-(untitled)), окно просмотра иерархии объектов (Object Browser) и окно инструментов знаний (Knowledge Tools или

KTools).

Главное окно содержит основное меню системы KAPPA (File, Edit, Windows и Options) и панель иконок для быстрого доступа к другим окнам оболочки. Кроме того, в этом окне скрыта еще одна часть - комментарии к приложению.

Основное меню является стандартным для Windows-приложений. Оно содержит четыре пункта: для работы с файлами, редактирования

3

Рис. 1.1. Главное (KAPPA-(untitled)), окно просмотра иерархии объектов

(Object Browser) и окно инструментов знаний (Knowledge Tools или KTools).

комментария для разработанного приложения, манипулирования окнами системы КАРРА, включения/отключения видимости комментария к приложению. Заметим, что при открытии/закрытии файла необходимо выбрать его формат - bin или kal (bin - двоичный, kal - ASCII-файл, подобный txt-файлу). Одновременно может быть открыт только один bin-файл.

Меню Окна (Windows) содержит 7 постоянных пунктов, которые позволяют скрыть (Hide) или показать (Show) рабочие окна системы КАРРА, среди которых:

Окно просмотра иерархии объектов (Object Browser). С помощью этого окна можно просматривать и модифицировать классы и объекты модели, а также связи между ними, которые наглядно представлены деревом иерархии.

Окно инструментов знаний (Knowledge Tools). Окно инструментов знаний (The Knowledge Tool Window) обеспечивает доступ ко всем элементам знаний в системе KAPPA - классам, объектам, функциям,

правилам и целям, позволяет их создавать, модифицировать, переименовывать и уничтожать. Кроме того, в этом окне отражается количество всех перечисленных элементов в текущей БЗ (справа, в скобках). Все типы элементов представлены иконками, выбор одной из которых вызывает появление меню New/Edit/Delete/Rename.

• Окно интерпретатора языка системы КАРРА (KAL Interpreter). Окно позволяет интерпретировать Kal-выражения, является альтернативой редакторам знаний и Окну иерархии объектов, а также механизмом тестирования Kal-выражений. В этом окне можно выполнить любую корректную функцию, что позволяет быстро проверить правильность ее написания и работы.

• Окно сеанса (Session). Для конечного пользователя KAPPA -

4

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

КАРРА.

Окно связи правил (Rule Relations). В этом окне можно просматривать связи правил, возникающие в процессе логического вывода.

Окно трассировки правил (Rule Tracing). Это окно позволяет

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

• Окно просмотра иерархии выводов (Inference Browser). Позволяет просматривать в графической форме правила, активизируемые в процессе рассуждения, т.е. направление вывода решения (сразу после окончания процесса рассуждения). Это окно можно использовать для обнаружения ошибок в используемой БЗ.

Открыть эти окна можно также выбором соответствующей иконки в главном окне системы КАРРА.

1.1.2. Редакторы знаний и функции системы KAPPA

Синтаксис языка приложений КАРРА. Все элементы языка оболочки КАРРА можно разделить на следующие синтаксические группы:

1)атомы - отдельное слово или группа слов в кавычках;

2)пары - имя объекта: имя слота;

3)выражения установки - некоторые выражения, разделенные операторами установки (=, +=, +, -, *, /, ^, <, >, <=, =>, ==, !=, ~=, #, #=, And,

Or, Xor, Not);

4)специальные выражения - функции управления типа While, For, ForAll, If, Let;

5)выражения-блоки - выражения в фигурных скобках ({}), разделяемые точкой с запятой (как в Си). После закрывающей скобки не забудьте

поставить точку с запятой ({};); 6) запрос функции - имя функции и аргументы в виде параметров.

Общий вид вызова функции: Имя функции (аргумент1,аргумент2,...); Язык ЭО КАРРА очень чувствителен к синтаксису, нельзя, например,

путать маленькие буквы с заглавными! Аргументами функции могут быть перечисленные выше первые пять элементов языка.

Редакторы знаний – это окна, которые позволяют создавать, проверять и модифицировать элементы знаний. К таким окнам относятся редакторы объектов, классов, слотов, методов, правил, целей и функций. Каждый редактор содержит необходимые инструменты (меню, кнопки и т.д.). Пункт Edit в каждом из них имеет стандартные возможности (Cut, Paste...).

Редакторы классов, объектов, функций, правил и целей можно открыть из окна Инструментов знаний (KTools). В редакторы объектов и классов можно попасть также из окна Иерархии объектов (Object Browser), а

5

редакторы слотов и методов доступны только из редактора объекта или класса, так как первые привязаны к последним.

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

Все функции в системе KAPPA разделены на группы: манипулирования элементами знаний (Knowledge), математические (Math), работы со строками (String), со списками (List), логические (Logical), манипулирования файлами (File), управления или взаимодействия с ОС (Control), работы с окнами КАРРА и с объектами интерфейса (Windows), определенные пользователем функции (User Functions), все функции (All Functions). Получить доступ к имеющимся функциям можно в любом окне системы KAPPA, где возможно использование выражений в KAL-коде. Для этого нажатием правой кнопки мыши в этом окне активизируется всплывающее меню, с помощью которого можно оперативно выбрать из имеющихся необходимую группу функций. С выбором группы функций на экране появляется окно Выбора команды (Select Command), где представлены функции выбранной группы. После щелчка левой кнопкой мыши на любой из них внизу окна появляется формат и список аргументов функции. В описании формата необязательные аргументы указаны в угловых скобках (<...>), а если такой аргумент помещен еще и в квадратные скобки (<[...]>) или стоит на последнем месте среди аргументов функции (не помещен в [ ]), то его можно просто опускать. В противном случае, на этом месте нужно указать необходимое значение параметра или NULL . Если аргумент или список аргументов помещен в скобки следующим образом - [<...>], то даже при отсутствии аргумента (который, кстати, является необязательным (<>)) необходимо указать квадратные скобки ([ ]).

Пример. Формат команды, создающей класс.

MakeClass (@className, @<superName>) .

Аргументами этой команды являются имена создаваемого и родительского классов. Символ @ отмечает аргументы и при записи функции опускается.

Пользователь создает свои функции в редакторе функций, куда можно войти щелчком по пиктограмме Function в окне инструментов Ktools и выбрав Edit или New.

Выполнить любую функцию можно в окне Интерпретатора языка KAL. Приглашение в этом окне имеет вид стрелки =>. Описание исполняемой функции должно оканчиваться точкой с запятой. Выполним два примера. Оба эти примера можно было с таким же успехом выполнить в окне Иерархии объектов.

Пример: Создать подкласс Ground в родительском классе Volost. Это можно сделать с помощью функции MakeClass из группы функций манипулирования знаний. Ее аргументами являются имена создаваемого и родительского классов:

=>MakeClass (Ground, Volost);

6

Ground

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

Если среди аргументов функции фигурирует обозначение слота некоторого объекта, то оно имеет две составляющие - имена класса (объекта) и слота - разделенные двоеточием. Например, People:NumberOfP обозначает слот NumberOfP объекта People.

Пример: Определить значение слота People:NumbetOfP; =>People:NumberOfP;

150

KAL-интерпретатор имеет свое меню: File Edit. В меню Edit, кроме стандартных, имеются еще два пункта: Clear Window (Очистить окно) и Check Syntax...(проверки синтаксиса, можно просто нажатием клавиши F2). Интерпретатор ограничивает содержимое окна 10-ю страницами текста и в случае необходимости автоматически удаляет лишнее.

1.1.3. Основные этапы разработки объектной модели

Объектная модель предметной области может быть разработана как с помощью KAL-интерпретатора, так и в окне Иерархии объектов (Object Browser). Коротко опишем основные приемы построения.

Разработка иерархии классов и объектов. Сразу после запуска системы КАРРА (до открытия конкретного файла) в окне Object Browser представлены следующие структуры, которые составляют основу для разработки всех приложений:

класс Root - фундамент, из которого определяются все остальные классы, его нельзя уничтожить или переименовать;

подкласс Image - для хранения объектов, используемых при создании пользовательского интерфейса;

объект Global - предопределённый объект;

подкласс KWindows - для описания окон сеанса, в нем уже хранится описание главного окна сеанса системы КАРРА - SESSION.

Чтобы создать в классе подкласс/объект, необходимо

1)щелкнуть мышью на имени класса в окне Object Browser;

2)не отпуская клавиши, в появившемся меню выбрать Добавление

Подкласса/Объекта (Add Subclass/Instance);

3)ввести название подкласса/объекта;

4)нажать кнопку ОК.

Удаление и редактирование классов/объектов производятся аналогичным образом (команды Edit и Delete).Класс, у которого есть потомки, удалить невозможно.

Пример. Окно Object Browser

7

Рис. 1.2. Окно иерархии объектов (Object Browser).

В Root создан класс Volost, класс People - его подкласс, Lgoth и Usual - объекты этого класса. Объекты показываются курсивом, связи КЛАССКЛАСС - непрерывной чертой, а КЛАСС-ОБЪЕКТ - штриховой линией, а иерархия объектов распространяется слева направо. Если в классе People определить слот, например, NumberOfp (количество человек), то и объекты Lgoth и Usual будут иметь аналогичный слот NumberOfp, перешедший к ним по наследству от родительского класса People.

КАРРА автоматически относит к каждому слоту ряд опций (в редакторе класса/объекта выбрав конкретный слот, войдите в меню Slots/Edit/Options), среди которых, в частности, три опции для присоединения к слоту методов (процедур):

метод, выполняемый автоматически, когда запрашивается значение слота, а это значение отсутствует;

метод, выполняемый перед тем, как произойдет изменение значения слота;

метод, выполняемый сразу после изменения значения

слота.

Кроме того, для слота определяются значность, тип, область допустимых значений:

значность (cardinality) - один (single, по умолчанию), много (multiple, значения имеют, вид списка);

тип значения: текст, число (целое или вещественное), булевский (true или false), объект (имя класса или экземпляра);

ограничения и допустимые значения (если список значений, то эти значения писать через пробел).

Вокне Иерархии объектов есть возможность просматривать только

часть всей иерархии, для этого нужно в классе использовать команду Focus , в результате будут видны только этот класс и его потомки. Для какой-либо работы с существующим элементом сначала следует выбрать его имя из списка имеющихся, а затем уже активизируется соответствующий редактор.

Наследуемые от предков слоты КАРРА помечает звездочкой (*).

8

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

• сделать слот локальным (в редакторе класса/объекта для соответствующего слота выбрать пункты меню Slots/Make local). Глобальность слота можно восстановить путем удаления соответствующего локального слота;

• редактировать значение слота на определенном уровне.

В обоих случаях измененное значение наследуется слотами, которые находятся ниже по иерархии.

Разработка методов

Методы - это процедуры, являющиеся атрибутами объекта. Процесс активизации метода в объекте назван посылкой сообщения. Когда объект получает сообщение, относящееся к одному из его методов, этот метод вступает в действие и выполняет определенную им процедуру. Методы передаются по наследству, по аналогии со слотами.

Пример.

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

(People:NumberOfP). Для этого нужно;

1)выбрать редактор Класса, пункт меню Edit и класс People;

2)меню Methods/New;

3)назовем метод num;

4)в появившемся окне редактора метода в строке аргументов

(Arguments) ввести:

x NumberOfP

5) в теле метода:

{

If( Self:x<=1000 )

Then PostMessage(«Вы ввели количество жителей волости.»)

Else PostMessage(«Введенное Вами число жителей волости слишком большое !»);

};

6)выбрать Update/Close;

7)в классе People щелкнуть два раза на слот NumberOfp;

8)войти в пункт меню Options;

9)ввести в поле After Change название нашего метода num;

10)выбрать тип значения number и ограничения 0 .. 1000;

11)нажать OK и сохраните класс People.

Для проверки этого метода следует ввести в окне Интерпретатора:

AskValue(People, NumberOfp);

и нажать Enter.

9

Методы выполняют несколько видов действий:

изменяют состояние БЗ (значения слотов),

посылают сообщения в любой объект;

активизируют другие средства системы, например, базирующиеся на правилах рассуждения.

1.1.4. Построение функциональной модели с использованием продукционных правил

Цикл формирования цепи рассуждений в прямом направлении

Основным средством разработки функциональной модели являются правила. В общем виде правила имеют следующую конструкцию:

IF посылка THEN заключение.

Каждое правило имеет имя. Для создания правил используется редактор правил (окно KTools, пиктограмма Rule). Окно редактора имеет два основных поля If и Then, где пользователь набирает тексты посылки и заключения соответственно. Как посылки, так и заключения представляют собой выражения, состоящие из имен классов, объектов, их слотов и значений слотов.

В приводимом примере правило, имеющее имя Empty, проверяет значение слота NumberOfp в любом подклассе или объекте, принадлежащем классу People на отрицательность или равенство нулю. В случае если это условие выполняется, то у пользователя запрашивается значение этого слота (функция AskValue()). В правилах можно, но необязательно использовать переменные, называемые в ЭО КАРРА Patterns (образцы переменной). В поле Patterns слева от вертикальной черты пишут имя переменной, которое будет фигурировать в правиле, а справа - имя класса, объектом которого она является. Правило, описанное таким образом, работает для любого объекта класса. В результате использования этого приема можно одно и то же правило применить ко многим объектам.

В систему КАРРА встроены механизмы прямого и обратного выводов. Для их инициирования предусмотрены две соответствующие функции манипулирования знаниями ForwardChain() и BackwardChain(), основным аргументом которых является имя цели вывода. В принципе, инструмент целей (Goal) разрабатывался специально для построения цепочки рассуждений в обратном направлении, но можно с помощью этого механизма прерывать и рассуждения, проводимые в прямом направлении (как только Цель достигнута, вывод заканчивается). Цели описываются в редакторе целей Goal (окно KTools) на KAL. Они должны иметь имена. Кроме цели, среди аргументов этих функций может быть перечень активизируемых правил. Если в записи функции опускается обязательный аргумент, например, имя цели в функциях, инициирующих вывод, то на его месте пишется NULL.

Пример.

10

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