русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

О.С. Амосов, Н.В. Колесов,


Дата добавления: 2014-11-28; просмотров: 1358; Нарушение авторских прав


Д.С. Магола, О.А. Степанов

 

 

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

И навигации

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

 

 

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

Г.

Оглавление

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. Компьютерный практикум по нечетким системам.. 33

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

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

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

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

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

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

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

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

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

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

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



Приложение 1. Функции пакета «Fuzzy Logic Toolbox» системы MATLAB для работы с системами нечеткой логики. 100

Приложение 2. Функции пакета «Neural Network Toolbox» системы MATLAB для работы с нейронными сетями. 103

 

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-приложений. Оно содержит четыре пунк­та: для работы с файлами, редактирования комментария для разработанного
при­ложения, манипулирования окнами системы КАРРА, включения/отключения видимости комментария к приложению. Заметим, что приоткрытии/закрытии файла необходимо выбрать его формат - 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 -приложений это окно является основным элементом интерфейса. Разработчик приложения может настроить 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), а редакторы слотов и методов дос­тупны только из редактора объекта или класса, так как первые привязаны к последним.

Одновременно на экране может быть открыто несколько окон-редакторов, но нельзя открыть сразу 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);

Ground

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

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

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

=>People:NumberOfP;

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

 


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

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

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

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

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

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

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

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

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

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

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

• сделать слот локальным (в редакторе класса/объекта для соответствующего слота вы­брать пункты меню 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.

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

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

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

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

 

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



<== предыдущая лекция | следующая лекция ==>
Информационных технологий, механики и оптики | Цикл формирования цепи рассуждений в прямом направлении


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.151 сек.