Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «У...
97 downloads
879 Views
616KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Нечеткие интеллектуальные системы в среде SciLab Методические указания к лабораторным работам
Составители: Н.Г. Ярушкина Н.Н Ястребова А.В. Чекина
Ульяновск 2009
УДК 510.63(076) ББК 32.813я7 Н 59
Рецензент профессор кафедры «Измерительно-вычислительные комплексы» УлГТУ, д.т.н , профессор С. К. Киселев
Одобрено секцией методических пособий научно-методического совета университета.
Н 59
Нечеткие интеллектуальные системы в среде SciLAB: методические указания к лабораторным работам / сост. Н. Г. Ярушкина, Н. Н. Ястребова, А. В. Чекина. – Ульяновск : УлГТУ, 2009. – 28 с. В методических указаниях изложен необходимый теоретический материал, сопровожденный примерами исполнения в среде SciLab, для выполнения лабораторных работ по дисциплине «Интеллектуальные информационные системы». Предназначены для студентов специальности 08080165 «Прикладная информатика (в экономике)». Подготовлены на кафедре «Информационные системы».
УДК 510.63(076) ББК 32.813я7
© Ярушкина Н. Г., Ястребова Н. Н., Чекина А. В., составление, 2009 © Оформление. УлГТУ, 2009. 2
Содержание Как заставить SciLAB 4.1.2 работать? .................................................... 4 Лабораторная работа №1 Исследование способов формирования нечетких множеств и операции над ними.................................................................................... 4 Лабораторная работа №2 Моделирование нечеткой системы средствами инструментария нечеткой логики ...................................................................................... 16 Лабораторная работа №3 Исследование алгоритма нечеткой кластеризации .............................. 25 Библиографический список ................................................................... 28
3
Как заставить SciLAB 4.1.2 работать? Для работы с fuzzy logic нужно загрузить модуль SciFLT в среду SciLAB. Сделать это можно открыв файл loader.sce из этого пакета и выполнив команду execute-> load into SciLAB.
Лабораторная работа №1 Исследование способов формирования нечетких множеств и операции над ними Цель работы: изучить методы построения нечетких множеств с использованием различных типов функций принадлежности. Ознакомиться с наиболее распространенными логическими операциями над нечеткими множествами. Используемые в системе SciLAB типы функций принадлежности Инструментарий нечеткой логики (ИНЛ) в составе пакета SciFLT содержит 11 встроенных типов функций принадлежности (ФП), формируемых на основе кусочно-линейных функций, распределения Гаусса, сигмоидной кривой, квадратических и кубических полиномиальных кривых. К наиболее простым ФП (и в этом их главное достоинство) можно отнести треугольную и трапециевидную. Наименование треугольной ФП – trimf (triangle membership function). В параметрическом виде она представляет собой ни что иное, как набор трех точек, образующих треугольник. Описание функции: y = trimf(x, [a b c]). Вектор x обозначает базовое множество, на котором определяется ФП. Величины a и c задают основание треугольника, b – его вершину.
4
Рис. 1.1. Треугольные функции
В аналитическом виде треугольная ФП может быть задана следующим образом (рис. 1.1): 0, x a x a ,a xb b a f ( x, a, b, c) c x , b x c c b 0, x c
Далее рассмотрим примеры использования различных ФП в системе SciFLT. Примеры представляют собой фрагменты программ и комментариев на языке пакета SCILAB. Пример 1.1. Программа использования ФП trimf (результат на рис.1.1) x=linspace(0,1,100)'; //задаем множество х y1=trimf(x,[0 0.2 0.4]); //и три треугольных функции на нем y2=trimf(x,[0.2 0.5 0.9]); y3=trimf(x,[0.5 0.6 0.9 ]); xbasc(); //строим функции принадлежности plot2d(x,[y1 y2 y3],leg="y1@y2@y3"); //подписываем рисунок xtitle("Triangular Member Function Example","x","mu(x)");
Трапециевидная ФП, trapmf (trapezoid membership function), отличается от предыдущей функции лишь тем, что имеет верхнее основание. 5
Описание функции: y = trаpmf(x, [a b c d]), где параметры a и d задают нижнее основание, b и c – верхнее основание трапеции (рис. 1.2).
Рис.1.2. Трапециедальные функции принадлежности
Аналитическая запись трапециевидной функции имеет вид: 0, x a x a ,a x b b a f ( x, a, b, c, d ) 1, b x c d x ,c x d d c 0, x d
Пример 1.2. Программа использования ФП trapmf (результат на рис. 1.2) x=linspace(0,1,100)'; y1=trapmf(x,[0 0.2 0.4 0.6]); y2=trapmf(x,[0.2 0.5 0.6 0.9]); y3=trapmf(x,[0.5 0.6 0.8 0.9 ]); xbasc(); plot2d(x,[y1 y2 y3],leg="y1@y2@y3"); xtitle("Trapezoidal Member Function Example","x","mu(x)");
На основе функции распределения Гаусса в SCIFLT можно построить ФП двух видов: простую ФП Гаусса и двухстороннюю ФП, образованную с помощью различных функций распределения Гаусса. Первая из них обозначается – gaussmf, а вторая – gauss2mf. 6
Описание функции: y = gaussmf(x, [ , c]). Симметричная функция Гаусса зависит от двух параметров и с: ( x c) 2
f ( x , , c ) e
2 2
.
Описание двусторонней функции принадлежности: y = gauss2mf(x, [ 1 , c1 , 2 , c2 ]). Последнее выражение является комбинацией двух различных функций распределения Гаусса. Первая определяется параметрами 1 и c1 и задает форму левой стороны, а вторая (параметры 2 , c2 ) – правой стороны ФП. Если c1 < c2 , то в этом случае функция gauss2mf достигает своего максимального значения на уровне 1. Иначе – максимальное значение функции меньше 1. На рис. 1.3. представлены графики кривых gaussmf и gauss2mf, заданных в программе из примера 1.3.
Рис. 1.3. Гауссовы кривые
Пример 1.3. Программа использования ФП gaussmf x=linspace(0,1,100)'; y1=gaussmf(x,[0.3 0.1]); y2=gauss2mf(x,[0.2 0.1 0.5 0.2]); xbasc(); plot2d(x,[y1 y2],leg="y1@y2"); xtitle("Gaussian Member Function Example","x","mu(x)");
7
Символ “ ' ” в строке определения базового множества x показывает транспонированность базового множества. Следующей функцией, которая позволяет представлять нечеткие субъективные предпочтения, является ФП «обобщенный колокол». Она обозначается gbellmf (bell shape membership function). Ее отличие от рассмотренных ранее ФП заключается в добавлении третьего параметра, что позволяет осуществлять плавный переход от нечеткого множества к четкому. Описание функции: y = gbellmf(x, [a b c] ). Функция «обобщенный колокол» имеет следующий аналитический вид: 1 f ( x , a , b , c) 2b xc , 1 a где с определяет расположение центра ФП, a и b оказывают влияние на форму кривой (рис. 1.4).
Рис. 1.4. Колоколообразные функции принадлежности
Пример 1.4. Программа использования gbellmf x=linspace(0,1,100)'; y1=gbellmf(x,[0.5 10 0.5]); y2=gbellmf(x,[0.2 10 0.2]); y3=gbellmf(x,[0.7 10 0.8]); xbasc(); 8
plot2d(x,[y1 y2 y3],leg="y1@y2@y3"); xtitle("Generalized Bell Member Function Example","x","mu(x)");
ФП на основе функции распределения Гаусса и ФП «обобщенный колокол» отличаются гладкостью и простотой записи и являются наиболее используемыми при описании нечетких множеств. Но несмотря на то, что гауссовы и колоколообразные ФП обладают свойством гладкости, они не позволяют формировать асимметричные ФП. Для этих целей в SciFLT существует набор сигмоидных функций, которые могут быть открыты либо слева, либо справа в зависимости от типа функции. Симметричные и закрытые функции синтезируют с использованием двух дополнительных сигмоид. Основная сигмоидная ФП обозначается sigmf, а дополнительные – dsigmf и psigmf. Описание основной сигмоидной функции: y = sigmf(x, [a c]). В аналитической форме сигмоидная функция sigmf записывается следующим образом: 1 f ( x , a , c) a (x c) . 1 e В зависимости от знака параметра a рассматриваемая ФП будет открыта справа или слева (рис. 1.5), что позволит применять ее при описании таких нечетких понятий, как «очень большой», «крайне отрицательно» и т.д. Описание дополнительной сигмоидной функции: y = dsigmf(x, [ a1 c1 a2 c2 ]). ФП dsigmf зависит от четырех параметров a1 , c1 , a2 и c2 и определяется как разность двух сигмоидных функций: f 1 ( x , a1 , c1 ) f 2 ( x , a 2 , c2 ) . Описание дополнительной сигмоидной функции: y = psigmf(x,[ a1 c1 a2 c2 ]). ФП psigmf также как и предыдущая функция зависит от четырех параметров a1 , c1 , a2 и c2 и определяется как произведение двух сигмоидных функций: f 1 ( x, a1 , c1 ) f 2 ( x, a 2 , c 2 ) .
9
Рис. 1.5. Сигмоидные функции принадлежности
Пример 1.5. Программа использования сигмоидных функций x=linspace(0,1,100)'; sig1=sigmf(x,[12 0.3]); sig2=sigmf(x,[ -12 0.7]); psig=psigmf(x,[15 0.5 -15 0.7]); dsig=dsigmf(x,[15 0.1 15 0.3]); xbasc(); plot2d(x,[sig1 sig2 psig dsig],leg="sig1@sig2@psig@dsig"); xtitle("Sigmoidals Member Functions Examples","x","mu(x)");
Инструментарий нечеткой логики SciFLT предоставляет возможность формирования ФП на основе полиномиальных кривых. Соответствующие функции называются Z-функции (zmf), PI-функции (pimf) и S-функции (smf). Функция zmf представляет собой асимметричную полиномиальную кривую, открытую слева, функция smf – зеркальное отображение функции zmf. Функция pimf равна нулю в правом и левом пределах и принимает значение, равное единице в середине некоторого отрезка (рис. 1.6). Описание функции: y = zmf(x, [a b]). Параметры a и b определяют экстремальные значения кривой. Описание функции: y = pimf(x, [a b c d]). Параметры a и d задают переход функции в нулевое значение, параметры b и c – в единичное. Описание функции: y = smf(x, [a b]). 10
Параметры a и
b определяют экстремальные значения кривой.
Рис. 1.6.Полиномиальные кривые
Пример 1.6. Программа использования полиноминальных кривых x=linspace(0,1,100)'; pi=pimf(x,[0.1 0.5 0.7 1.0]); z=zmf(x,[0.2 0.4]); s=smf(x,[0.6 0.8]); xbasc(); plot2d(x,[pi z s],leg="pi@z@s"); xtitle("Shaped Member Functions Examples","x","mu(x)");
Помимо рассмотренных выше функций, позволяющих представлять нечеткие множества, в SciFLT можно формировать собственные ФП или модифицировать встроенные. Операции с нечеткими множествами в модуле SciFLT Выделяют три основные логические операции с нечеткими множествами: конъюнкцию, дизъюнкцию и логическое отрицание. В модуле SciFLT существует возможность определять конъюнктивные и дизъюнктивные операторы различными методами. Коньюнкция или T-норма представляет собой нахождение логического И и представлено в программе следующими операторами:
11
x1x 2 if class is dubois max( x1, x 2, w) 1 min 1, ((1 x1) w (1 x 2) w ) 1 w if class is yager x1 if x2 1 tnorm([ x1, x 2], class, w ) x2 if x1 1 0 otherwise if class is dprod x1x 2 if class is eprod 2 ( x1 x 2 x1x 2) if class is aprod x1x 2 min( x1, x 2) if class is min
Определение функции: y= tnorm( x , class [,class_par] ), x – матрица, размерностью [m,n]. y – матрица, размерностью [m,1]. class – строка, задает вид T-нормы. Может принимать следующие значения: «dubois» для T-норма Дюбуа-Прада, «yager» для T-норм Ягера, «dprod» для вероятностного И, «eprod» для произведения Энштейна, «aprod» для алгебраического произведения и «min» для операции нахождения минимума. class_par – скалярная величина, которая используется в T-нормах «dubois» и «yager». Дизъюнкция или S-конормы представляет собой логическое ИЛИ и может быть найдена посредством следующих операторов: x1 x 2 x1x 2 min( x1, x 2,1 w) if class is dubois max(1 x1,1 x 2, w) min 1, ( x1w x 2 w ) 1 w if class is yager x1 if x2 0 snorm([ x1, x 2], class, w ) x2 if x1 0 1 otherwise if class is dsum x1 x 2 if class is esum 1 x1x 2) if class is asum x1 x 2 x1x 2 max( x1, x 2) if class is max
12
Определение функции: y=snorm( x , class [,class_par] ) x – матрица, размерностью [m,n]. y – матрица, размерностью [m,1]. class – строка, задает вид S-конормы. Может принимать следующие значения: «dubois» для S-конормы Дюбуа-Прада, «yager» для Sконормы Ягера, «dsum» для вероятностного ИЛИ, «esum» для суммы Энштейна, «asum» для алгебраической суммы и «max» для операции нахождения максимума. class_par – скалярная величина, которая используется в S-конормах «dubois» и «yager» . Пример 1.7. Программа использования операций min и max x=[0:0.1:10]'; y1=gaussmf(x,[3 1.2]); y2=gaussmf(x,[7 1]); yy1=tnorm([y1 y2],'min'); yy2=snorm([y1 y2],'max'); yy3=tnorm([y1 y2],'dprod'); yy4=snorm([y1 y2],'dsum'); xbasc(); subplot(3,1,1); plot2d(x,[y1 y2],leg='mf1@mf2',rect=[0 -0.1 10 1.1]); xtitle('Member Function Evaluation','x','mu(x)'); subplot(3,1,2); plot2d(x,[yy1 yy3],leg='min@dprod',rect=[0 -0.1 10 1.1]); xtitle('AND OPERATION','x','and(mf1,mf2)'); subplot(3,1,3); plot2d(x,[yy2 yy4],leg='max@dsum',rect=[0 -0.1 10 1.1]); xtitle('OR OPERATION','x','or(mf1,mf2)');
13
Рис. 1.7. Результаты работы программы из примера 1.7.
Минимаксная интерпретация является наиболее распространенной при построении нечетких систем. Тем не менее, на практике довольно часто используется альтернативная вероятностная интерпретация конъюнктивных и дизъюнктивных операторов. Дополнение нечеткого множества есть не что иное, как математическое представление вербального выражения “НЕ A”, где A – нечеткое множество, описывающее некоторое размытое суждение. Описание функции дополнения: y=complement( x , class [,class_par] ), где x, у – матрицы, размерностью [m,n]. class – строка, задает вид оператора дополнения. Может принимать следующие значения: «one» для обычного дополнения, «sugeno» для дополнения по формуле Сугено и «yager» для формулы Ягера. 14
class_par – скалярная величина, которая используется в S-конормах «sugeno» и «yager». Математическая запись функций дополнения следующая: 1- x 1 x complement ( x, class, w ) 1 wx (1 - x w ) 1 w
if class is one if class is sugeno if class is yager
Пример 1.8. Программа использования операции дополнения x=[0:0.1:10]'; y1=gaussmf(x,[3 1.2]); y2=complement(y1,’one’); xbasc(); plot2d(x,[y1 y2],leg='mf1@Not_mf1',rect=[0 -0.1 10 1.1]); xtitle('Member Function and Inverse','x','mu(x)');
Рис.1.8. Функция дополнения
Контрольные вопросы к лабораторной работе № 1 1. Что такое нечеткое множество и каково его основное отличие от обычного (четкого) множества? 2. Что такое функция принадлежности? 3. Какие конъюнктивные и дизъюнктивные операторы Вы знаете? 15
Лабораторная работа №2 Моделирование нечеткой системы средствами инструментария нечеткой логики Цель работы: изучить метод построения нечеткой системы в модуле SciFLT среды SCILAB. В SciFLT реализованы все основные функции, необходимые для создания и модифицирования систем нечеткого вывода. Для построения системы нечеткого вывода в командной строке основного окна SCILAB необходимо набрать команду editfls. Эта команда вызывает графический редактор систем нечеткого вывода. Редактор СНВ. Построение нечетких систем В меню необходимо выбрать File->New FLS->тип создаваемой системы (Мамдани или Сугено). Сначала создадим систему нечеткого вывода по Мамдани. В левой панели появится Tree-control – дерево создаваемой нечеткой системы. Сначала выбираем в нем пункт Description и заполняем появившуюся справа форму. В ней необходимо указать имя редактируемой системы, комментарии (не обязательно), виды T-нормы и S-конормы, тип операторов дополнения, импликации, агрегации и метод дефаззификации. Для системы по Мамдани обычно выбирают следующие типы операторов (рис. 2.1):
16
Рис. 2.1. Описание системы
Далее определяем состав входных и выходных переменных. Для этого необходимо выбрать в дереве пункты Inputs и Outputs соответственно. В окне справа появится число переменных, их список, а также кнопки Add, Delete и Exit. Добавляем новые переменные кнопкой Add. Сохранение проектируемой системы в рабочее пространство среды SCILAB производится с помощью пункта меню File –> Export–> To workspace. В этом случае данные сохраняются до окончания сеанса работы с SCILAB. Для сохранения данных на диск после окончания сеанса работы применяется соответствующий пункт того же меню – To FLS file… . Редактор переменных Для редактирования переменных (переименования, задания диапазона значений, связывания функциями принадлежности) необходимо выбрать в списке входных или выходных переменных нужную. 17
Тогда в правом окне появится редактор переменной:
Рис. 2.2. Редактор переменных (входная переменная из примера 2.1 Discount)
1) в нем необходимо задать имя; 2) диапазон допустимых значений; 3) с помощью кнопки Add внизу окна добавить функции принадлежности. Их можно также удалять, пометив щелчком мыши и нажав кнопку Delete (checked). Редактор ФП является инструментом, который позволяет отображать и редактировать любые ФП, ассоциированные (связанные) со всеми входными и выходными переменными разрабатываемой СНВ. Редактируют ФП текущей переменной изменяя характеристики ФП (наименование, тип и числовые параметры). Таким образом, при построении СНВ необходимо посредством редактора ФП определить соответствующие функции для каждой из входных и выходных переменных. Редактор правил вывода После того, как указано количество входных и выходных переменных, определены их наименования и построены соответствующие ФП, в СНВ необходимо включить правила вывода. Для этого в дереве контроля выбирается пункт Rules. Основываясь на описаниях входных и выходных переменных, определенных в редакторе ФП, редактор правил вывода формирует структуру правила автоматически. От пользователя требуется лишь связать значения входных и выходных переменных, выбирая из списка заданных ранее ФП, и определить логические связки между ними. Также допускается использование логического отрицания (НЕ) и изменение весов правил в диапазоне от 0 до 1. 18
Правила вывода отображаются в окне в следующей форме:
If (input_1is [not] mf _1 j1) and, or ... (input_ i is [not] mf _ iji ) ... and, or
(input_ n is [not]mf _ njn ) then(output_1is [not]mf _ n 1 jn1) and, or ... (output_ k is [not]mf _ k njk n ) and, or ... (output_ m is [not]mf _ m njm n ) (w),
где i – номер входной переменной, ji – номер ФП i -ой переменной, k – номер выходной переменной, n – количество входных переменных, m – количество выходных переменных, w – вес правила. Круглые скобки заключают в себе обязательные параметры, квадратные – необязательные, а угловые – альтернативные параметры (один на выбор). Пример 2.1. Создание СНВ В качестве примера, иллюстрирующего метод построения СНВ, рассмотрим следующую ситуацию. Необходимо оценить степень инвестиционной привлекательности конкретного бизнес-проекта на основании данных о ставке дисконтирования и периоде окупаемости. Шаг первый. Вызываем редактор для создания СНВ, набирая в командной строке editfls. В появившемся окне редактора создаем новую систему по Мамдани. Заполняем описание как показано на рис. 2.1. Добавляем 2 входные переменные и 1 выходную переменную. В результате получаем следующую структуру СНВ: два входа, механизм нечеткого вывода по Мамдани, один выход. Объявляем первую переменную как discont, а вторую – period, которые, соответственно, будут представлять ставку дисконтирования и период окупаемости бизнес-проекта. Наименование выходной переменной, на основании которой принимается решение о степени инвестиционной привлекательности бизнес-проекта, задается как rate. Сохраним создаваемую модель под именем Invest. На рис. 2.1 представлено текущее состояние окна редактора СНВ. Шаг второй. Каждой входной и выходной переменной поставим в соответствие набор ФП. Для discont определяем диапазон базовой переменной от 5 до 50 (единица измерения – проценты). Такой же диапазон выбираем для ее отображения. Добавим три ФП, тип которых – trimf, и присвоим им наименования – small, middle, big, соответственно, небольшой, средней и большой ставке дисконтирования (рис. 2.2). Переменной period диапазон базовой переменной определен равным [3, 36] (единица измерения – месяцы), поставлены в соответствие три ФП типа gaussmf с наименованиями - short, normal, long. Таким образом, переменная срока окупаемости бизнес-проекта будет принимать следующие значения: короткий, обычный и длительный срок окупаемости (рис. 2.3).
19
Рис.2.3. Входная переменная Period
Наконец, для переменной rate определяем: базовая переменная изменяет значение в диапазоне [0, 1], семантика описывается тремя ФП типа trimf c наименованиями: bad, normal, good (рис. 2.4).
Рис.2.4. Выходная переменная Rate
20
В графическом виде переменные представлены на рис. 2.5 и 2.6 (меню View->Plot variables)
Рис. 2.5. Графическое представление входных переменных
Рис. 2.6. Графическое представление выходной переменной
21
Шаг третий. Заключительным этапом построения СНВ является определение набора правил, которые задают связь входных переменных с выходными. Для этого в редакторе правил вывода определим: ЕСЛИ discont = small И period = short ТО rate = good ЕСЛИ discont = НЕ small И period = long ТО rate = bad ЕСЛИ discont = middle И period = normal ТО rate = normal ЕСЛИ discont = big И period = short ТО rate = normal Текущее состояние окна редактора правил вывода показано на рис. 2.7.
Рис.2.7. Редактор правил вывода
Средство просмотра поверхности вывода Для этого существует функция plotsurf. Она вызывается из командной строки окна SciLAB и имеет следующие параметры вызова: plotsurf( fls [, ivar , ovar , vivar [,npart [,mod]]]) . Параметры функции: fls – имя fls-структуры.
22
ivar – вектор входных переменных (задаются порядковые номера входных переменных, которые необходимо построить). ovar – скаляр, номер выходной переменной. vivar – вектор значений входных переменных. npart – вектор, number of partitions domain for each input variable. mod – скаляр, вид отображения поверхности на экране. 1 – grayscale, 2 – jetcolormap, 3 – hotcolormap, 4 – internal color map. Пример 2.2. fls=loadfls(flt_path()+"demos/MyEX.fls"); xbasc(); plotsurf(fls,[1 2],1,[0 0]);
Поверхность вывода, соответствующая правилам вывода примера 2.1 показана на рис. 2.8.
Рис. 2.8. Поверхность нечеткого вывода
Построение нечетких систем типа Суджено Редактор СНВ. Для построения СНВ типа Суджено необходимо в меню File выбрать пункт New Sugeno FIS. Количество входных и выходных переменных определяется так же, как и при построении СНВ типа Мамдани. Редактор ФП. Для СНВ типа Суджено изменения касаются только схемы определения ФП для выходных переменных. ИНЛ в среде SCILAB позволяет 23
разрабатывать два вида нечетких моделей. Первая модель – это нечеткая модель Суджено нулевого порядка. Нечеткое правило вывода имеет следующий вид:
if x is A and y is B then z k , где A и B – нечеткие множества антецендента, k – четко заданная константа консеквента. Для построения такой модели при добавлении ФП необходимо выбрать тип – константа (constant) и задать в качестве параметра ФП численное значение соответствующей константы. Вторая модель – нечеткая модель Суджено первого порядка. Для нее нечеткое правило вывода записывается следующим образом:
if x is A and y is B then z p x q y r , где p , q и
r – константы.
В данном случае тип ФП – линейная зависимость (linear). Для определения параметров ФП необходимо ввести вектор, элементы которого соответствуют численным значениям констант консеквента. Работа с редактором правил вывода, а также со средствами просмотра правил и поверхности вывода выполняется аналогично случаю построения СНВ по Мамдани. Основное отличие нечеткого вывода по Суджено с использованием нечеткой модели нулевого порядка и правил вывода, определенных выше, заключается в том, что выходная переменная имеет три значения: bad, normal, good, которые задаются соответственно тремя константами – 0, 0.5, 1. Контрольные вопросы по лабораторной работе № 2 1. Какова структура типовой системы нечеткого вывода? 2. В чем отличие метода нечеткого вывода по Суджено от метода нечеткого вывода по Мамдани? 3. Каким образом формируются антеценденты и консеквенты нечетких правил в SCILAB?
24
Лабораторная работа № 3 Исследование алгоритма нечеткой кластеризации Цель работы: изучить алгоритм нечеткой кластеризации, получить практические навыки решения задач кластеризации методами нечеткой логики. FCM алгоритм кластеризации Алгоритм нечеткой кластеризации называют FCM-алгоритмом (Fuzzy Classifier Means, Fuzzy C-Means). Целью FCM-алгоритма кластеризации является автоматическая классификация множества объектов, которые задаются векторами признаков в пространстве признаков. Другими словами, такой алгоритм определяет кластеры и, соответственно, классифицирует объекты. Кластеры представляются нечеткими множествами и, кроме того, границы между кластерами также являются нечеткими. FCM-алгоритм кластеризации предполагает, что объекты принадлежат всем кластерам с определенной ФП. Степень принадлежности определяется расстоянием от объекта до соответствующих кластерных центров. Данный алгоритм итеративно вычисляет центры кластеров и новые степени принадлежности объектов. Для заданного множества K входных векторов xk и N выделяемых кластеров cj предполагается, что любой xk принадлежит любому c j с принадлежностью jk [ 0,1] , где j – номер кластера, а k – входного вектора Принимаются во внимание следующие условия нормирования для jk : N
j 1
jk
1, k 1,..., K ,
K
0 jk K , j 1,..., N . k 1
Цель алгоритма заключается в минимизации суммы всех взвешенных расстояний x k c j : N
K
(
jk
) q x k c j min
j 1 k 1
,
где q – фиксированный параметр, задаваемый перед итерациями. Для достижения вышеуказанной цели необходимо решить следующую систему уравнений: N
K
/ jk ( ( jk ) q x k c j ) 0, j 1 k 1
N
K
/ c j ( ( jk ) q x k c j ) 0. j 1 k 1
jk Совместно с условиями нормирования дифференциальных уравнений имеет следующее решение: 25
данная
система
K
cj
( k 1 K
) xk q
jk
(
jk
)q
k 1
(взвешенный центр гравитации) и jk
1 / xk cj N
(1 /
1/ (q 1)
xk cj
1/( q 1)
)
.
j 1
Алгоритм нечеткой кластеризации выполняется по шагам. Шаг 1: Инициализация Выбираются следующие параметры: - необходимое количество кластеров N , 2 N K ; - мера расстояний, как Евклидово расстояние; - фиксированный параметр q (обычно ~ 1.5); ( 0) (0 ) - начальная (на нулевой итерации) матрица принадлежности U ( jk ) объектов xk с учетом заданных начальных центров кластеров cj . (t )
Шаг 2: Регулирование позиций cj центров кластеров (t ) (t ) На t -м итерационном шаге при известной матрице jk вычисляется cj в соответствии с вышеприведенным решением системы дифференциальных уравнений. Шаг 3:Корректировка значений принадлежности jk (t ) (t ) Учитывая известные cj , вычисляются jk ,если xk cj , в противном случае: 1, l j , 0, иначе
lk(t 1)
Шаг 4:Остановка алгоритма Алгоритм нечеткой кластеризации останавливается при выполнении следующего условия: (t 1) (t ) U U , где – матричная норма (например, Евклидова норма), – заранее задаваемый уровень точности. Решение задач кластеризации в SCILAB В SCILAB отсутствуют средства для решения задач кластеризации.
26
Поэтому в рамках лабораторной работы необходимо разработать приложение, реализующее алгоритм кластеризации, описанный выше. Для этого необходимо реализовать функцию нахождения центров кластеров. Описание функции: [center, U, obj_fcn] = fcm(data, cluster_n). Аргументами данной функции являются: 1) data – множество данных, подлежащих кластеризации, каждая строка описывает точку в многомерном пространстве характеристик; 2) cluster_n – количество кластеров (более одного). Функцией возвращаются следующие параметры: 1) center – матрица центров кластеров, каждая строка которой содержит координаты центра отдельного кластера; 2) U – результирующая матрица ФП; 3) obj_fcn – значение целевой функции на каждой итерации. Кроме того, необходимо обеспечить загрузку данных, подлежащих кластеризации, из файла или обеспечить их ручной ввод с клавиатуры. И предусмотреть возможность вызова функции кластеризации с дополнительным набором параметров: fcm(data, cluster_n, options). Дополнительные аргументы используются для управления процессом кластеризации: 1) options(1) – показатель степени для матрицы U (по умолчанию нужно установить - 2.0); 2) options(2) – максимальное количество итераций (по умолчанию 100); 3) options(3) – предельное изменение значений целевой функции (по умолчанию сделать 1e-5); 4) options(4) – отображение информации на каждом шаге (по умолчанию - 1). Контрольные вопросы по лабораторной работе № 3 1. В чем заключается задача кластеризации? 2. Каковы основные этапы решения задачи кластеризации? 3. Какое влияние на качество решения оказывают дополнительные параметры алгоритма кластеризации?
27
Библиографический список 1. Нечеткие гибридные системы. Теория и практика / И. З. Батыршин, А. О. Недосекин, А. А. Стецко и др.; под ред. Н. Г. Ярушкиной. – М.: Физматлит, 2007. – 208 с. 2. Ярушкина Н. Г. Основы теории нечетких и гибридных систем: учебное пособие / Н. Г. Ярушкина. – М.: Финансы и статистика, 2004. – 320 с.
Учебное издание ЯРУШКИНА Надежда Глебовна ЯСТРЕБОВА Наталья Николаевна Чекина Александра Валерьевна НЕЧЕТКИЕ ИНТЕЛЛЕКТУАЛЬНЫЕ СИСТЕМЫ В СРЕДЕ SCILAB
Методические указания Редактор М. В. Теленкова Подписано в печать 30.12.2009. Формат 60×84/16. Усл. печ. л. 1,62. Тираж 100 экз. Заказ 293. Ульяновский государственный технический университет 432027, г.Ульяновск, ул. Сев. Венец, д. 32 Типография УлГТУ, 432027, г.Ульяновск, ул. Сев. Венец, д. 32.
28