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

It_Kompyuterny_Praktikum

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

принимать два значения – begin и end. Значение begin присваивается слоту перед началом логического вывода, значение end – сразу после выдачи первой рекомендации. В результате выражение для цели имеет вид:

Global:Rekom #= end;

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

В создаваемом проекте ЭС перед началом прямого логического вывода в список Agenda должны быть занесены слоты, отражающие все частные характеристики платформы. Таких характеристик в прототипной системе для двух приведенных выше правил четыре. Каждая характеристика заносится отдельной функцией Assert. Чтобы при каждом запуске ЭС не набирать шесть функций, сформируем пользовательскую функцию Init, включающую все эти функции, а также осуществляющую присваивание начальных значений всем устанавливаемым в процессе вывода слотам (рис. 1.13). Функцию создайте в редакторе функций (пиктограмма Function в окне

Ktools).

31

Рис. 1.13. Содержание функции Init.

Отладка базы знаний ЭС

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

Окно связи правил (рис. 1.14). Просмотреть в окне Rule Relations все созданные правила. Временно исказите в каком-либо правиле имя слота и пронаблюдайте изменение структуры связей в окне связи правил.

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

32

Рис.1.14. Связь правил, формирующих решение о применимости платформы.

правила, просматриваются посредством выбора пункта List Slots из всплывающего меню (при выборе конкретного правила).

Можно просмотреть отношения любого правила, появившегося в этом окне, выбрав его с помощью мыши или обратившись к пунктам меню Options/Show Relations. Кроме того, из этого окна возможна загрузка редактора правил.

Активная трассировка логического вывода. Пошаговый режим.

Осуществить трассировку логического вывода в прототипной ЭС. Просмотреть ее работу в окне Rule Trace в пошаговом режиме.

Методические указания. Окно Rule Trace позволяет просматривать процесс рассуждения поэтапно, т.е. является инструментом отладки (трассировки) системы правил. Формирование прямой цепочки рассуждений можно выполнять в режиме активной трассировки (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 (формирования цепочки рассуждений в прямом направлении), появляется диалоговая панель с запросом аргументов этой функции.

33

Рис.1.15.

Для пошаговой трассировки прототипной ЭС необходимо сделать следующее.

1.Выполнить в окне интерпретатора функцию Init со значением аргумента, равным имени анализируемого объекта.

2.В окне трассировки правил выбрать режим активной трассировки

(Activ Trace в меню Options).

3. Выбрать в меню Options пункт Step Mode и ввести из аргументов функции ForwardChain только имя цели Rekom. В результате появится кнопка Step и можно начинать пошаговую трассировку ЭС.

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

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

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

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

Цель выполнения лабораторной работы:

1.Освоить методику построения нечетких систем.

2.Используя нечеткую систему научиться аппроксимировать функцию одной переменной.

Задание:

Необходимо построить с помощью

интерфейсной программы пакета

нечеткой логики

программной среды

MATLAB

нечеткую

систему,

 

 

yi f (xi ) ,

 

 

 

необходимую для

аппроксимации табличной функции

i 1.10 .

Варианты задания представлены в табл. 2.1.

Варианты заданий

Значения xi i 0.1, i 1.10 , одинаковы для всех вариантов

34

Таблица 2.1

i

 

 

 

Значение yi yi (xi )

 

 

 

 

№1

№2

№3

№4

№5

№6

№7

№8

№9

№10

 

 

 

 

 

 

 

 

 

 

 

1

1.50

2.09

2.02

1.99

2.23

2.07

2.18

-0.10

-0.16

2.09

2

1.26

2.05

1.98

2.03

2.29

2.17

2.43

-0.21

0.01

2.31

3

0.99

2.19

1.67

2.20

2.27

2.21

2.40

0.01

0.10

2.72

4

0.97

2.18

1.65

2.39

2.62

2.31

2.43

0.05

0.16

2.77

5

0.91

2.17

1.57

2.19

2.72

2.10

2.65

-0.13

0.05

2.78

6

0.71

2.27

1.42

2.61

2.82

2.09

2.75

-0.23

0.35

2.97

7

0.43

2.58

1.37

2.35

3.13

2.12

2.67

-0.21

0.19

3.00

8

0.54

2.73

1.07

2.60

3.49

1.63

2.66

-0.43

0.50

3.51

9

0.19

2.82

0.85

2.55

3.82

1.78

2.63

-0.57

0.74

3.43

10

0.01

3.04

0.48

2.49

3.95

1.52

2.75

-0.44

1.03

3.58

 

 

 

 

 

 

 

 

 

 

 

Пример выполнения:

Зависимость между переменными y и х заданы с помощью табл. 2.2. Требуется построить нечеткую систему, с помощью которой возможно аппроксимировать предложенную функцию, заданную таблично.

 

 

Таблица 2.2

i

xi

yi (xi )

1

0.1

2.05

2

0.2

1.94

3

0.3

1.92

4

0.4

1.87

5

0.5

1.77

6

0.6

1.74

7

0.7

1.71

8

0.8

1.60

9

0.9

1.56

10

1

1.40

Для аппроксимации функции с одной переменной используем среду MATLAB. Командой fuzzy из режима командной строки запускается интерфейсная программа пакета Fuzzy Logic (Нечеткая логика) – редактор нечеткой системы вывода FIS (Fuzzy Inference System).

35

В меню File (Файл) выбираем опцию New Sugeno FIS (новая система типа Sugeno), появится окно редактора (рис. 4.1). В появившемся окне существуют поля входной, выходной функции и редактора правил. Необходимо переименовать блоки input1 в x, output1 в y.

Рис. 4.1. Окно редактора функции

В блоке параметров нечеткой системы типа Sugeno задаются:

меню And method позволяет установить реализации логической операции И: min – минимум и prod – алгебраической

произведение (см. раздел 4.2.1);

меню Or method позволяет установить реализации логической операции ИЛИ: max – максимум и probor – алгебраическая

сумма (см. раздел 4.2.1);

меню Defuzzification позволяет выбрать один из методов

дефаззификации: wtaver – метод взвешенного среднего, при

 

 

 

 

 

 

 

 

i zi*

 

котором z

 

 

i 1

или wtsum – метод взвешенной суммы, при

0

n

i

i 1

котором z0 i zi* , где – количество правил базы знаний.

i 1

При щелчке по блоку x (input1) откроем окно редактора функций принадлежности (рис. 4.2). Необходимо добавить функции принадлежности, для этого в меню Edit (Редактирование) выбираем опцию Add MFs (рис. 4.3). В появившемся диалоговом окне задается тип и количество функций

36

принадлежности (9, далее добавляем еще 1 для того, чтобы получить 10 функций принадлежности). В качестве функций принадлежности выберем гауссовы функции (gaussmf). Затем в окне редактора функций принадлежности в поле Range (Диапазон) устанавливаем диапазон изменения значений х от 0 до 1, т.е. диапазон соответствующий табл. 4.2. Далее необходимо подвинуть графики заданных функций принадлежности, чтобы ординаты их максимумов совпадали с заданными значениями аргумента х. Для этого в поле Params (Параметры) задаем размах кривой и положение ее центра.

Рис. 4.2. Окно редактора функции принадлежности для х

Рис. 4.3. Окно добавления функций принадлежности

Далее необходимо задать функции принадлежности для у, щелкнув по блоку у и перейдя к редактору функций принадлежности (рис. 4.4). Добавим функции принадлежности (меню Edit Add MFs). В качестве функции принадлежности выбираются 10 констант, по числу различных значений yi в табл. 4.2. Таким образом сконструированная система является нечеткой системой типа Сугено 0-го порядка. В окне редактора функций принадлежности зададим значения функции у в поле Params.

37

В окне FIS-редактора (рис. 5.1), щелкнув по среднему блоку, откроем окно редактора правил (рис. 4.5).

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

Рис. 4.4. Окно редактора функций принадлежности для у

Существует возможность просмотра правил (рис. 4.6). Для этого выберем позицию меню View – rules. В левой части окна в графической форме представлены функции принадлежности аргумента х, в правой – переменной выхода у с пояснением механизма принятия решения. Вертикальная черта, пересекающая графики в левой части окна, позволяет изменять значения переменной входа, при этом соответственно изменяются значения у в правой части окна. Изменение аргумента путем перемещения вертикальной линии наглядно демонстрирует, как система определяет значения выхода.

38

Рис. 4.5. Окно редактора правил

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

В результате была построена нечеткая система, которая решила задачу аппроксимации заданной табличной функции. В табл. 4.3 приведено сравнение выходов нечеткой системы с исходными значениями y (четвертый столбец в таблице – выходы нечеткой системы).

Как видно из табл. 4.3 максимальное отклонение ~i i i i i y (x ) y (x )

выходов нечеткой системы от исходных данных составляет 0,02.

39

Выбрав в меню View – Surface, перейдем к окну просмотра поверхности выхода, в данном случае – к просмотру кривой у(х) (рис. 4.7).

Таблица 4.3

I

xi

y (x )

~

i

 

~

(x ) y

 

(x )

 

 

 

 

y (x )

 

y

i

i

 

 

 

i i

i i

 

 

 

i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0.1

2.05

2.03

 

 

 

 

0.02

 

 

 

2

0.2

1.94

1.95

 

 

 

 

0.01

 

 

 

3

0.3

1.92

1.92

 

 

 

 

0

 

 

 

4

0.4

1.87

1.86

 

 

 

 

0.01

 

 

 

5

0.5

1.77

1.78

 

 

 

 

0.01

 

 

 

6

0.6

1.74

1.74

 

 

 

 

0

 

 

 

7

0.7

1.71

1.72

 

 

 

 

0.01

 

 

 

8

0.8

1.60

1.61

 

 

 

 

0.01

 

 

 

9

0.9

1.56

1.54

 

 

 

 

0.02

 

 

 

10

1

1.40

1.42

 

 

 

 

0.02

 

 

 

Рис. 4.7. График функции

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

Выводы (пример):

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

40

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