Операции с нечеткими множествами в модуле SciFLT



МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Коломенский институт (филиал)

федерального государственного бюджетного образовательного учреждения

высшего образования

«МОСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

 

 

Кафедра автоматизации производства и информационных технологий

 

П.С. Романов

 

Методические указания по выполнению лабораторной работы

По дисциплине

«СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА»

Построение нечетких множеств в системе Scilab и операции над ними

 

Коломна – 2019


Содержание

1. Введение .......................................................................................................................... 2
2. Построение функций принадлежности нечетких множеств в системе Scilab……… 2
3. Основы работы в Scilab………………………………………………………………… 8
4. Задание для лабораторной работы.................................................................................. 11
5. Структура отчета.............................................................................................................. 11
6 Исходные данные……………………………………………………………………… 12
7. Литература........................................................................................................................ 12

Введение

Лабораторная работа выполняется на основе теории нечетких множеств на ПК с использованием систем Scilab и Microsoft WORD в среде Windows ХР/7/8/10.

Цели работы:

ознакомиться с основными логическими операциями над нечеткими множествами;

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

получение умений и навыков:

построения нечетких множеств с использованием различных типов функций принадлежности с помощью пакета SciFLT системы Scilab;

выполнение основных логических операций над нечеткими множествами с помощью пакета SciFLT системы Scilab;

в анализе полученных результатов.

 

Построение функций принадлежности нечетких множеств в системе Scilab

Приложения Scilab позволяют работать с нечеткими множествами и нейронными сетями. Для работы с fuzzy logic нужно загрузить модуль SciFLT (FLT - fuzzy logic toolbox) в среду SciLAB. Сделать это можно открыв файл loader.sce из этого пакета и выполнив команду execute-> load into SciLAB.

Инструментарий нечеткой логики (НЛ) в составе пакета SciFLT содержит 11 встроенных типов функций принадлежности (ФП), формируемых на основе кусочно-линейных функций, распределения Гаусса, сигмоидной кривой, квадратических и кубических полиномиальных кривых. К наиболее простым ФП (и в этом их главное достоинство) можно отнести треугольную и трапециевидную. Наименование треугольной ФП – trimf (triangle membership function). В параметрическом виде она представляет собой ни что иное, как набор трех точек, образующих треугольник.

Описание функции: y = trimf(x, [a b c]).

Вектор x обозначает базовое множество, на котором определяется ФП. Величины a и c задают основание треугольника, b – его вершину.

В аналитическом виде треугольная ФП может быть задана следующим образом (рис. 1):

Рассмотрим примеры использования различных ФП в системе SciFLT. Примеры представляют собой фрагменты программ и комментариев на языке пакета SCILAB.

Пример 1. Программа использования ФП trimf (результат на рис.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)");

Рис. 1. Треугольные функции

 

Описание функции: linspace(x1,x2,n)формирует вектор-строку из n (по умолчанию n=100) равномерно распределенных точек между x1 и x2. Символ “ ' ” в строке определения базового множества x показывает транспонированность базового множества.

Трапециевидная ФП, trapmf (trapezoid membership function), отличается от предыдущей функции лишь тем, что имеет верхнее основание.

Описание функции: y = trаpmf(x, [a b c d]), где параметры a и d задают нижнее основание, b и c – верхнее основание трапеции (рис. 2).

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

Пример 2. Программа использования ФП trapmf (результат на рис. 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)");

 

Рис.2. Трапециедальные функции принадлежности

 

На основе функции распределения Гаусса в SciFLT можно построить ФП двух видов: простую ФП Гаусса и двухстороннюю ФП, образованную с помощью различных функций распределения Гаусса. Первая из них обозначается – gaussmf, а вторая – gauss2mf.

Описание функции: y = gaussmf(x, [σ c]).

Симметричная функция Гаусса зависит от двух параметров σ и с:

 

Описание двусторонней функции принадлежности:

y = gauss2mf(x, [σ1 c1 σ2 c2]).

Последнее выражение является комбинацией двух различных функций распределения Гаусса. Первая определяется параметрами σ1 и c1 и задает форму левой стороны, а вторая (параметры σ2 , c2 ) – правой стороны ФП.

Если c1 < c2 , то в этом случае функция gauss2mf достигает своего максимального значения на уровне 1. Иначе – максимальное значение функции меньше 1.

На рис. 3. представлены графики кривых gaussmf и gauss2mf, заданных в программе из примера 3.

Пример 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)");

Символ “ ' ” в строке определения базового множества x показывает транспонированность базового множества.

Следующей функцией, которая позволяет представлять нечеткие субъективные предпочтения, является ФП «обобщенный колокол». Она обозначается gbellmf (bell shape membership function). Ее отличие от рассмотренных ранее ФП заключается в добавлении третьего параметра, что позволяет осуществлять плавный переход от нечеткого множества к четкому. Описание функции: y = gbellmf(x, [a b c]).

Рис. 3. Гауссовы кривые

 

Функция «обобщенный колокол» имеет следующий аналитический вид:

 

где с определяет расположение центра ФП, a и b оказывают влияние на форму кривой (рис. 4).

Пример 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();

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 записывается следующим образом:

Рис. 4. Колоколообразные функции принадлежности

 

В зависимости от знака параметра a рассматриваемая ФП будет открыта справа или слева (рис. 5), что позволит применять ее при описании таких нечетких понятий, как «очень большой», «крайне отрицательно» и т.д.

Описание дополнительной сигмоидной функции:

y = dsigmf(x, [a1 c1 a2 c2]).

ФП dsigmf зависит от четырех параметров a1, c1, a2 и c2 и определяется как разность двух сигмоидных функций: f1(x,a1 c1), f2(x,a2 c2) .

Описание дополнительной сигмоидной функции:

y = psigmf(x, [a1 c1 a2 c2]).

ФП psigmf также как и предыдущая функция зависит от четырех параметров a1, c1, a2 и c2 и определяется как произведение двух сигмоидных функций: f1(x,a1 c1), f2(x,a2 c2).

Пример 5. Программа использования сигмоидных функций (рис.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 равна нулю в правом и левом пределах и принимает значение, равное единице в середине некоторого отрезка (рис. 6).

Описание функции: y = zmf(x, [a b]).

Параметры a и b определяют экстремальные значения кривой.

Описание функции: y = pimf(x, [a b c d]).

Параметры a и d задают переход функции в нулевое значение, параметры b и c – в единичное.

Описание функции: y = smf(x, [a b]).

Параметры a и b определяют экстремальные значения кривой.

Рис. 5. Сигмоидные функции принадлежности

Пример 6. Программа использования полиноминальных кривых (рис.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)");

Рис. 6.Полиномиальные кривые

 

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

 

Операции с нечеткими множествами в модуле SciFLT

 

Выделяют три основные логические операции с нечеткими множествами: конъюнкцию, дизъюнкцию и логическое отрицание. В модуле SciFLT существует возможность определять конъюнктивные и дизъюнктивные операторы различными методами.

Коньюнкция или T-норма представляет собой нахождение логического И и представлено в программе следующими операторами:

Определение функции:

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-конормы представляет собой логическое ИЛИ и может быть найдена посредством следующих операторов:

Определение функции:

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».

Пример 7. Программа использования операций min и max (рис. 7)

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)');

Минимаксная интерпретация является наиболее распространенной при построении нечетких систем. Тем не менее, на практике довольно часто используется альтернативная вероятностная интерпретация конъюнктивных и дизъюнктивных операторов.

Дополнение нечеткого множества есть не что иное, как математическое представление вербального выражения “НЕ A”, где A – нечеткое множество, описывающее некоторое размытое суждение.

Описание функции дополнения:

y=complement( x , class [,class_par]),

где x, у – матрицы, размерностью [m,n].

class – строка, задает вид оператора дополнения. Может принимать следующие значения: «one» для обычного дополнения, «sugeno» для дополнения по формуле Сугено и «yager» для формулы Ягера;

class_par – скалярная величина, которая используется в S-конормах «sugeno» и «yager».

Математическая запись функций дополнения следующая:

Пример 8. Программа использования операции дополнения (рис. 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)');

Рис. 7. Результаты работы программы из примера 7

Рис.8. Функция дополнения

 


Дата добавления: 2019-09-13; просмотров: 1485; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!