Методы нечеткой логики в информатике. Введение в теорию нечеткой логики

Математическая теория нечетких множеств (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% от

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

Классическая логика по определению не может оперировать с нечетко очерченными понятиями, поскольку все высказывания в формальных логических системах могут иметь только два взаимоисключающих состояния: «истина» со значением истинности «1» и «ложь» со значением истинности «0». Одной из попыток уйти от двузначной бинарной логики для описания неопределенности было введение Лукашевичем трехзначной логики с третьим состоянием «возможно» со значением истинности «0,5». Введя в рассмотрение нечеткие множества, Заде предложил обобщить классическую бинарную логику на основе рассмотрения бесконечного множества значений истинности. В предложенном Заде варианте нечеткой логики множество значений истинности высказываний обобщается до интервала 0 ; 1 , т.е. включает как частные случаи классическую бинарную логику и трехзначную логику Лукашевича. Такой подход позволяет рассматривать высказывания с различными значениями истинности и выполнять рассуждения с неопределенностью.

Нечеткое высказывание – это законченная мысль, об истинности или ложности которой можно судить только с некоторой степенью уверенности 0 ; 1: «возможно истинно», «возможно ложно» и т.п. Чем выше уверенность в истинности высказывания, тем ближе значение степени истинности к 1 . В предельных случаях 0 , если мы абсолютно уверены в ложности высказывания, и 1 , если мы абсолютно уверены в истинности высказывания, что соответствует классической бинарной логике. В нечеткой логике нечеткие высказывания обозначаются так же, как и нечеткие множества: A , B , C … . Введем нечеткое отображение T: Ω → 0 ; 1 , которое действует на множестве нечетких высказываний Ω = A , B , C … . В этом случае значение истинности высказывания A ∈ Ω определяется как T A ∈ 0 ; 1 и является количественной оценкой нечеткости, неопределенности, содержащейся в высказывании A .

Логическое отрицание нечеткого высказывания A обозначается ¬ A – это унарная (т.е. производимая над одним аргументом) логическая операция, результат которой является нечетким высказыванием «не A », «неверно, что A », значение истинности которого:

T ¬ A = 1 − T A .

Помимо приведенного выше исторически принятого основного определения нечеткого логического отрицания (нечеткого «НЕ»), введенного Заде, могут использоваться следующие альтернативные формулы:

T ¬ A = 1 − T A 1 + λT A , λ > − 1, – нечеткое λ -дополнение по Сугено;

T ¬ A = 1 − T A p , p > 0, – нечеткое p -дополнение по Ягеру.

Логическая конъюнкция нечетких высказываний A и B обозначается A ∩ B – это бинарная (т.е. производимая над двумя аргументами) логическая операция, результат которой является нечетким высказыванием « A и B », значение истинности которого:

T A ∩ B = min T A ; T B .

Помимо приведенного выше исторически принятого основного определения логической конъюнкции (нечеткого «И»), введенного Заде, могут использоваться следующие альтернативные формулы:

T A ∩ B = T A T B – в базисе Бандлера-Кохоута;

T A ∩ B = max T A + T B − 1 ; 0 – в базисе Лукашевича-Гилеса;

T A ∩ B = T B , при T A = 1 ; T A , при T B = 1 ; 0, в остальных случаях; – в базисе Вебера.

Логическая дизъюнкция нечетких высказываний A и B обозначается A ∪ B – это бинарная логическая операция, результат которой является нечетким высказыванием « A или B », значение истинности которого:

T A ∪ B = max T A ; T B .

Помимо приведенного выше исторически принятого основного определения логической дизъюнкции (нечеткого «ИЛИ»), введенного Заде, могут использоваться следующие альтернативные формулы:

T A ∪ B = T A + T B − T A T B – в базисе Бандлера-Кохоута;

T A ∪ B = min T A + T B ; 1 – в базисе Лукашевича-Гилеса;

T A ∪ B = T B , при T A = 0 ; T A , при T B = 0 ; 1, в остальных случаях; – в базисе Вебера.

Нечеткая импликация нечетких высказываний A и B обозначается A ⊃ B – это бинарная логическая операция, результат которой является нечетким высказыванием «из A следует B », «если A , то B », значение истинности которого:

T A ⊃ B = max min T A ; T B ; 1 − T A .

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

T A ⊃ B = max 1 − T A ; T B – Гедель;

T A ⊃ B = min T A ; T B – Мамдани;

T A ⊃ B = min 1 ; 1 − T A + T B – Лукашевич;

T A ⊃ B = min 1 ; T B T A , T A > 0 – Гоген;

T A ⊃ B = min T A + T B ; 1 – Лукашевич-Гилес;

T A ⊃ B = T A T B – Бандлер-Кохоут;

T A ⊃ B = max T A T B ; 1 − T A – Вади;

T A ⊃ B = 1, T A ≤ T B ; T B , T A > T B ; – Бауэр.

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

Нечеткая эквивалентность нечетких высказываний A и B обозначается A ≡ B – это бинарная логическая операция, результат которой является нечетким высказыванием « A эквивалентно B », значение истинности которого:

T A ≡ B = min max T ¬ A ; T B ;max T A ; T ¬ B .

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

2.1 Основные понятия нечеткой логики

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

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

При помощи нечетких множеств можно формально определить неточные и многозначные понятия, такие как «высокая температура», «молодой человек», «средний рост» либо «большой город». Перед формулированием определения нечеткого множества необходимо задать так называемую область рассуждений (universe of discourse). В случае неоднозначного понятия «много денег» большой будет признаваться одна сумма, если мы ограничимся диапазоном и совсем другая–в диапазоне .

Лингвистические переменные:

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

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

Нечеткие множества:

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

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

Множество элементов пространства
, для которых
, называется носителем нечеткого множества и обозначается supp A :

Высота нечеткого множества определяется как

Нечеткое множество называется нормальным тогда и только тогда, когда
. Если нечеткое множествоне является нормальным, то его можно нормализовать при помощи преобразования

,

где
‒ высота этого множества.

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

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

Включение. Пусть и‒ нечеткие множества на универсальном множестве. Говорят, чтосодежится в, если

Равенство. и равны, если

Дополнение. Пусть
,и‒ нечеткие множества, заданные на.идополняют друг друга, если.

Пересечение.
‒ наибольшее нечеткое подмножество, содержащееся одновременно ви:

Объединение.
‒ наибольшее нечеткое подмножество, содержащее все элементы изи:

Разность.
‒ подмножество с функцией принадлежности:

2.1.2 Нечеткие отношения

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

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

Нечеткая импликация.

Нечеткая импликация представляет собой правило вида: ЕСЛИ
ТО
,где
– условие, а
– заключение, причеми‒ нечеткие множества, заданные своими функциями принадлежности
,
и областями определения
,соответственно. Обозначается импликация как
.

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

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

2.2 Построение нечеткой системы

Из разработок искусственного интеллекта завоевали устойчивое признание экспертные системы, как системы поддержки принятия решений. Они способны аккумулировать знания, полученные человеком в различных областях деятельности. Посредством экспертных систем удается решить многие современные задачи, в том числе и задачи управления. Одним из основных методов представления знаний в экспертных системах являются продукционные правила, позволяющие приблизиться к стилю мышления человека. Обычно продукционное правило записывается в виде: «ЕСЛИ (посылка) (связка) (посылка)… (посылка) ТО (заключение)».Возможно наличие нескольких посылок в правиле, в этом случае они объединяются посредством логических связок «И», «ИЛИ».

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

Таким образом, нечеткая система - это система, особенностью описания которой является:

нечеткая спецификация параметров;

нечеткое описание входных и выходных переменных системы;

нечеткое описание функционирования системы на основе продукционных «ЕСЛИ…ТО…»правил.

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

Для многих приложений, связанных с управлением процессами, необходимо построение модели рассматриваемого процесса. Знание модели позволяет подобрать соответствующий регулятор (модуль управления). Однако часто построение корректной модели представляет собой трудную проблему, требующую иногда введения различных упрощений. Применение теории нечетких множеств для управления процессами не предполагает знания моделей этих процессов. Следует только сформулировать правила поведения в форме нечетких условных суждений типа «ЕСЛИ-ТО».

Рисунок 2.1 -. Структура нечеткой системы управления

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

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

В нечеткой логике значения любой величины представляются не числами, а словами естественного языка и называются «термами». Так, значением лингвистической переменной «Дистанция» являются термы «Далеко», «Близко» и т. д. Для реализации лингвистической переменной необходимо определить точные физические значения ее термов. Допустим переменная «Дистанция» может принимать любое значение из диапазона от 0 до 60 метров. Согласно положениям теории нечетких множеств, каждому значению расстояния из диапазона в 60 метров может быть поставлено в соответствие некоторое число, от нуля до единицы, которое определяет степень принадлежностиданного физического значения расстояния (допустим, 10 метров) к тому или иному терму лингвистической переменной «Дистанция». Тогда расстоянию в 50 метров можно задать степень принадлежности к терму «Далеко», равную 0,85, а к терму «Близко» ‒ 0,15. Задаваясь вопросом, сколько всего термов в переменной необходимо для достаточно точного представления физической величины принято считать, что достаточно 3-7 термов на каждую переменнуюдля большинства приложений. Большинствоприменений вполне исчерпывается использованием минимального количества термов.Такое определение содержит два экстремальных значения (минимальное и максимальное) и среднее. Что касается максимального количества термов, то оно не ограничено и зависит целиком от приложения и требуемой точности описания системы. Число 7 же обусловлено емкостью кратковременной памяти человека, в которой, по современным представлениям, может храниться до семи единиц информации.

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

Рисунок 2.2 ‒ Стандартные функции принадлежности

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

Следующей стадией является стадия разработки нечетких правил.

На ней определяются продукционные правила, связывающие лингвистические переменные. Большинство нечетких систем используют продукционные правила для описания зависимостей между лингвистическими переменными. Типичное продукционное правило состоит из антецедента (частьЕСЛИ …) и консеквента (часть ТО…). Антецедент может содержать более одной посылки. В этом случае они объединяются посредством логических связок«И» или «ИЛИ».

Процесс вычисления нечеткого правила называется нечетким логическим выводом и подразделяется на два этапа: обобщение и заключение.

Пусть имеется следующее правило:

ЕСЛИ «Дистанция» = средняя И «Угол» =малый, ТО «Мощность» = средняя.

На первом шаге логического вывода необходимо определить степень принадлежности всего антецедента правила. Для этого в нечеткой логике существуют два оператора: Min(…) и Max(…). Первый вычисляет минимальное значение степени принадлежности, а второй ‒ максимальное значение. Когда применять тот или иной оператор, зависит от того, какой связкой соединены посылки в правиле. Если использована связка «И», применяется оператор Min(…). Если же посылки объединены связкой «Или», необходимо применить оператор Max(…). Ну а если в правиле всего одна посылка, операторы вовсе не нужны.

Следующим шагом является собственно вывод или заключение. Подобным же образом посредством операторов Min/Maxвычисляется значение консеквента. Исходными данными служат вычисленные на предыдущем шаге значения степеней принадлежности антецедентов правил.

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

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

Результат нечеткого вывода, конечно же, будет нечетким. Например, если речь идет об управлении механизмом и команда для электромотора будет представлена термом «Средняя» (мощность), то для исполнительного устройства это ровно ничего не значит. В теории нечетких множеств процедура дефаззификации аналогична нахождению характеристик положения (математического ожидания, моды, медианы) случайных величин в теории вероятности. Простейшим способом выполнения процедуры дефаззификации является выбор четкого числа, соответствующего максимуму функции принадлежности. Однако пригодность этого способа ограничивается лишь одно экстремальными функциями принадлежности. Для устранения нечеткости окончательного результата существует несколько методов: метод центра максимума, метод наибольшего значения, метод центроида и другие. Для многоэкстремальных функций принадлежности наиболее часто используется дефаззификация путем нахождения центра тяжести плоской фигуры, ограниченной осями координат и функцией принадлежности.

2.3. Модели нечеткого логического вывода

Нечеткий логический вывод - это аппроксимация зависимости «входы–выход» на основе лингвистических высказываний типа «ЕСЛИ–ТО» и операций над нечеткими множествами. Нечеткая модель содержит следующие блоки:

‒ фаззификатор, преобразующий фиксированный вектор влияющих факторов Xв вектор нечетких множеств , необходимых для выполнения нечеткого логического вывода;

‒ нечеткая база знаний, содержащая информацию о зависимости
в виде лингвистических правил типа «ЕСЛИ–ТО»;

‒ машина нечеткого логического вывода, которая на основе правил базы знаний определяет значение выходной переменной в виде нечеткого множества, соответствующего нечетким значениям входных переменных;

‒ дефаззификатор, преобразующий выходное нечеткое множество в четкое число Y.

Рисунок 2.3 ‒ Структура нечеткой модели.

2.3.1Нечеткая модель типа Мамдани

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

Рисунок 2.4 – Диаграмма деятельности процесса нечеткого вывода

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

В модели типа Мамдани взаимосвязь между входами X = (x 1 , x 2 ,…, x n)и выходом y определяется нечеткой базой знаний следующего формата:

,

где
- лингвистический терм, которым оценивается переменная x i в строке с номером
;
), где- количество строк-конъюнкций, в которых выходоценивается лингвистическим термом;
- количество термов, используемых для лингвистической оценки выходной переменной.

С помощью операций ∪(ИЛИ) и ∩ (И) нечеткую базу знаний можно переписать в более компактном виде:

(1)

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

Нечеткая база знаний (1) может трактоваться как некоторое разбиение пространства влияющих факторов на подобласти с размытыми границами, в каждой из которых функция отклика принимает значение, заданное соответствующим нечетким множеством. Правило в базе знаний представляет собой «информационный сгусток», отражающий одну из особенностей зависимости «входы–выход». Такие «сгустки насыщенной информации» или «гранулы знаний» могут рассматриваться как аналог вербального кодирования, которое, как установили психологи, происходит в человеческом мозге при обучении. Видимо поэтому формирование нечеткой базы знаний в конкретной предметной области, как правило, не составляет трудностей для эксперта.

Введем следующие обозначения:

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

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

Степень принадлежности входного вектора
нечетким термам из базы знаний (1) определяется следующей системой нечетких логических уравнений:

Наиболее часто используются следующие реализации: для операции ИЛИ - нахождение максимума, для операции И- нахождение минимума.

Нечеткое множество , соответствующее входному вектору X * , определяется следующим образом:

где imp- импликация, обычно реализуемая как операция нахождения минимума; agg- агрегирование нечетких множеств, которое наиболее часто реализуется операцией нахождения максимума.

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

Модели типа Мамдани и типа Сугэно будут идентичными, когда заключения правил заданы четкими числами, т. е. в случае, если:

1) термы d j выходной переменной в модели типа Мамдани задаются синглтонами - нечеткими аналогами четких чисел. В этом случае степени принадлежностей для всех элементов универсального множества равны нулю, за исключением одного со степенью принадлежности равной единице;

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

2.3.2 Нечеткая модель типа Сугэно

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

Модель Такаги-Сугено иногда носит называние Takagi-Sugeno-Kang. Причина состоит в том, что этот тип нечеткой модели был первоначально предложен Takagi и Sugeno. Однако Канг и Сугено провели превосходную работу над идентификацией нечеткой модели. Отсюда и происхождение названия модели.

В модели типа Сугэно взаимосвязь между входами
и выходом y задается нечеткой базой знаний вида:

где - некоторые числа.

База знаний (3) аналогична (1) за исключением заключений правил , которые задаются не нечеткими термами, а линейной функцией от входов:

,

Таким образом, база знаний в модели типа Сугэно является гибридной - ее правила содержат посылки в виде нечетких множеств и заключения в виде четкой линейной функции. База знаний (3) может трактоваться как некоторое разбиение пространства влияющих факторов на нечеткие подобласти, в каждой из которых значение функции отклика рассчитывается как линейная комбинация входов. Правила являются своего рода переключателями с одного линейного закона «входы–выход» на другой, тоже линейный. Границы подобластей размытые, следовательно, одновременно могут выполняться несколько линейных законов, но с различными весами. Результирующее значение выхода определяется как суперпозиция линейных зависимостей, выполняемых в данной точке
n-мерного факторного пространства. Это может быть взвешенное среднее

,

или взвешенная сумма

.

Значения
рассчитываются как и для модели типа Мамдани, т. е. по формуле (2).Обратим внимание, что в модели Сугэно в качестве операций ˄ и ˅обычно используются соответственно вероятностное ИЛИ и умножение. В этом случае нечеткая модель типа Сугэно может рассматриваться как особый класс многослойных нейронных сетей прямого распространения сигнала, структура которой изоморфна базе знаний. Такие сети получили название нейро-нечетких.

Задумывались ли вы когда-нибудь о том, как мыслит человек? Какими словами мы обычно пользуемся, чтобы объяснить меру чего-либо? Выражения «Немного посолить», «слегка остудить», «пройти чуть дальше», «налить много», «принести мало» — совершенно обычны для человека. Именно такими категориями мы воспринимаем окружающую действительность. В нашей обычной жизни мы крайне редко пользуемся чёткими правилами и алгоритмами. У человека нет точных датчиков и измерительных приборов. Вместо этого у нас есть органы чувств и наше врождённое чувство меры. Но это нельзя назвать нашим недостатком, наоборот – в этом заключается наше главное преимущество. Это позволяет нам быть адаптивными. Дело в том, что окружающий мир настолько сложен, что ни одна супер-мега-крутая вычислительная машина не сможет учесть все его зависимости. Поэтому для точных компьютерных вычислений мы обычно упрощаем задачу, идеализируем её, отбрасываем несущественные факторы, принимаем какие-то допущения и т.д. Мы можем это сделать, именно потому, что наше чувство меры позволяет нам оценить «навскидку», какие факторы вносят значительный вклад, а какие несущественны. Однако существует довольно много задач, которые достаточно сложно формализовать, составить для них «чёткий» алгоритм.

Например, сложно представить, что какая-то автоматика будет печь пирожки вкуснее, чем бабушка Зина. Слишком много «нечётких» факторов в этом деле: и дрожжи каждый раз разные, и мука; от влажности и температуры в помещении тоже многое зависит. Только опытная бабушка сможет учесть все эти факторы.

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

На заводе «N» работает крановщик Василий. Трудится он на этом предприятии 40 лет, с того самого момента, как окончил ПТУ. Его задача состоит в том, чтобы поднимать краном паллеты с готовой продукцией и ставить на место складирования. Делать это умеет только Василий. За многие годы практики он чётко научился определять, с какой скоростью нужно двигаться на кране в зависимости от того, какой груз у него на крюке, за сколько метров до цели нужно начать останавливаться, как регулировать угол наклона стрелы крана, чтобы уменьшить раскачивание паллеты на крюке и т.д. Весь этот опыт позволяет ему каждый раз опускать груз точно в цель и делать это на оптимальной скорости.

Однако, Василию скоро на пенсию, а заменить его некому. К тому же, руководство завода взяло курс на автоматизацию производственного процесса. Для того, чтобы заменить крановщика интеллектуальным устройством, необходимо наделить его «нечёткой логикой» и экспертными знаниями Василия. Поехали…

Входы и выходы системы управления

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

  • Расстояние до цели
  • Амплитуда раскачивания груза на крюке крана

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

  • Педаль газа — регулирует скорость, влияет на амплитуду раскачивания груза
  • Педаль тормоза — влияет на плавность остановки (амплитуду раскачивания груза)
  • Ручка управления стрелой крана – регулирует угол наклона стрелы, компенсирует раскачивание груза

Теперь обратимся к самому Василию, чтобы «добыть» из него бесценные экспертные знания.

Спрашиваем:

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

Василий ответит примерно следующее:

— «Ну, так это… как только зацепил груз, пока до места еще далеко — давлю газ в пол. В середине пути чуть убавляю и плавненько иду, чтоб не шаталась верёвка. Если сильно шатает – газ жму совсем чуть-чуть и немного наклоняю стрелу в противоход. Когда близко подъезжаю – совсем уже газ отпускаю, наоборот притормаживаю малеху».

Вот мы и получили первые нечёткие правила от Василия. Продолжая общение с ним, узнаем и остальные. Представим все полученные правила, в виде таблицы:

– это перевод входного параметра системы в «нечёткую» область.

Первый входной параметр – «расстояние до цели». В терминах «нечёткой логики» — это лингвистическая переменная , поскольку она принимает в качестве значений не числа, а слова. А в понимании вычислительной машины «расстояние до цели» — вполне чёткий параметр, измеряемый в метрах.

Поэтому на этом этапе нам необходимо выяснить у Василия, что для него «близко», а что «очень близко» — определить его нечёткие диапазоны в цифрах. Например, 15 метров – для него будет однозначно близко. А вот насчёт 6 метров – он будет путаться в показаниях, причисляя это значение то к «близко», то к «очень близко». Поэтому «нечёткие диапазоны» могут перекрывать друг друга. Посмотрим, как это выглядит на графике:

Функцию M(x) называют функцией принадлежности . Она показывает степень принадлежности параметра к одному из нечётких значений. Как видно из графика, расстояние 32 метра со степенью принадлежности 0,2 относится к значению «средне» и со степенью принадлежности 0,65 к значению «близко».

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

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

Принятие решения

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

Дефазификация

На этом этапе система управления будет делать обратное преобразование из нечётких значений выходных параметров (найденных по таблице) – к чётким цифрам. Математические алгоритмы этих преобразований разнообразны и зависят от конкретной задачи. Подробно на них заморачиваться не имеет смысла — пусть этим занимаются суровые математики. Инженеру нужно лишь реализовать один из известных алгоритмов.


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

В любом случае структура контроллера нечёткой логики будет примерно такой:

Заключение

В этой статье мы рассмотрели базовые понятия нечёткой логики, которая является составной частью более широкого понятия «Искусственный интеллект». Нечёткая логика широко применяется при построении экспертных систем, систем поддержки принятия решений, систем управления, основанных на экспертных знаниях. На очереди статья, в которой мы расскажем, в каких приборах и устройствах, используемых нами в повседневной жизни, применяется нечёткая логика. Да-да, я не оговорился, каждый из нас ежедневно пользуется приборами, обладающими искусственным интеллектом. Но об этом позже, а на сегодня всё! Помните, читая LAZY SMART , вы становитесь ближе к миру новых технологий! До свидания!

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

  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 (на главной диагонали, естественно, будут единицы). Как степень равенства прямоугольников можно брать отношение площади их пересечения к площади большего из прямоугольников.

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