Раздел Fuzzy Logic Toolbox. С.Д.Штовба. Введение в теорию нечетких множеств и нечеткую логику. Нечеткая логика — математические основы

Лекция № 1

Нечеткая логика

  1. Понятие нечеткой логики.
  2. Операции с нечеткими множествами.
  3. Лингвистическая переменная.
  4. Нечеткое число.
  1. 1. Понятие нечеткой логики

Нечеткая логика является многозначной логикой, что позволяет определить промежуточные значения для таких общепринятых оценок, как да|нет, истинно|ложно, черное|белое и т.п. Выражения подобные таким, как слегка тепло или довольно холодно возможно формулировать математически и обрабатывать на компьютерах. Нечеткая логика появилась в 1965 в работах Лотфи А. Задэ (Lotfi A. Zadeh ), профессора технических наук Калифорнийского университета в Беркли.

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

Нечеткая логика - раздел математики, являющийся новой мощной технологией.

Нечеткая логика возникла как наиболее удобный способ построения систем управления метрополитенами и сложными технологическими процессами, а также нашла применение в бытовой электронике, диагностических и других экспертных системах. Несмотря на то, что математический аппарат нечеткой логики впервые был разработан в США, активное развитие данного метода началось в Японии, и новая волна вновь достигла США и Европы. В Японии до сих пор продолжается бум нечеткой логики и экспоненциально увеличивается количество патентов, большая часть которых относится к простым приложениям нечеткого управления .

Термин fuzzy (англ. нечеткий, размытый - произносится "фаззи ") стал ключевым словом на рынке. Статьи по электронике без нечетких компонент постепенно исчезали и пропали совсем, как будто кто-то закрыл кран. Это показывает насколько стала популярной нечеткая логика; появилась даже туалетная бумага с напечатанными на ней словами "Fuzzy Logic".

В Японии исследования в области нечеткой логики получили широкую финансовую поддержку. В Европе и США усилия были направлены на то, чтобы сократить огромный отрыв от японцев. Так, например, агентство космических исследований NASA стало использовать нечеткую логику в маневрах стыковки.

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

2. Операции с нечеткими множествами

Определение и основные характеристики

нечетких множеств

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

Пусть E - универсальное множество, x - элемент E , а R - некоторое свойство. Обычное (четкое) подмножество A универсального множества E , элементы которого удовлетворяют свойству R , определяется как множество упорядоченных пар A = {µ A (х )/х } , где

µ A (х ) - характеристическая функция , принимающая значение 1 , если x удовлетворяет свойству R, и 0 - в противном случае.

Нечеткое подмножество отличается от обычного тем, что для элементов x из E нет однозначного ответа "да-нет" относительно свойства R . В связи с этим, нечеткое подмножество A универсального множества E определяется как множество упорядоченных пар A = {µ A (х )/х } , где

µ A (х ) - характеристическая функция принадлежности (или просто функция принадлежности), принимающая значения в некотором вполне упорядоченном множестве M (например, M = ). Функция принадлежности указывает степень (или уровень) принадлежности элемента x подмножеству A . Множество M называют множеством принадлежностей . Если M = {0,1} , то нечеткое подмножество A может рассматриваться как обычное или четкое множество.

Примеры записи нечеткого множества

Пусть E = {x 1 , x 2 , x 3 , x 4 , x 5 } , M = ; A - нечеткое множество, для которого

µ A (x 1)=0,3;

µ A (x 2)=0;

µ A (x 3)=1;

µ A (x 4)=0,5;

µ A (x 5)=0,9.

Тогда A можно представить в виде:

A = {0,3/x 1 ; 0/x 2 ; 1/x 3 ; 0,5/x 4 ; 0,9/x 5 } или

A = 0,3/x 1 + 0/x 2 + 1/x 3 + 0,5/x 4 + 0,9/x 5 , или

Замечание. Здесь знак "+ " не является обозначением операции сложения, а имеет смысл объединения.

Основные характеристики нечетких множеств

Пусть M = и A - нечеткое множество с элементами из универсального множества E и множеством принадлежностей M .

Величина µ A (x ) называется высотой нечеткого множества A . Нечеткое множество A нормально , если его высота равна 1 , т.е. верхняя граница его функции принадлежности равна 1 (µ A (x )=1 ). При µ A (x ) <1 нечеткое множество называется субнормальным .

Нечеткое множество пусто , если µ A (x )=0. Непустое субнормальное множество можно нормализовать по формуле A (x ) = .

Нечеткое множество унимодально , если µ A (x )=1 только на одном x из E.

Носителем нечеткого множества A является обычное подмножество со свойством µ A (x )>0 , т.е. носитель A = {x/µ A (x )>0} , x E .

Элементы x E , для которых µ A (x )=0,5 называются точками перехода множества A .

Примеры нечетких множеств

1) Пусть E = {0,1,2,..,10}, M =. Нечеткое множество "несколько" можно определить следующим образом: "несколько " = 0,5/3+0,8/4+1/5+1/6+0,8/7+0,5/8; его характеристики: высота = 1 , носитель = {3,4,5,6,7,8}, точки перехода - {3,8}.

2) Пусть E = { 0,1,2,3,...,n ,...}. Нечеткое множество "малый " можно определить:

"малый" = .

3) Пусть E = {1,2,3,...,100} и соответствует понятию "возраст ", тогда нечеткое множество "молодой ", может быть определено с помощью

4) Нечеткое множество "молодой " на универсальном множестве E" ={Иванов, Петров, Сидоров ,...} задается с помощью функции принадлежности µ "молодой " (x ) на E = {1,2,3,..100} (возраст), называемой по отношению к E" функцией совместимости, при этом:

µ "молодой" (Сидоров )= µ "молодой" (x ), где x - возраст Сидорова.

5) Пусть E = {Запорожец, Жигули, Мерседес ,....} - множество марок автомобилей, а E" = , формируя векторную функцию принадлежности { µ A (x 1 ), µ A (x 2 ),... µ A (x 9 )}.

При прямых методах используются также групповые прямые методы, когда, например, группе экспертов предъявляют конкретное лицо и каждый должен дать один из двух ответов: "этот человек лысый " или "этот человек не лысый ", тогда количество утвердительных ответов, деленное на общее число экспертов, дает значение µ "лысый" (данного лица). (В этом примере можно действовать через функцию совместимости, но тогда придется считать число волосинок на голове у каждого из предъявленных эксперту лиц).

Косвенные методы определения значений функции принадлежности используются в случаях, когда нет элементарных измеримых свойств, через которые определяется интересующее нас нечеткое множество. Как правило, это методы попарных сравнений. Если бы значения функций принадлежности были нам известны, например, µ A (x i ) = w i , i =1,2,...,n , то попарные сравнения можно представить матрицей отношений A = {a ij }, где a ij =w i /w j (операция деления).

На практике эксперт сам формирует матрицу A , при этом предполагается, что диагональные элементы равны 1, а для элементов симметричных относительно диагонали a ij = 1/a ij , т.е. если один элемент оценивается в n раз сильнее чем другой, то этот последний должен быть в 1/n раз сильнее, чем первый. В общем случае задача сводится к поиску вектора w , удовлетворяющего уравнению вида А w = λ max w , где λ max - наибольшее собственное значение матрицы A . Поскольку матрица А положительна по построению, решение данной задачи существует и является положительным.

Пример. Рассмотрим нечеткое множество A , соответствующее понятию «расход теплоносителя небольшой». Объект x - расход теплоносителя, x0; x max - множество физически возможных значений скорости изменения температуры. Эксперту предъявляются различные значения расхода теплоносителя x и задается вопрос: с какой степенью уверенности 0 ≤ μ A (x) ≤ 1 эксперт считает, что данный расход теплоносителя x небольшой. При μ A (x) = 0 - эксперт абсолютно уверен, что расход теплоносителя x небольшой. При μ A (x) = 1 - эксперт абсолютно уверен, что расход теплоносителя x нельзя классифицировать как небольшой.

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

Включение .

Пусть A и B - нечеткие множества на универсальном множестве E.

Говорят, что A содержится в B , если .

Обозначение : .

Иногда используют термин "доминирование ", т.е. в случае когда A Ì B , говорят, что B доминирует A .

Равенство .

A и B равны, если " x Î E m A (x ) = m B (x ).

Обозначение : A = B .

Дополнение.

Пусть М = , A и B - нечеткие множества, заданные на E . A и B дополняют друг друга, если

" x Î E m A (x ) = 1 - m B (x ).

Обозначение : или.

Очевидно, что. (Дополнение определено для M = , но очевидно, что его можно определить для любого упорядоченного M ).

Пересечение .

A ÇB - наибольшее нечеткое подмножество, содержащееся одновременно в A и B .

m A Ç B(x ) = min(m A (x ), m B (x )).

Объединение.

А È В - наименьшее нечеткое подмножество, включающее как А , так и В , с функцией принадлежности:

m A È B(x ) = max(m A (x ), m B (x )).

Разность.

А - B = А Ç с функцией принадлежности:

m A-B (x ) = m A Ç (x ) = min(m A (x ), 1 - m B (x )).

Дизъюнктивная сумма.

А Å B = (А - B) È (B - А) = (А Ç ) È (Ç B) с функцией принадлежности:

m A-B (x ) = max{; }

Примеры.

A = 0,4/ x 1 + 0,2/ x 2 +0/ x 3 +1/ x 4 ;

B = 0,7/ x 1 +0,9/ x 2 +0,1/ x 3 +1/ x 4 ;

C = 0,1/ x 1 +1/ x 2 +0,2/ x 3 +0,9/ x 4 .

A Ì B , т.е. A содержится в B или B доминирует A , С несравнимо ни с A , ни с B , т.е. пары {A, С } и {A, С } - пары недоминируемых нечетких множеств.

0,6/ x 1 + 0,8/x 2 + 1/x 3 + 0/x 4 ;

0,3/x 1 + 0,1/x 2 + 0,9/x 3 + 0/x 4 .

A Ç B = 0,4/x 1 + 0,2/x 2 + 0/x 3 + 1/x 4 .

А È В = 0,7/x 1 + 0,9/x 2 + 0,1/x 3 + 1/x 4 .

А - В = А Ç = 0,3/x 1 + 0,1/x 2 + 0/x 3 + 0/x 4 ;

В - А В = 0,6/x 1 + 0,8/x 2 + 0,1/x 3 + 0/x 4 .

А Å В = 0,6/x 1 + 0,8/x 2 + 0,1/x 3 + 0/x 4 .

Наглядное представление операций над нечеткими множествами

Для нечетких множеств можно строить визуальное представление. Рассмотрим прямоугольную систему координат, на оси ординат которой откладываются значения m A (x ) , на оси абсцисс в произвольном порядке расположены элементы E (мы уже использовали такое представление в примерах нечетких множеств). Если E по своей природе упорядочено, то этот порядок желательно сохранить в расположении элементов на оси абсцисс. Такое представление делает наглядными простые операции над нечеткими множествами.

На верхней части рисунка заштрихованная часть соответствует нечеткому множеству A и, если говорить точно, изображает область значений А и всех нечетких множеств, содержащихся в A . На нижней - даны, A Ç , A È .

Свойства операций È и Ç.

Пусть А, В, С - нечеткие множества, тогда выполняются следующие свойства:

Коммутативность;

Ассоциативность;

Идемпотентность;

Дистрибутивность;

A ÈÆ = A , где Æ - пустое множество , т.е. (x) = 0 " >x Î E ;

A Ç E = A , где E - универсальное множество;

Теоремы де Моргана.

В отличие от четких множеств, для нечетких множеств в общем случае:

Замечание. Введенные выше операции над нечеткими множествами основаны на использовании операций max и min . В теории нечетких множеств разрабатываются вопросы построения обобщенных, параметризованных операторов пересечения, объединения и дополнения, позволяющих учесть разнообразные смысловые оттенки соответствующих им связок "и ", "или ", "не ".

Расстояние между нечеткими множествами

Пусть A и B - нечеткие подмножества универсального множества E . Введем понятие расстояния r(A , B ) между нечеткими множествами. При введении расстояния обычно предъявляются следующие требования:

r(A, B ) ³ 0 - неотрицательность;

r(A, B ) = r(B, A ) - симметричность;

r(A, B ) < r(A, C ) + r(C, B ).

К этим трем требованиям можно добавить четвертое: r(A, A ) = 0.

Евклидово или квадратичное расстояние:

e(A, B ) = , e(A, B )Î.

Перейдем к индексам нечеткости или показателям размытости нечетких множеств.

Если объект х обладает свойством R (порождающим нечеткое множество A ) лишь в частной мере, т.е.

0< m A (x ) <1, то внутренняя неопределенность, двусмысленность объекта х в отношении R проявляется в том, что он, хотя и в разной степени, принадлежит сразу двум противоположным классам: классу объектов, "обладающих свойством R ", и классу объектов, "не обладающих свойством R ". Эта двусмысленность максимальна, когда степени принадлежности объекта обеим классам равны, т.е. m A (x ) = (x ) = 0,5, и минимальна, когда объект принадлежит только одному классу, т.е. либо m A (x ) = 1 и (x ) = 0, либо m A (x ) = 0 и (x ) = 1.

3. Лингвистическая переменная

В нечеткой логике значения любой величины представляются не числами, а словами естественного языка и называются ТЕРМАМИ. Так, значением лингвистической переменной ДИСТАНЦИЯ являются термы ДАЛЕКО, БЛИЗКО и т. д.

Конечно, для реализации лингвистической переменной необходимо определить точные физические значения ее термов. Пусть, например, переменная ДИСТАНЦИЯ может принимать любое значение из диапазона от 0 до 60 метров. Как же нам поступить? Согласно положениям теории нечетких множеств, каждому значению расстояния из диапазона в 60 метров может быть поставлено в соответствие некоторое число, от нуля до единицы, которое определяет СТЕПЕНЬ ПРИНАДЛЕЖНОСТИ данного физического значения расстояния (допустим, 10 метров) к тому или иному терму лингвистической переменной ДИСТАНЦИЯ. В нашем случае расстоянию в 50 метров можно задать степень принадлежности к терму ДАЛЕКО, равную 0,85, а к терму БЛИЗКО - 0,15. Конкретное определение степени принадлежности возможно только при работе с экспертами. При обсуждении вопроса о термах лингвистической переменной интересно прикинуть, сколько всего термов в переменной необходимо для достаточно точного представления физической величины. В настоящее время сложилось мнение, что для большинства приложений достаточно 3-7 термов на каждую переменную. Минимальное значение числа термов вполне оправданно. Такое определение содержит два экстремальных значения (минимальное и максимальное) и среднее. Для большинства применений этого вполне достаточно. Что касается максимального количества термов, то оно не ограничено и зависит целиком от приложения и требуемой точности описания системы. Число же 7 обусловлено емкостью кратковременной памяти человека, в которой, по современным представлениям, может храниться до семи единиц информации.

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

Нечеткая переменная характеризуется тройкой <α, X, A>, где

α - наименование переменной,

X - универсальное множество (область определения α),

A - нечеткое множество на X, описывающее ограничения (т.е. μ A (x )) на значения нечеткой переменной α.

Лингвистической переменной называется набор <β ,T,X,G,M>, где

β - наименование лингвистической переменной;

Т - множество ее значений (терм-множество), представляющих собой наименования нечетких переменных, областью определения каждой из которых является множество X.

Множество T называется базовым терм-множеством лингвистической переменной;

G - синтаксическая процедура, позволяющая оперировать элементами терм-множества T, в частности, генерировать новые термы (значения). Множество TÈ G(T), где G(T) - множество сгенерированных термов, называется расширенным терм-множеством лингвистической переменной;

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

Замечание. Чтобы избежать большого количества символов

символ β используют как для названия самой переменной, так и для всех ее значений;

пользуются одним и тем же символом для обозначения нечеткого множества и его названия, например терм "молодой ", являющийся значением лингвистической переменной β = "возраст ", одновременно есть и нечеткое множество М ("молодой ").

Присвоение нескольких значений символам предполагает, что контекст позволяет разрешить возможные неопределенности.

Пример: Пусть эксперт определяет толщину выпускаемого изделия с помощью понятий "малая толщина ", "средняя толщина " и "большая толщина ", при этом минимальная толщина равна 10 мм, а максимальная - 80 мм.

Формализация такого описания может быть проведена с помощью следующей лингвистической переменной < β, T, X, G, M>, где

β - толщина изделия;

T - {"малая толщина ", "средняя толщина ", "большая толщина "};

G - процедура образования новых термов с помощью связок "и ", "или " и модификаторов типа "очень ", "не ", "слегка " и др. Например: "малая или средняя толщина ", "очень малая толщина " и др.;

М - процедура задания на X = нечетких подмножеств А 1 ="малая толщина ", А 2 = "средняя толщина ", А 3 ="большая толщина ", а также нечетких множеств для термов из G(T) в соответствии с правилами трансляции нечетких связок и модификаторов "и ", "или ", "не ", "очень ", "слегка " и др. операции над нечеткими множествами вида: А Ç В, АÈ В, CON А = А 2 , DIL А = А 0,5 и др.

Замечание. Наряду с рассмотренными выше базовыми значениями лингвистической переменной "толщина " (Т={"малая толщина ", "средняя толщина ", "большая толщина "}) возможны значения, зависящие от области определения Х. В данном случае значения лингвистической переменной "толщина изделия" могут быть определены как "около 20 мм ", "около 50 мм ", "около 70 мм ", т.е. в виде нечетких чисел .

Продолжение примера:

Функции принадлежности нечетких множеств:

"малая толщина" = А 1 , "средняя толщина "= А 2 , " большая толщина "= А 3 .

Функция принадлежности:

нечеткое множество "малая или средняя толщина " = А 1 ?А 1 .

4. Нечеткое число

Нечеткие числа - нечеткие переменные, определенные на числовой оси, т.е. нечеткое число определяется как нечеткое множество А на множестве действительных чисел R с функцией принадлежности m A (x )Î, где x - действительное число, т.е. x Î R.

Нечеткое число А нормально , если μ A (x )=1, выпуклое , если для любых x≤y≤z выполняется μ A (x )≥ μ A (y )∩ μ A (z ).

Подмножество S A ÌR называется носителем нечеткого числа А, если

S = {x /μ A (x )>0}.

Нечеткое число А унимодально , если условие m A (x ) = 1 справедливо только для одной точки действительной оси.

Выпуклое нечеткое число А называется нечетким нулем , если

m A (0) = (m A (x )).

Нечеткое число А положительно , если "x Î S A , x >0 и отрицательно , если "x Î S A , x <0.

Операции над нечеткими числами

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

Пусть А и В - нечеткие числа, и - нечеткая операция, соответствующая операции над обычными числами. Тогда

С = АB Ûm C (z )=(m A (x )Lm B (y ))).

С = Ûm C (z )=(m A (x )Lm B (y ))),

С = Û m C (z )=(m A (x )Lm B (y ))),

С = Û m C (z )=(m A (x )L m B (y ))),

С = Û m C (z )=(m A (x )Lm B (y ))),

С = Û m C (z )=(m A (x )Lm B (y ))),

С = Û m C (z )=(m A (x )Lm B (y ))).

Замечание. Решение задач математического моделирования сложных систем с применением аппарата нечетких множеств требует выполнения большого объема операций над разного рода лингвистическими и другими нечеткими переменными. Для удобства исполнения операций, а также для ввода-вывода и хранения данных, желательно работать с функциями принадлежности стандартного вида.

Нечеткие множества, которыми приходится оперировать в большинстве задач, являются, как правило, унимодальными и нормальными. Одним из возможных методов аппроксимации унимодальных нечетких множеств является аппроксимация с помощью функций (L-R)-типа.

Список литературы

1. Орлов А.И. Теория принятия решений. Учебное пособие / А.И.Орлов.- М.: Издательство «Экзамен», 2005. - 656 с.

2. Борисов А. Н., Кроумберг О. А., Федоров И. П. Принятие решений на основе нечетких моделей: примеры использования. - Рига: Зинатве, 1990. - 184 с.

3. Андрейчиков А.В., Андрейчикова О.Н. Анализ, синтез, планирование решений в экономике — М.: Финансы и статистика, 2000. — 368 с.

4. Нечеткие множества в моделях управления и искусственного интеллекта/Под ред. Д. А. Поспелова. — М.: Наука, 1986. — 312 с.

5. Боросов А.Н. Принятие решений на основе нечетких моделей: Примеры использования. Рига: Зинанте, 1990.

6. Вопросы анализа и процедуры принятия решений/Под ред. И.Ф. Шахнова. М.: Мир, 1976.

7. Кофман А. Введение в теорию нечетких множеств/Пер, с франц. М,: Радио и связь, 1982.

9. Лебег А. Об измерении величин. - М.: Учпедгиз, 1960. - 204 с.

10. Орлов А.И. Основания теории нечетких множеств (обобщение аппарата Заде). Случайные толерантности. - В сб.: Алгоритмы многомерного статистического анализа и их применения. - М.: Изд-во ЦЭМИ АН СССР, 1975. - С.169-175.

Стандартная статья о нечеткой логике обычно грешит двумя вещами:

  1. В 99% случаев статья касается исключительно применения нечеткой логики в контексте нечетких множеств, а точнее нечеткого вывода, а еще точнее алгоритма Мамдани. Складывается впечатление, что только этим способом нечеткая логика может быть применена, однако это не так.
  2. Почти всегда статья написана на математическом языке. Замечательно, но программисты пользуются другим языком с другими обозначениями. Поэтому оказывается, что статья просто непонятна тем, кому, казалось бы, должна быть полезна.
Все это грустно, потому что нечеткая логика - это одно из величайших достижений математики XX-ого века, если критерием брать практическую пользу. В этой статье я попытаюсь показать, насколько это простой и мощный инструмент программирования - настолько же простой, но гораздо более мощный, чем система обычных логических операций.

Самым замечательным фактом о нечеткой логике является то, что это прежде всего логика . Из начал мат-логики известно, что любая логическая функция может быть представлена дизъюнктивной или конъюнктивной нормальной формой, из чего следует, что для реализации исчисления высказываний достаточно всего трех операций: конъюнкции (&&), дизъюнкции (||) и отрицания (!). В классической логике каждая из этих операций задана таблицей истинности:

A b || a b && a ! -------- -------- ---- 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1
В нечеткой логике, в отличие от классической, вместо величин истина и ложь используется величина степень истинности , принимающая любые значения из бесконечного множества от 0 до 1 включительно. Следовательно логические операции уже нельзя представить таблично. В нечеткой логике они задаются фукнциями.

Есть два способа реализации дизъюнкции и конъюнкции:

#Максиминный подход: a || b => max(a, b) a && b => min(a, b) #Колорометрический подход: a || b => a + b - a * b a && b => a * b
Отрицание задается единственным способом (не трудно догадаться):

A => 1 - a
Легко проверить, что для крайних случаев - когда значения переменных исключительно 1 или 0 - приведенные выше функции дают таблицы истинности операций классической логики. Готово! Теперь у нас есть расширенная логика, обладающая невероятной мощью, простотой и при этом полностью совместимая с классической логикой в предельных случаях. Значит везде, где мы [программисты] используем логические выражения, мы можем использовать выражения нечеткой логики? Не совсем.

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

Для примера представим себе систему управления ракетой, использующую нечеткую логику для обхода препятствий. Представим себе, что ракета летит точно в гору, и система управления вычисляет решение: лететь вправо - 0.5, лететь влево - 0.5. Если использовать дефаззификацию методом центра масс, то система управления даст команду - лететь прямо. Бум! Очевидно, что в этом случае правильное решение - бросить кости и получить команду «влево» или «вправо» с вероятностью 50%.

В простейшем случае, когда нужно принять решение на основании степени истинности, можно разбить множество на интервалы и использовать if-else-if.

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

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

Я сразу отбросил идею распознавать любой каракуль, нарисованный пользователем на экране (тогда это был экран КПК). Вместо этого программа предлагала выбрать тип черты из порядка 23-х, определенных правилами японской каллиграфии. Выбрав тип черты, пользователь рисовал прямоугольник, в который вписывалась черта. Фактически, иероглиф - и введенный, и хранимый в словаре - представлялся в виде множества прямоугольников, для которых был определен тип.

Как определить равенство иероглифов в таком представлении? Для начала сформулируем критерий в четкой постановке:

Иероглифы A и B равны тогда и только тогда, когда для каждой черты в A существует равная ей черта в B и для каждой черты в B существует равная ей черта в A.

Неявно предполагается, что иероглифы не содержат черт-дубликатов, то есть, если некоторая черта совпала с чертой в другом иероглифе, то ни с одной другой чертой в том же иероглифе она совпасть не может.

Равенство черт можно определить следующим образом:

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

Эти два определения дают нам систему утверждений, которой достаточно для реализации алгоритма поиска.

Для начала построим матрицу E следующим образом:

For i in 1..n for j in 1..n E = A[i] == B[j] end end #A и B - это иероглифы; A[i] и B[j] - это их черты, и оператор "==" вычисляет их нечеткое равенство. #Предполагается, что оба иероглифа имеют одинаковое количество черт - n.
Затем сомкнем эту матрицу в вектор M[n]:

For i in 1..n M[i] = E.max_in_row(i) end #Метод max_in_row вычисляет максимальное значение в строке матрицы.
Я использую максиминный подход, потому что, на практике, колорометрический дает слишком маленькие значения для конъюнкций. Если вспомнить, что max - это дизъюнкция, то получается, что мы вычисляем утверждение, что i-я черта A равна первой черте B или второй или третьей и т.д. Таким образом M - это вектор совпадений черт A с чертами B.

#Просто нечеткой конъюнкцией. e = M.min #Либо так: e = M.sum / M.length #(отношение суммы элементов к длине вектора).
Оба способа работают, но по-разному, причем второй способ работает даже если сравнивать черты четко. Какой из них правильней - вопрос философский.

Еще пару слов стоит сказать о сравнении черт. В соответствии с определением, равенство черт - это конъюнкция двух условий: равенства типов и равенства прямоугольников. Черты некоторых типов очень похожи. Вводя, пользователь легко может их перепутать, поэтому стоит иметь таблицу похожести, значения которой будут отражать насколько черта i похожа на черту j (на главной диагонали, естественно, будут единицы). Как степень равенства прямоугольников можно брать отношение площади их пересечения к площади большего из прямоугольников.

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

Математическая теория нечетких множеств (fuzzy sets) инечеткая логика (fuzzy logic ) являются обобщениями классическойтеории множеств и классической формальной логики. Данные понятия были впервые предложены американским ученым Лотфи Заде (Lotfi Zadeh) в 1965 г. Основной причиной появления новой теории стало наличие нечетких иприближенных рассуждений при описании человеком процессов, систем, объектов.

Одной из основных характеристик нечеткой логики является лингвисти­ческая переменная, которая определяется набором вербальных (словесных) характеристик некоторого свойства. Рассмотрим лингвисти­ческую переменную «скорость», которую можно характеризовать через набор следующих по­нятий-значе­ний: «ма­лая», «средняя» и «большая», данные значения называются термами.

Следующей основополагающей характеристикой нечеткой логики является понятие функции принадлежности. Функция принадлежности определяет, насколько мы уверены в том, что данное значение лингвистической переменной (например, скорость) можно отнести к соответствующим ей категори­ям (в частности для лингвистической переменной скорость к категориям «малая», «средняя», «большая»).

На следующем рисунке (первая часть) отражено, как одни и те же значения лингвистической переменной могут соответствовать различным понятиям-значениям или термам. Тогда функции принадлежности, характеризующие нечеткие множества понятий скорости, можно выразить гра­фически, в более привычном математическом виде (рис. 35, вторая часть).

Из рисунка видно, что степень, с которой численное значение скорости, например v = 53, совместимо с понятием «большая», есть 0,7, в то время как совместимость значений скорости, рав­ных 48 и 45, с тем же понятием есть 0,5 и 0,1 соответственно.

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

Треугольная функция принадлежности определяется тройкой чисел (a,b,c), и ее значение в точке x вычисляется согласно выражению:

При (b-a)=(c-b) имеем случай симметричной треугольной функции принадлежности, которая может быть однозначно задана двумя параметрами из тройки (a,b,c).

Аналогично для задания трапецеидальной функции принадлежности необходима четверка чисел (a,b,c,d):

При (b-a)=(d-c) трапецеидальная функция принадлежности принимает симметричный вид.

Рисунок 1. Типовые кусочно-линейные функции принадлежности.

Функция принадлежности гауссова типа описывается формулой

и оперирует двумя параметрами. Параметр c обозначает центр нечеткого множества, а параметр отвечает за крутизну функции.

Рисунок 2. Гауссова функция принадлежности.

Совокупность функций принадлежности для каждого терма из базового терм-множества T обычно изображаются вместе на одном графике. На рисунке приведен пример описанной лингвистической переменной "Цена акции".

Рис. Описание лингвистической переменной "Цена акции".

Количество термов в лингвистической переменной редко превышает 7.

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

    Существует хотя бы одно правило для каждого лингвистического терма выходной переменной .

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

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

Пусть в базе правил имеется m правил вида: R 1: ЕСЛИ x 1 это A 11 … И … x n это A 1n , ТО y это B 1 … R i: ЕСЛИ x 1 это A i1 … И … x n это A in , ТО y это B i … R m: ЕСЛИ x 1 это A i1 … И … x n это A mn , ТО y это B m , где x k , k=1..n – входные переменные; y – выходная переменная; A ik – термы соответствующих переменных с функциями принадлежности.

Результатом нечеткого вывода является четкое значение переменной y * на основе заданных четких значений x k , k=1..n.

В общем случае механизм логического вывода включает четыре этапа: введение нечеткости (фазификация), нечеткий вывод, композиция и приведение к четкости, или дефазификация (см. рисунок 5).

Рисунок 5. Система нечеткого логического вывода.

Алгоритмы нечеткого вывода различаются главным образом видом используемых правил, логических операций и разновидностью метода дефазификации. Разработаны модели нечеткого вывода Мамдани, Сугено, Ларсена, Цукамото.

Рассмотрим подробнее нечеткий вывод на примере механизма Мамдани (Mamdani). Это наиболее распространенный способ логического вывода в нечетких системах. В нем используется минимаксная композиция нечетких множеств. Данный механизм включает в себя следующую последовательность действий.

    Процедура фазификации: определяются степени истинности, т.е. значения функций принадлежности для левых частей каждого правила (предпосылок). Для базы правил с m правилами обозначим степени истинности как A ik (x k), i=1..m, k=1..n.

    Нечеткий вывод. Сначала определяются уровни "отсечения" для левой части каждого из правил:

    Композиция, или объединение полученных усеченных функций, для чего используется максимальная композиция нечетких множеств:

где MF(y) – функция принадлежности итогового нечеткого множества.

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

В настоящее время отсутствует систематическая процедура выбора стратегии дефаззификации. На практике часто используют два наиболее общих метода: метод центра тяжести (ЦТ - центроидный), метод максимума (ММ).

Для дискретных пространств в центроидном методе формула для вычисления четкого значения выходной переменной представляется в следующем виде:

Стратегия дефаззификации ММ предусматривает подсчет всех тех z , чьи функции принадлежности достигли максимального значения. В этом случае (для дискретного варианта) получим

где z - выходная переменная, для которой функция принадлежности достигла максимума;m - число таких величин.

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

Пример нечеткого правила

Как работает.

По максимальному значению функций принадлежности (для скорости 60 км в час значение функции принадлежности «низкая» = 0, а для дорожных условий 75 % от нормы значение функции принадлежности «тяжелые» = около 0.7) по 0.7 проводится прямая которая рассекает геометрическую фигуру заключения (подача топлива) на две части, в результате берется фигура лежащая ниже прямой а верхняя часть отбрасывается. Это для одного правила, таких правил может быть 100 и более в реальных задачах.

Рассмотрим процесс получения нечеткого вывода по трем правилам одновременно с последующим получением чет­кого решения. Данная процедура включает в себя три этапа. На первом этапе получают нечеткие выводы по каждому из правил в отдельности по схеме, показанной на рис. 3.13. На втором эта­пе производится сложение результирующих функций, получен­ных на предыдущем этапе (применяется логическая операция ИЛИ, т.е. берется максимум). Третий этап - этап получения чет­кого решения (дефаззификация). Здесь применяется любой из известных классических методов: метод центра тяжести и т.д. Полученное в виде числового значения четкое решение служит задающей величиной системы управления. В нашем примере это будет величина, в соответствии с которой ИСУ должна бу­дет изменить подачу топлива. Процесс получения нечетких выводов по нескольким прави­лам с последующей дефаззификацией для рассматриваемого примера показан на рис. 3.14. При начальном значении скорости = 65 км в час, и дорожным условиям = 80 % от норматива получаем следующую схему решения об уровне подачи топлива.

Рис. 3.14. Процесс получения нечетких выводов по правилам и их преобразование в четкое решение.

Как видно из рис. 3.14, в результате дефаззификации получе­но четкое решение: при заданных значениях скорости и дорожных условий подача топлива должна составлять 63% от

максимального значения. Таким образом, несмотря на нечет­кость выводов, в итоге получено вполне четкое и определенное решение. Такое решение, вероятно, принял бы и водитель авто­мобиля в процессе движения. Данный пример демонстрирует великолепные возможности моделирования человеческих рас­суждений на основе методов теории нечетких множеств.

Эпименид Кносский с острова Крит – полумифический поэт и философ, живший в VI в. до н.э., однажды заявил: «Все критяне – лжецы!». Так как он и сам был критянином, то его помнят как изобре тателя так называемого критского парадокса.


В терминах аристотелевой логики, в которой утверждение не может быть одновременно истинным и ложным, и подобные самоотрицания не имеют смысла. Если они истинны, то они ложны, но если они ложны, то они истинны.


И здесь на сцену выходит нечеткая логика, где переменные могут быть частичными членами множеств. Истинность или ложность перестают быть абсолютными – утверждения могут быть частично истинными и частично ложными. Использование подобного подхода позволяет строго математически доказать, что парадокс Эпименида ровно на 50% истинен и на 50% ложен.

Таким образом, нечеткая логика в самой своей основе несовместима с аристотелевой логикой, особенно в отношении закона Tertium non datur («Третьего не дано» – лат.), который также называют законом исключения среднего1 . Если сформулировать его кратко, то звучит он так: если утверждение не является истинным, то оно является ложным. Эти постулаты настолько базовые, что их часто просто принимают на веру.


Более банальный пример пользы нечеткой логики можно привести в контексте концепции холода. Большинство людей способно ответить на вопрос: «Холодно ли вам сейчас?». В большинстве случаев (если вы разговариваете не с аспирантом-физиком) люди понимают, что речь не идет об абсолютной температуре по шкале Кельвина. Хотя температуру в 0 K можно, без сомнения, назвать холодом, но температуру в +15 C многие холодом считать не будут.


Но машины не способны проводить такую тонкую градацию. Если стандартом определения холода будет «температура ниже +15 C», то +14,99 C будет расцениваться как холод, а +15 C – не будет.

Теория нечетких множеств

Рассмотрим рис. 1. На нем представлен график, помогающий понять то, как человек воспринимает температуру. Температуру в +60 F (+12 C) человек воспринимает как холод, а температуру в +80 F (+27 C) – как жару. Температура в +65 F (+15 C) одним кажется низкой, другим – достаточно комфортной. Мы называем эту группу определений функцией принадлежности к множествам,описывающим субъективное восприятие температуры человеком.

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


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

Нечеткие операторы

Чтобы применить алгебру для работы с нечеткими значениями, нужно определить используемых операторов. Обычно в булевой логике используется лишь ограниченный набор операторов, с помощью которых и производится выполнение других операций: NOT (оператор «НЕ»), AND (оператор «И») и OR (оператор «ИЛИ»).

Можно дать множество определений для этих трех базовых операторов, три из которых приведены в таблице. Кстати, все определения одинаково справедливы для булевой логики (для проверки просто подставьте в них 0 и 1). В булевой логике значение FALSE («ЛОЖЬ») эквивалентно значению «0», а значение TRUE («ИСТИНА») эквивалентно значению «1». Аналогичным образом в нечеткой логике степень истинности может меняться в диапазоне от 0 до 1, поэтому значение «Холод» верно в степени 0,1, а операция NOT(«Холод») даст значение 0,9.


Вы можете вернуться к парадоксу Эпименида и постараться его решить (математически он выражается как A = NOT(A), где A – это степень истинности соответствующего утверждения). Если же вы хотите более сложную задачу, то попробуйте решить вопрос о звуке хлопка, производимого одной рукой…

Решение задач методами нечеткой логики

Лишь немногие клапаны способны открываться «чуть-чуть». При работе оборудования обычно используются четкие значения (например, в случае бимодального сигнала 0-10 В), которые можно получить, используя так называемое «решение задач методами нечеткой логики». Подобный подход позволяет преобразовать семантические знания, содержащиеся в нечеткой системе, в реализуемую стратегию управления2.


Это можно сделать с использованием различных методик, но для иллюстрации процесса в целом рассмотрим всего один пример.


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

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


«Клапан частично закрыт»: 0,2

«Клапан частично открыт»: 0,7

«Клапан открыт»: 0,3

Если мы используем метод height defuzzification для определения степени открытости клапана, то получим результат:

«Клапан закрыт»: 0,1

(0,1*0% + 0,2*25% + 0,7*75% + 0,3*100%)/ /(0,1 + 0,2 + 0,7 + 0,3) =

= (0% + 5% + 52,5% + 30%)/(1,3) = = 87,5/1,3 = = 67,3%,

т.е. клапан необходимо открыть на 67,3%.

Практическое применение нечеткой логики

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


– Устройства для автоматического поддержания скорости движения автомобиля и увеличения эффективности/стабильности работы автомобильный двигателей (компании Nissan, Subaru).

Нечёткая логика – логика, основанная на теории нечётких множеств. Её предметом является построение моделей приближенных рассуждений человека и использование их в компьютерных системах. В нечёткой логике расширена граница оценки с двузначной (Либо 0, либо 1) до неограниченной многозначной оценки (На интервале ).

Нечёткое множество A в полном пространстве X определяется через функцию принадлежности m A (x):

Логика определения понятия нечёткого множества не содержит какой-либо нечёткости. Вместо указания какого-то конкретного значения (Например 0.8) обычно с помощью нижних и верхних значений задают допустимые пределы оценки (Например ).

В случае нечёткой логики можно создать неограниченное число операций, поэтому в ней не используются базовые операции для записи остальных. Особо важное значение имеют расширения НЕ, И, ИЛИ до нечётких операций. Они называются соответственно – нечёткое отрицание, t-норма и s-норма. Так как число состояний неограниченно, то невозможно описать эти операции с помощью таблицы истинности. Операции поясняются с помощью функций и аксиом, а представляются с помощью графиков.

Аксиоматическое представление нечётких операций:

Нечёткое отрицание

Аксиома N1 сохраняет свойство двузначного НЕ, а N2 – сохраняет правило двойного отрицания. N3 – наиболее существенная: нечёткое отрицание инвертирует последовательность оценок.

Типичная операция нечёткого отрицания – вычитание из 1.

При отрицании значение 0.5 является центральным и обычно x и x θ принимают симметричные значения относительно 0.5.

T-норма.

Аксиома T1 справедлива, как и для чёткого И. T2 и T3 – законы пересечения и объединения. Аксиома T4 является требованием упорядоченности.

Типичной t-нормой является операция min или логическое произведение:

При логическом произведении график строится симметрично относительно плоскости, образуемый наклонными x1 и x2.

S-норма.

Типичной s-нормой является логическая сумма, определяемая операцией max.

Кроме неё существуют алгебраическая сумма, граничная сумма и драстическая сумма:

Как видно из рисунков порядок обратный, нежели в случае t-нормы.

В качестве примеров нечёткого определения можно рассмотреть температуру и работу клапана:

Сходства

Нечёткая логика является обобщением классической чёткой логики. И чёткая и нечёткая логики основаны на множествах и на операциях отношения. Нечёткие операции являются расширением операций чёткой логики.

Различия

В чёткой логике переменные являются полными членными множеств, а в нечёткой – только частичными членами множеств.

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

3. Пример

Сначала мы рассмотрим множество X всех вещественных чисел между 0 и 10, которые мы назовем областью исследования. Теперь, давайте определим подмножество X всех вещественных чисел в амплитуде между 5 и 8.

A =

Теперь представим множество A с помощью символической функции, т.е. эта функция приписывает число 1 или 0 к каждому элементу в X , в зависимости от того, находится ли элемент в подмножестве А или нет. Это приводит к следующей диаграмме:

Мы можем интерпретировать элементы, которым назначено число 1, как элементы которые находятся в множестве А, и элементы, которым назначено число 0, как элементы не в множестве A .

Этой концепции достаточно для многих областей приложений. Но мы можем легко найти ситуации, где теряется гибкость. Чтобы показать это рассмотрим следующий пример, показывающий отличие нечёткого множества от чёткого:

В этом примере мы хотим описать множество молодых людей. Более формально мы можем обозначить

B = {множество молодых людей}

Поскольку, вообще, возраст начинается с 0, нижняя граница этого множества должна быть нулевой. Верхнюю границу, с другой стороны, надо определить. На первый раз определим верхнюю границу множества, скажем, 20 лет. Следовательно, мы получаем B как четкий интервал, а именно:

B =

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

Более естественный способ описать множество B состоит в том, чтобы ослабить строгое разделение между молодыми и не молодыми. Мы будем делать это, допуская не только (четкое) решение ДА: он/она находится в множестве молодых , или НЕТ: он/она не в множестве молодых , но более гибких фраз подобно: Хорошо, он/она принадлежит немного больше к множеству молодых или НЕТ, он/она почти не принадлежит к множеству молодых.

В нашем первом примере мы кодировали все элементы Области Исследования 0 или 1. Прямой путь обобщить эту концепцию для нечёткого множества состоит в том, чтобы определить большее количество значений между 0 и 1. Фактически, мы определяем бесконечно многие варианты между 0 и 1, а именно единичный интервал I = .

Интерпретация чисел в нечётком множестве, назначенная всем элементам Области Исследования, более трудная. Конечно, снова число 1 назначено элементу как способ определить элемент, который находится в множестве B и 0 - способ, при котором элемент не определен в множестве B . Все другие значения означают постепенную принадлежность к множеству B .

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

При таком способе 25-летние люди будут все еще молоды на 50 процентов (0.5). Теперь Вы знаете, что такое нечеткое множество.