Элементы нечеткой логикиh3ce


Содержание
Илон Маск рекомендует:  Что такое код bccomp

Элементы нечеткой логики

Дата добавления: 2013-12-23 ; просмотров: 594 ; Нарушение авторских прав

Пример: задача поиска пути в лабиринте

В качестве примера использования механизма возврата напишем процедуру для поиска пути в лабиринте. Лабиринт представлен фак­тами вида:

стена(I, J) для позиции в I-м ряду и J-й колонке, где есть стена

отсутств_стена(I, J) для позиции в I-м ряду и J-й колонке, где нет стены

выход (I, J) для позиции в 1-м ряду и J-й колонке, являющейся выходом

Рассмотрим небольшой лабиринт:

Выход

Последний ряд лабиринта описывается фактами:

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

Если исходная позиция является выходом, то путь найден.

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

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

/* Терм a(I, J) представляет позицию в

/* I-м ряду и J-й колонке.

путь(а(I, J),[а(I, J)], Были) :- выход(I, J).

/* Пытаемся идти на север

путь(а(I, J),[а(I, J) | Р], Были) :-

можем_идти(a (K, J), Были),

путь(а(I, J) ,Р, [a(K, J) | Были]).

/* Пытаемся идти на юг

путь(а(I, J),[а(I, J) | Р], Были) :-

можем_идти(a (K, J), Были),

путь(а(I, J) ,Р, [a(K, J) | Были]).

/* Пытаемся идти на запад

путь(а (I, J), [a (I, J) | P], Были) :-

можем_идти(а(I, L), Были),

путь(а(I, L), Р, [а(I, L)| Были]).

/* Пытаемся идти на восток

путь(а (I, J), [a (I, J) | P], Были) :-

можем_идти(а(I, L), Были),

путь(а(I, L), Р, [а(I, L)| Были]).

/* в позицию a(I, J) можно попасть при

/* условии, что там нет стены и мы

/* не побывали в ней прежде

можем_идти(а(I, J)), Были) :-

not (принадлежит (a (I, J), Были)).

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

Выходом из лабиринта является позиция выход (3,1).

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).

Целевое утверждение не удается согласовать с первым утвержде­нием

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)])

так как а (3,2) не является выходом. Во втором утверждении пред­принимается попытка найти путь, двигаясь на север, т.е. согласовать целевое утверждение

путь(а(2,2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).

Ни одно из утверждений не может согласовать

путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).

Первое утверждение — потому, что а (2, 2) не является выходом, вто­рое — потому, что северная позиция является стеной, третье утверждение — потому, что в южной позиции мы уже побывали, а четвертое и пятое утверждения — потому, что западная и восточная границы — это стены.

Неудача в согласовании


путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)])

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).

Решение пересматривается и выбирается третье утверждение.

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]),

выбирается четвертое утверждение. Мы успешно находим путь, дви­гаясь в западном направлении к позиции а(3,1), которая и является выходом. Рекурсия сворачивается, и в результате полу­чается путь

другие решения(да/нет)? да

Других решений нет

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

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

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

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

Как можно легко заметить, при использовании только классических состояний (ложь-0, истина-1) мы приходим с классическим законам логики.

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

Документация

Fuzzy Logic Toolbox™ обеспечивает функции MATLAB ® , приложения и блок Simulink ® для анализа, разработки и симуляции систем на основе нечеткой логики. Руководства по продукту вы через шаги разработки нечетких систем вывода. Функции обеспечиваются для многих общепринятых методик, включая нечеткую кластеризацию и адаптивное нейронечеткое изучение.

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

Начало работы

Изучите основы Fuzzy Logic Toolbox

Нечеткое системное моделирование вывода

Создайте нечеткие системы вывода и нечеткие деревья

Нечеткая системная настройка вывода

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

Кластеризация данных

Найдите кластеры в данных о вводе/выводе с помощью нечетких c-средних-значений или отнимающей кластеризации

Моделируйте системы в Simulink

Развертывание

Сгенерируйте код для оценки нечетких систем

Документация Fuzzy Logic Toolbox
Поддержка

© 1994-2020 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

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

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Что такое нечеткая логика (fuzzy logic): принцип работы, примеры, применение

Введение в нечеткую логику

Нечеткая логика – это логическая или управляющая система n-значной логической системы, которая использует степени состояния («степени правды») входов и формирует выходы, зависящие от состояний входов и скорости изменения этих состояний. Это не обычная «истинная или ложная» (1 или 0), булева (двоичная) логика, на которой основаны современные компьютеры. Она в основном обеспечивает основы для приблизительного рассуждения с использованием неточных решений и позволяет использовать лингвистические переменные.

Нечеткая логика была разработана в 1965 году профессором Лотфи Заде в Калифорнийском университете в Беркли. Первым приложением было выполнение обработки компьютерных данных на основе естественных значений.

Если говорить проще, состояниями нечеткой логики могут быть не только 1 или 0, но и значения между ними, то есть 0.15, 0.8 и т.д. Например, в двоичной логике, мы можем сказать, что мы имеем стакан горячей воды (то есть 1 или высокий логический уровень) или стакан холодной воды, то есть (0 или низкий логический уровень), но в нечеткой логике, мы можем сказать, что мы имеем стакан теплой воды (ни горячий, ни холодный, то есть где-то между этими двумя крайними состояниями). Четкая логика: да или нет (1, 0). Нечеткая логика: конечно, да; возможно, нет; не могу сказать; возможно да и т.д.

Базовая архитектура нечеткой логической системы

Система нечеткой логики состоит из следующих модулей:

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

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


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

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

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

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

Рассмотрим такое значение «х», что x ∈ X для всего интервала [0,1] и нечеткого множества A, которое является подмножеством X. Функция принадлежности «x» в подмножестве A задается как: fA (x), Обратите внимание, что «x» обозначает значение принадлежности. Ниже приводится графическое представление нечетких множеств.

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

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

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

Первым шагом будет определение лингвистических переменных и терминов. Для входных данных лингвистические переменные приведены ниже:

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

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

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

Третий шаг включает разработку набора правил для базы знаний. Ниже приведен набор правил с использованием логики IF-THEN (если-тогда):

IF качество грязи Small И Тип грязи Greasy, THEN Время стирки Long.
IF качество грязи Medium И Тип грязи Greasy, THEN Время стирки Long.
IF качество грязи Large и тип грязи Greasy, THEN Время стирки Very Long.
IF качество грязи Small И Тип грязи Medium, THEN Время стирки Medium.
IF качество грязи Medium И Тип грязи Medium, THEN Время стирки Medium.
IF качество грязи Large и тип грязи Medium, THEN Время стирки Medium.
IF качество грязи Small и тип грязи Non-Greasy, THEN Время стирки Very Short.
IF качество грязи Medium И Тип грязи Non-Greasy, THEN Время стирки Medium.
IF качество грязи Large и тип грязи Greasy, THEN Время стирки Very Short.

Фазифаер, который первоначально преобразовал входные данные датчиков в эти лингвистические переменные, теперь применяет вышеуказанные правила для выполнения операций нечеткого набора (например, MIN и MAX) для определения выходных нечетких функций. На основе выходных нечетких множеств разработана функция принадлежности. Последним шагом является этап дефазификации, в котором дефазифаер использует выходные функции принадлежности для определения времени стирки.

Области применения нечеткой логики

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

Fuzzy logic. Учим «электронные мозги» мыслить по-человечьи.

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

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

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

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

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

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

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

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

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

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

Нечёткие правила

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

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

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

Илон Маск рекомендует:  Разработка сайтов

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

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

Фазификация

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

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

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

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

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

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

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

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

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

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

Нечёткий контроллер

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

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


Заключение

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

Нечеткая логика — математические основы

Введение

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

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

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

Триумфальное шествие нечеткой логики по миру началось после доказательства в конце 80-х Бартоломеем Коско знаменитой теоремы FAT (Fuzzy Approximation Theorem). В бизнесе и финансах нечеткая логика получила признание после того как в 1988 году экспертная система на основе нечетких правил для прогнозирования финансовых индикаторов единственная предсказала биржевой крах. И количество успешных фаззи-применений в настоящее время исчисляется тысячами.

Математический аппарат

Характеристикой нечеткого множества выступает функция принадлежности (Membership Function). Обозначим через MFc(x) – степень принадлежности к нечеткому множеству C, представляющей собой обобщение понятия характеристической функции обычного множества. Тогда нечетким множеством С называется множество упорядоченных пар вида C=c(x)/x>, MFc(x) [0,1]. Значение MFc(x)=0 означает отсутствие принадлежности к множеству, 1 – полную принадлежность.

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

Так, чай с температурой 60 С принадлежит к множеству «Горячий» со степенью принадлежности 0,80. Для одного человека чай при температуре 60 С может оказаться горячим, для другого – не слишком горячим. Именно в этом и проявляется нечеткость задания соответствующего множества.

Для нечетких множеств, как и для обычных, определены основные логические операции. Самыми основными, необходимыми для расчетов, являются пересечение и объединение.

Пересечение двух нечетких множеств (нечеткое «И»): A B: MFAB(x)=min(MFA(x), MFB(x)).
Объединение двух нечетких множеств (нечеткое «ИЛИ»): A B: MFAB(x)=max(MFA(x), MFB(x)).

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

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

Нечеткая переменная описывается набором (N,X,A), где N – это название переменной, X – универсальное множество (область рассуждений), A – нечеткое множество на X.
Значениями лингвистической переменной могут быть нечеткие переменные, т.е. лингвистическая переменная находится на более высоком уровне, чем нечеткая переменная. Каждая лингвистическая переменная состоит из:

  • названия;
  • множества своих значений, которое также называется базовым терм-множеством T. Элементы базового терм-множества представляют собой названия нечетких переменных;
  • универсального множества X;
  • синтаксического правила G, по которому генерируются новые термы с применением слов естественного или формального языка;
  • семантического правила P, которое каждому значению лингвистической переменной ставит в соответствие нечеткое подмножество множества X.

Рассмотрим такое нечеткое понятие как «Цена акции». Это и есть название лингвистической переменной. Сформируем для нее базовое терм-множество, которое будет состоять из трех нечетких переменных: «Низкая», «Умеренная», «Высокая» и зададим область рассуждений в виде X=[100;200] (единиц). Последнее, что осталось сделать – построить функции принадлежности для каждого лингвистического терма из базового терм-множества T.

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

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

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

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

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

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

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

Совокупность функций принадлежности для каждого терма из базового терм-множества T обычно изображаются вместе на одном графике. На рисунке 3 приведен пример описанной выше лингвистической переменной «Цена акции», на рисунке 4 – формализация неточного понятия «Возраст человека». Так, для человека 48 лет степень принадлежности к множеству «Молодой» равна 0, «Средний» – 0,47, «Выше среднего» – 0,20.

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

Нечеткий логический вывод

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

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

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

Пусть в базе правил имеется m правил вида:
R1: ЕСЛИ x1 это A11 … И … xn это A1n, ТО y это B1

Ri: ЕСЛИ x1 это Ai1 … И … xn это Ain, ТО y это Bi

Rm: ЕСЛИ x1 это Ai1 … И … xn это Amn, ТО y это Bm,
где xk , k=1..n – входные переменные; y – выходная переменная; Aik – заданные нечеткие множества с функциями принадлежности.

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

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

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

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

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

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

Далее находятся «усеченные» функции принадлежности:

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

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

Дефазификация, или приведение к четкости. Существует несколько методов дефазификации. Например, метод среднего центра, или центроидный метод:
$$MF\,(y)= \max_i \,(B_i^*\,(y))$$

Геометрический смысл такого значения – центр тяжести для кривой MF(y). Рисунок 6 графически показывает процесс нечеткого вывода по Мамдани для двух входных переменных и двух нечетких правил R1 и R2.

Интеграция с интеллектуальными парадигмами

Гибридизация методов интеллектуальной обработки информации – девиз, под которым прошли 90-е годы у западных и американских исследователей. В результате объединения нескольких технологий искусственного интеллекта появился специальный термин – «мягкие вычисления» (soft computing), который ввел Л. Заде в 1994 году. В настоящее время мягкие вычисления объединяют такие области как: нечеткая логика, искусственные нейронные сети, вероятностные рассуждения и эволюционные алгоритмы. Они дополняют друг друга и используются в различных комбинациях для создания гибридных интеллектуальных систем.


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

Нечеткие нейронные сети

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

Наибольшее распространение в настоящее время получили архитектуры нечеткой НС вида ANFIS и TSK. Доказано, что такие сети являются универсальными аппроксиматорами.

Быстрые алгоритмы обучения и интерпретируемость накопленных знаний – эти факторы сделали сегодня нечеткие нейронные сети одним из самых перспективных и эффективных инструментов мягких вычислений.

Адаптивные нечеткие системы

Классические нечеткие системы обладают тем недостатком, что для формулирования правил и функций принадлежности необходимо привлекать экспертов той или иной предметной области, что не всегда удается обеспечить. Адаптивные нечеткие системы (adaptive fuzzy systems) решают эту проблему. В таких системах подбор параметров нечеткой системы производится в процессе обучения на экспериментальных данных. Алгоритмы обучения адаптивных нечетких систем относительно трудоемки и сложны по сравнению с алгоритмами обучения нейронных сетей, и, как правило, состоят из двух стадий: 1. Генерация лингвистических правил; 2. Корректировка функций принадлежности. Первая задача относится к задаче переборного типа, вторая – к оптимизации в непрерывных пространствах. При этом возникает определенное противоречие: для генерации нечетких правил необходимы функции принадлежности, а для проведения нечеткого вывода – правила. Кроме того, при автоматической генерации нечетких правил необходимо обеспечить их полноту и непротиворечивость.

Значительная часть методов обучения нечетких систем использует генетические алгоритмы. В англоязычной литературе этому соответствует специальный термин – Genetic Fuzzy Systems.

Значительный вклад в развитие теории и практики нечетких систем с эволюционной адаптацией внесла группа испанских исследователей во главе с Ф. Херрера (F. Herrera).

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

Нечеткие запросы к базам данных (fuzzy queries) – перспективное направление в современных системах обработки информации. Данный инструмент дает возможность формулировать запросы на естественном языке, например: «Вывести список недорогих предложений о съеме жилья близко к центру города», что невозможно при использовании стандартного механизма запросов. Для этой цели разработана нечеткая реляционная алгебра и специальные расширения языков SQL для нечетких запросов. Большая часть исследований в этой области принадлежит западноевропейским ученым Д. Дюбуа и Г. Праде.

Нечеткие ассоциативные правила

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

Нечеткие когнитивные карты

Нечеткие когнитивные карты (fuzzy cognitive maps) были предложены Б. Коско в 1986 г. и используются для моделирования причинных взаимосвязей, выявленных между концептами некоторой области. В отличие от простых когнитивных карт, нечеткие когнитивные карты представляют собой нечеткий ориентированный граф, узлы которого являются нечеткими множествами. Направленные ребра графа не только отражают причинно-следственные связи между концептами, но и определяют степень влияния (вес) связываемых концептов. Активное использование нечетких когнитивных карт в качестве средства моделирования систем обусловлено возможностью наглядного представления анализируемой системы и легкостью интерпретации причинно-следственных связей между концептами. Основные проблемы связаны с процессом построения когнитивной карты, который не поддается формализации. Кроме того, необходимо доказать, что построенная когнитивная карта адекватна реальной моделируемой системе. Для решения данных проблем разработаны алгоритмы автоматического построения когнитивных карт на основе выборки данных.

Нечеткая кластеризация

Нечеткие методы кластеризации, в отличие от четких методов (например, нейронные сети Кохонена), позволяют одному и тому же объекту принадлежать одновременно нескольким кластерам, но с различной степенью. Нечеткая кластеризация во многих ситуациях более «естественна», чем четкая, например, для объектов, расположенных на границе кластеров. Наиболее распространены: алгоритм нечеткой самоорганизации c-means и его обобщение в виде алгоритма Густафсона-Кесселя.

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

Элементы нечеткой логики

Дата введения 2020-09-01

Предисловие

1 ПОДГОТОВЛЕН Негосударственным образовательным частным учреждением дополнительного профессионального образования «Новая инженерная школа» (НОЧУ «НИШ») на основе собственного перевода на русский язык англоязычной версии указанного в пункте 4 стандарта, который выполнен Российской комиссией экспертов МЭК/ТК 65 и Федеральным государственным унитарным предприятием «Всероссийский научно-исследовательский институт стандартизации и сертификации в машиностроении» (ВНИИНМАШ)

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 306 «Измерения и управление в промышленных процессах»

4 Настоящий стандарт идентичен международному стандарту МЭК 61131-7:2000* «Контроллеры программируемые. Часть 7. Программирование нечеткого управления» (IEC 61131-7:2000 «Programmable controllers — Part 7: Fuzzy control programming», IDT).
________________
* Доступ к международным и зарубежным документам, упомянутым здесь и далее по тексту, можно получить, перейдя по ссылке на сайт http://shop.cntd.ru. — Примечание изготовителя базы данных.

Международный стандарт разработан Техническим комитетом МЭК ТК 65 «Измерение, управление и автоматизация в промышленных процессах».

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

5 ВВЕДЕН ВПЕРВЫЕ

Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

Введение

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

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

— управления (замкнутые или разомкнутые системы, одна или несколько переменных в линейных или нелинейных системах);

— настройки параметров систем в интерактивном или автономном режиме;

— классификации и распознавания образов;

— принятия решений в режиме реального времени (отправить изделие на станок А или Б?);

— помощи операторам в принятии решения или при регулировании параметров;

— обнаружения и диагностики неисправностей систем.

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

Кроме того, нечеткое управление может комбинироваться с классическими методами управления.

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

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

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

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

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

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

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

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

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

1 Область применения

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

Целью настоящего стандарта является достижение изготовителями и потребителями общего понимания основных средств интегрирования приложений нечеткого управления в языки программируемых контроллеров в соответствии с МЭК 61131-3, а также возможности обмена переносимыми программами нечеткого управления между разными системами программирования.

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

2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты*.
_______________
* Таблицу соответствия национальных стандартов международным см. по ссылке. — Примечание изготовителя базы данных.

IEC 60050-351:1998, International Electrotechnical Vocabulary (IEV) — Part 351: Automatic control (Международный электротехнический словарь (IEV). Часть 351. Автоматическое управление)

IEC 61131-3:1993, Programmable controllers — Part 3: Programming languages (Программируемые контроллеры. Часть 3. Языки программирования)

3 Термины и определения

В настоящем стандарте применены следующие термины с соответствующими определениями. Определения для элементов языка дополнительно приведены в МЭК 61131-3.

Примечание — Термины, определения которых даны в настоящем разделе, выделяются курсивом в тексте определений.

3.1 аккумуляция (accumulation)

агрегирование результатов (result aggregation): Объединение результатов лингвистических правил в конечный результат.

3.2 агрегирование (aggregation)

определение степени выполнения (determination of degree of firing): Объединение степени принадлежности всех индивидуальных подусловий в правиле для расчета степени выполнения условия правила.

3.3 активизация (activation): Процесс, которым степень выполнения условия воздействует на выходное нечеткое множество.

3.4 результат (conclusion)

следствие (consequent): Выходное значение лингвистического правила, то есть действие, которое должно выполняться (часть THEN правила нечеткого управления IF..THEN).

3.5 условие (condition)

предпосылка (antecedent): Выражение, включая подусловия, объединенные нечеткими операторами И, ИЛИ, НЕ.

3.6 четкое множество (crisp set): Особый случай нечеткого множества, в котором функция принадлежности принимает только два значения, обычно определяемые как 0 и 1.

3.7 дефаззификация (defuzzification): Преобразование нечеткого множества в числовое значение.

3.8 степень принадлежности (degree of membership): Значение функции принадлежности.

3.9 фаззификация (fuzzification): Определение степени принадлежности четкого входного значения лингвистических термов, определенных для каждой входной лингвистической переменной.

3.10 нечеткое управление (fuzzy control): Тип управления, алгоритм управления в котором основан на нечеткой логике.

[IEV 351-17-51, измененный]

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

3.12 нечеткий оператор (fuzzy operator): Оператор, используемый в теории нечеткой логики.

3.13 нечеткое множество (fuzzy set): Нечеткое множество A определяется как множество упорядоченных пар (x, ), где x — это элемент предметной области U, а — функция принадлежности, которая сопоставляет каждому x U действительное число [0,1], определяющее степень того, насколько x принадлежит множеству.

3.14 логический вывод (inference): Применение лингвистических правил к входным значениям с целью определения выходных значений.

3.15 лингвистическое правило (linguistic rule): Правило IF-THEN (если . то . ) с условием и результатом, причем одно или оба являются лингвистическими.

3.16 лингвистический терм (linguistic term): В контексте лингвистического управления лингвистические термы определяются нечеткими множествами.

3.17 лингвистическая переменная (linguistic variable): Переменная, которая принимает значения из диапазона лингвистических термов.


3.18 функция принадлежности (membership function): Функция, которая в предметной области определяет степень принадлежности данному нечеткому множеству.

[IEV 351-17-52, измененный]

3.19 синглтон (singleton): Нечеткое множество, функция принадлежности которого равна единице в одной точке и нулю во всех других точках.

3.20 подусловие (subcondition): Элементарное выражение в форме переменной или терма «лингвистическая переменная IS лингвистический терм».

3.21 база правил (rule base): Набор лингвистических правил для достижения определенных целей.

3.22 весовой коэффициент (weighting factor): Значение в интервале 0. 1, которое устанавливает степень важности, достоверности, уверенности для лингвистического правила.

4 Интеграция в программируемый контроллер

В соответствии с разделом 5, приложения нечеткого управления, программируемые на языке нечеткого управления FCL, должны быть заключены в функциональные блоки (или программы), как это определено в МЭК 61131-3. В настоящем стандарте применяются понятия типов и экземпляров функциональных блоков, приведенные в МЭК 61131-3.

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

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

Функциональный блок, определенный в языке нечеткого управления FCL, может применяться в программах и функциональных блоках, написанных на любом из языков, приведенных в МЭК 61131-3, например, на языке релейной логики, на языке программирования и т.д. Типы данных входных и выходных параметров функционального блока или программы, написанных на FCL, должны совпадать с соответствующей «вызывающей средой», как показано на рисунке 1.

Рисунок 1 — Пример функционального блока нечеткого управления в представлении FBD

Рисунок 1 — Пример функционального блока нечеткого управления в представлении FBD

В данном примере Valve_Control_1 — это экземпляр определенного потребителем функционального блока, имеющий тип Fuzzy_FB. В соответствии с разделом 5, тип функционального блока Fuzzy_FB может программироваться на языке нечеткого управления FCL. В данном случае функциональный блок Fuzzy_FB используется в программе или в функциональном блоке, который представлен на графическом языке FBD (Function Block Diagram, диаграммы функциональных блоков) в МЭК 61131-3.

5 Язык нечеткого управления FCL

5.1 Обмен программами нечеткого управления

Определение языка нечеткого управления FCL основывается на определении языков программирования, определенных в МЭК 61131-3. Взаимодействие алгоритма нечеткого управления с его программной средой «прячет» его от программы. Поэтому в соответствии с МЭК 61131-3 внешне алгоритм нечеткого управления представлен в виде функционального блока. В соответствии с настоящим разделом должны быть определены элементы, необходимые для описания внутренних логических частей функционального блока нечеткого управления, например функции принадлежности, правила, операторы и методы.

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

Рисунок 2 — Обмен данными программ в языке нечеткого управления (FCL)

Рисунок 2 — Обмен данными программ в языке нечеткого управления (FCL)

5.2 Элементы языка нечеткого управления

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

5.2.1 Интерфейс функционального блока

В соответствии с разделом 4, внешнее представление нечеткого функционального блока требует, чтобы использовались следующие стандартные элементы языка, установленные в МЭК 61131-3:

VAR_INPUT
variable_name: data_type;
.
END_VAR

Описание входного параметра

VAR_OUTPUT
variable_name: data_type;
.

END_VAR
.

Описание выходного параметра

VAR
variable_name: data_type; END_VAR END_FUNCTION_BLOCK

С помощью данных элементов языка можно описать интерфейс функционального блока. Интерфейс функционального блока определяется с помощью параметров, которые переходят в функциональный блок и выходят из него. Типы данных параметров должны определяться в соответствии с МЭК 61131-3.

На рисунке 3 представлен пример описания функционального блока на языках структурированного текста (ST) и диаграмм функциональных блоков (FBD).

Рисунок 3 — Пример описания интерфейса функционального блока на языках ST и FBD

Рисунок 3 — Пример описания интерфейса функционального блока на языках ST и FBD

5.2.2 Фаззификация

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

TERM term_name:= membership_function;

После ключевого слова FUZZIFY должно быть указано имя переменной, используемой для фаззификации, т.е. имя переменной, предварительно определенной в разделе VAR_INPUT. Лингвистическая переменная должна быть описана одним или несколькими лингвистическими термами. Лингвистические термы, введенные ключевым словом TERM, с целью фаззификации переменной описываются функцией принадлежности. Функция принадлежности представляет собой кусочно-линейную функцию, которая определяется таблицей точек.

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

точка i::= значение входа i | variable_name входа i, значение i степени принадлежности

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

Минимальное количество точек равно двум. Максимальное количество ограничивается согласно классам соответствия, см. раздел 6.

Пример функции принадлежности с тремя точками для лингвистического терма «тепло»:

TERM тепло: = (17,5; 0,0) (20,0; 1,0) (22,5; 0,0);

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

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

Рисунок 4 — Пример термов быстрого изменения по линейному закону

Рисунок 4 — Пример термов быстрого изменения по линейному закону

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

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

Примечание — Значения точек функции принадлежности во время выполнения могут лежать вне последовательности.

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

Пример из жизни:

Человеку очень трудно преодолеть, а иногда невозможно, субъективные суждения или оценки чего-либо, которые зависят от многих факторов, которые выходят за рамки предложенной темы. Их можно называть такими терминами как: вкус, предпочтение, личный выбор и т.д. Например, кому-то может показаться холодной погода при температуре в 18 °С, а кому-то теплой. Для кого-то скорость автомобиля в 120 км/ч будет очень высокой, а для кого-то низкой. И даже при покупке вещей нельзя с полной уверенностью утверждать, что они понравятся вашим близким или друзьям. Но, что самое удивительное, все рассмотренные субъективные суждения являются равнозначными — то есть нельзя считать, что кто-то прав, а кто-то неправ. Поэтому можно говорить о некой нечеткости или размытости условий.

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

Но как обойтись без сложных математических рассчетов и учесть неопределенные (и даже субъективные) требования ? Давайте мысленно превратимся в «мозги» климат-контроля и попробуем смоделировать его работу. Допустим, температура существенно возросла — это можно определить, как по ощущениям , так и по показателям термометра . После этого события необходимо принять какие-то действия, например, усилить напор холодного воздуха примерно до комфорного температурного уровня. При понижении температуры логично ослабить или уменьшить работу системы.

Таким образом, набор действий в контексте различных условий можно рассматривать, как соотвествующие правила. Этот подход можно легко реализовать в любой программной среде, на основе набора деклараций, например — ( ЕСЛИ T > 30 °С, ТО НУЖНО ПОНИЗИТЬ ТЕМПЕРАТУРУ ДО 20 °С и т.д.). Стоит отметить, что существует декларативный подход при разработке программного обеспечения. Действительно, этот подход ближе к человеческой интерпретации событий и явлений, поэтому совокупность правил гораздо легче и проще сопровождать , чем сложные системы уравнений на основе циклов и наборов вложенный условий (а значит менее затратней для вычислений). Но как задать точные количественные ограничения? Ведь тепература в 28.5°С по ощущениям не намного будет отличаться от пороговой в 30 °С ( можно сформировать интервал температур, но когда дело касается не одного, а сотни параметров, то такой прием сильно усложнит сопровождение и добавление новых параметров в условия). А значит наша модель просто не сработает!

Как видно, в процессе принятия решений возникло много грубых допущений. Возникает закономерный вопрос, как их учитывать? Можно задействовать группу людей, в нашем случае, сотрудники, которые будут использовать климат-контроль. Они выступят в роли экспертов и детализируют или приведут количественную интерпретацию таких понятий как : «примерно», «по ощущениям», «комфортный», «тепло», «холодно» и т.д. Теперь наши правила можно преобразовать к следующему виду — ЕСЛИ СТАЛО ЖАРКО, ТО НУЖНО ПОНИЗИТЬ ТЕМПЕРАТУРУ .

Основная трудность возникает, когда необходимо перенести указанные декларации на машинный язык. Даже, если это сделать, то как работать с такими необычными предикатами — ЖАРКО, ХОЛОДНО? Более того, не совсем понятно как проводить процедуры перевода предиктов в количественные значения и обратно. Если использовать более двух предиктов, то какие логические операторы использовать — логические AND, OR ? Ответы на эти вопросы будут рассмотрены далее.

Вплоть до середины XX века доминировала классическая теория множеств. Наивная теория множеств (разработанная Г. Кантором) гласит, что элементы объединяются в единое целое и это делается по определенному закону . Отсюда следует два важных следствия:

  • Обладает определенным смыслом или семантикой ;
  • Элементы объединяются в множество по определенному закону , что позволяет отделить одни элементы от других.

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


  • Задача: Одной из таких задач — автоматическая классификация , когда производится разделение объектов на различные подмножества;
  • Цель: автоматически определять класс объектов по описывающим эти объекты признакам. Метод обучения с учителем — показывается объект и его принадлежность к тому или иному подмножеству;
  • Проблемы: Для количественных элементов (которые можно описать количественными параметрами т.е. измерить) устанавливают вероятность принадлежности объекта множеству, например, порог >= 0.5 . (в данном случае терялась часть информации и оценка элементов сильно угрублялась). Так же оставалась неразрешенная проблема, как оперировать категориальными элементами (которые описываются качественными и даже субъективными характеристиками: высокий/низкий, теплый/холодный, красивый/страшный), как переводить их в количественные значения.

Проблема разрешения количественных элементов:

Проблема разрешения категориальных элементов:

Для решения вышеизложенных проблем, во второй половине XX века, была разработана теория «нечетких множеств» авторы Лотфи А.Заде и Рональд Р.Ягер. Суть данной теории сводилась к тому, что каждому элементу ставится в соотвествии некоторая степень уверености, что элемент принадлежит множеству. Например, 1 — однозначно принадлежит и 0 — одназначно не принадлежит. Соотвественно, диапазон значений между 0 и 1 определяет эту степень уверенности . Как оказалось, стало возможным описывать отдельное значение в рамках нечеткого множества. Например, если на улице «тепло«, то это не значит, что в данный момент действую все температуры из множества «тепло» — действует только одна температура, которая имеет высокую степень соотвествия понятию «тепло«.

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

Долгое время некоторые специалисты в области математической статистики и теории вероятностей, отрицали саму возможность применения нечеткой логики в приложениях. Они утверждали, что все виды неопределенности могут быть выражены только в рамках вероятности. Так в чем же отличие вероятности от степени уверенности? Во-первых, теория вероятностей позволяет дать ответ на вопрос произойдет или нет некоторое хорошо описанное событие в будущем. Лингвистическая неопределенность связана с самой неточностью описания ситуации или события, которые даже могут не наступить в будущем. Во-вторых, само моделирование неопределенности связано с различными аспектами неопределенности — в теории вероятностей (объективные), нечеткой логике (субъективные). Для полного понимания приведем наглядный пример: рассмотрим первый случай, изображенный на рисунке а. Допустим есть две бутылки с жидкостью — A (в ней есть степень уверенности наличия безопасной для здоровья человека жидкости — 0.91 ) и Б (аналогично, но с вероятностью 0.91 ). Вопрос, что пить? Если человек испытывающий жажду, знаком с нечеткой логикой и теорией вероятности, то наверняка выпьет жидкость из бутылки — A.


Произойдет это потому, что в бутылке, скорей всего, чистая или почти чистая вода т.к. степень соответствия близка к единице. В противном случае, если степень соответствия была равна или близка нулю, то жидкость была бы непригодной для питья (может даже была не водой а опасной кислотой). Таким образом, человек делает вывод, что вода не совсем чистая, но безопасная для жизни. В противоположность этому, вероятность говорит о том, что примерно в 9 случаях из 10 вода, будет пригодна для употребления — как интерпретировать этот тезис? Есть риск, даже небольшой, что жидкость совершенно не пригодна для питья т.е. в ней может находиться опасная для жизни человека кислота и т.д. Рассмотрим ситуацию (б). В данном случае, все кардинальным образом меняется — теперь есть полная гарантия, что в бутылке не уксус. Но нет полной уверенности, что в ней пригодная для употребления вода (может быть не уксус, но соляная кислота). В бутылке А -есть высокая степень уверенности, что в ней находится джин-тоник. Если это даже не так, то точно какой-то напиток, который напоминает джин-тоник или содержит алкоголь — значит можно пить. Если резюмировать вышеизложенное, то основное отличие от классической вероятности — это наличие лингвистической неопределенности (субъективности), которая может помогать решать различные задачи, связанные с принятием решений.

Нечеткое множество — представляет собой совокупность элементов произвольной природы , относительно которых нельзя с полной уверенностью утверждать — принадлежит ли тот или иной элемент рассматриваемой совокупности данному множеству или нет . Таким образом, нечеткое множество строится на базе универсального множестваU (т.е. совершенно обычного множества) и может оперировать не только количественными (непрерывные=температура и дискретные=веса гирь), но и качественными (термами) параметрами элементов. Рассмотрим подробнее:

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

  • Определение универсального множестваU. Определение количественных и качественных параметров, описывающих данное множество;
  • Сформировать совокупность терм , описывающих лингвистическую переменную. Например, температура <«тепло«, «холодно«, «жарко«>;
  • Для каждого терма A формируется функциональная зависимость, обозначим — μA(x), определяющую степень соотвествия элементов универсального множества U соотвествующему терму (данная процедура назвается — задание функции принадлежности на области универсального множества, где каждый элемент имеет свою степень соотвествия принадлежности этому универсальному множеству).

Функция принадлежности является ключевым элементом . С одной стороны, обеспечивает удобный инструмент для представления в аналитическом виде степени принадлежности заданного терма (т.е. по оси ординат — f(x) всегда откладывается диапазон от 0(однозначно не принадлежит) до 1(однозначно принадлежит) — степень принадлежности, а по оси абсцисс- x количественные показатели соотвествующего терма). С другой стороны, дает возможность производить различные операции над нечеткими множествами.

Функции принадлежности бывают разных видов:

Как задается функция принадлежности? Эксперт или группа экспертов задают для каждого аргумента x (м.б. скорость, температура, давление и т.д.) значение принадлежности (от 0 до 1). Такой метод актуален для свойств объекта, которые могут быть измерены в количественной шкале (скорость, расстояние, температу и т.д.). При этом целесообразно ограничить рассмотрение параметров только теми значениями величин, которые имеют физический смысл в контексте решаемой задачи. Затем функция принадлежности может быть уточнена опытным путем. Рассмотрим пример — скорость автомобиля около 50 км/ч для первого приближения можно построить нечеткое множество треугольной формы (a = 45 км/ч, b =50 км/ч, c = 60 км/ч), если задан «нечеткий» интервал — «скорость движения автомобиля находится в пределах примерно 50-60 км/ч», тогда можно построить функцию трацепеивидной формы (a = 45 км/ч, b =50 км/ч, c = 60 км/ч, d = 65 км/ч).

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

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

Таким образом, можно сказать, что существует ряд закономерностей, которые носят «плавный переход»(кривая) или «резкий» (кусочно-линейный). В первом случае, плавное увеличие или уменьшение должно учитываться при принятии решения,где малейшие изменения параметра могут привести к плавному изменению всей системы (увеличие угла поворота крана к постепенному увеличинию воды, уменьшее температуры в помещении к плавному увеличению обогрева и т.д.).Во втором случае, есть ряд примеров, когда резкий переход необходим в силу логической целесообразности ( весовая категория спорсмена — 85 (средний вес) 93 (тяжелый), 95 (сверхтяжелый) даже малейшее увеличение веса приводит к «резкому» переходу в другую спортивную категорию и т.д.).

Основные операции в нечеткой логике:

Логические операции . Существуют различные способы обработки нечетких множеств: минимаксный (наиболее часто используется), вероятностный и ограниченный (об этих подходах можно почитать тут). Далее, будет рассматриваться минимаксный способ обработки. На основе этого подхода, определяют три базовые операции над множествами: отрицание ( исключение — «НЕ»), конъюкция ( пересечение — «И» ) и дизъюнкция ( объединение — «ИЛИ» ). В данном контексте, можно провести аналогию с бинарными операторами. Но в бинарной логике однозначно задаются значения операндов в виде: 0 и 1 . В нечетких множествах, могут существовать значения из диапазона ( от 0 до 1 ), поэтому, строгая бинарные логика не подходят. Вместо этого используются следующие операции ( рассмотрим значения элементов из нечеткого множества — μA, μB ):

  1. Отрицание : 1-μA( Пример : μA = 0.3, 1-0.3 = 0.7);
  2. Конъюкция ∧ (AND) : min (μA, μB) ( Пример : μA = 0.3, μB = 0.2, min(0.3, 0.2) = 0.2 ) ;
  3. Дизъюнкция ∨ (OR) : max (μA, μB) ( Пример : μA = 0.3, μB = 0.2, max(0.3, 0.2) = 0.3);

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

  1. ОченьA: A(x) ) 2 ( Пример : μA = 0.2, ОЧЕНЬ_А = 0.2 2 = 0.04 ) ;
  2. Наверное A: (√μA(x) ) ( Пример : μA = 0.2, НАВЕРНОЕ_А = square (0.2) ≈ 0.45 );

Фаззификация . Высказывание (предикат) — предложение, выражающее суждение м.б. ложным или истинным. Однако для части предикатов трудно определить некоторую однозначность. Пример: на улице тепло, стол тяжелый. Важную задачу которую позволяет решать нечеткие множества, которая и называется нечеткая логика задача фаззификации — по изветному значению предиката определить степень увернности (0, 1) принадлежности элемента универсальному множеству — U. Например, по температуре — T определить истинность заданных предикатов μ(T).

Деффазификация операция обратная фаззификации. Классический способ деффазификации определение центра тяжести — СGr данного нечеткого множества. В идеальном случае центр тяжести должен совпадать с максимальной степенью соответствия или с максимумом. Существуют различные способы определения центра тяжести:

  1. Центр тяжести. Cумма произведений значений μA(x) на аргументы x деленная на сумму всех значений μA(x) . СGr = ∑ (μA(x) * x) / ∑ μA(x). В идеальном случае центр тяжести должен совпадать с максимальной степенью соответствия или с максимумом. (Однако бывают ситуации, когда центр тяжести попадает в область, где степень уверенности равна 0 , соотвественно данное нечеткое множество лучше всего характеризиует элемент, который вообще не входит в это нечеткое множество);
  2. Для преодоления этой проблемы осуществляют поиск простого максимума нечеткого множества (правого, левого или центрального) или их средннее значение (если максимумов больше двух). Пример: левое модальное значение = -10 , правое модальное значение = 10 и среднее модальное значение 0 .

Необходимо проводить оценку дефаззифицированного значения: степень соответствия и момент интерции (разброс значений элементов нечеткого множества относительно центра тяжести):

  • μA(center) низкое, то такой центр брать не стоит (приближается к нулю) только определяет (насколько центр тяжести соотвествует нечеткому множеству). Необходимо воспользоваться другим методом;
  • IM (Center) =u μA(x) (x — Center) 2 — момент инерции оценивает насколько остальные значение разрбросаны относительно заданного центра

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

  • min — активизация ( min( ci, μ(x) ), где ci — значения после применения логический операций, i — правила )
  • prod — активизацияci * μ(x), где ci — значения после применения логический операций, i — правила
  • average — активизация0.5 ( ci+ μ(x) ), где ci — значения после применения логический операций, i — правила

Пример: min — активизации min( 0.65 , μ(x) )

Операции над нечеткими множествами . Взаимосвязь между термами и нечеткими множествами определяется двумя типами это — пересечение TA ∧ T B ⇒ A ∩ B и объединение TA ∨ TB ⇒ A ∪ B .

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

Основные характеристики нечетких множеств (геометрическая интерпретация):

  • Высота hA = sup μA(x) — максимальная тепень уверенности для всех элементов универсального множества:
  • Мощность/диапозон значений: количество элементов для которых степень увернности больше нуля — это для непрерывных, а для дискрентных диапазон значений:
  • Альфа срез — выбор всех элементов универсального множества для которых степень увернности больше, чем альфа. Если α = 0 (носитель множества), α = 0.5 (ближайшее множество = наиболее похоже на наше нечеткое множество), α = h (срез по высоте = множесто всех элементов, которые имеют максимальную степень уверенности) :
  • Размытость — соотвествие нечеткого множества α — срезу. Энтропия = 0 строго соотвествует универсальному множеству и максимальна, когда универсальное множество максимально размыто.

Лингвистическое описание алгоритма:

Рассмотрим задачу принятия душа.


Постановка: При принятии душа на вход сместителя подается холодная и горячая вода по соотвестивующим трубопроводам. Наиболее комфортные условия для душа создаются при наличии на входе сместителя теплой воды постоянной температуры. Посколько подача воды может быть неравномерной, температура воды может колебаться, что приводит к необходимости ручного изменения подачи холодной или горячей воды. Необходимо сделать регулировку температуры воды автоматической (а не ручной), обеспечивая постоянную температуру воды на выходе сместителя. Рассмотрим пример для случая температуры воды на выходе сместителя = 55 °С , и давления воды = 10 (условные единицы). На сколько градусов необходимо повернуть вентиль крана?

Классическая задача нечеткого вывода (Мамдани) включает в себя следующие этапы:

1. Формирование базы правил систем нечеткого вывода: Опыт принятия душа может включать следующие эвристические правила (эти правила очень условные и некоторых из них упрощены для простоты объяснения алгоритма):

  1. ЕСЛИ вода горячая, ТО следует повернуть вентиль крана горячей воды на большой угол вправо;
  2. ЕСЛИ вода не очень горячая И давление низкое, ТО следует повернуть вентиль крана rорячей воды на небольшой угол вправо (активировано);
  3. ЕСЛИ вода прохладная ИЛИ давление низкое, ТО следует повернуть вентиль крана горячей воды на небольшой угол влево (активировано);
  4. ЕСЛИ вода холодная, ТО следует повернуть вентиль крана горячей воды на большой угол влево.

Данные правила закладывают фундамент построения базы правил нечеткого вывода, которая позволяет реализовать модель нечеткого управления. Определим входные и выходные лингвистические переменные. Для этого произведем семантический анализ эвристических правил ( обычно входные лингвистические переменные находятся в условии — ЕСЛИ, а выходные в условии ТО ). Из правил видно, что за входные лингвистические переменные можно принять β1 = «температура воды», β2 = «давление низкое», за выходную β3 = «угол поворота».

2. Фаззификация входных переменных:

В начале процедуры фаззификации требуется определить для входной лингвистической переменной терм-множество в виде T = <«горячая», «не очень горячая», «прохладная», «холодная»> и определить соотвествуюущую функцию принадлежности:

Определим еще одну входную лингвистическую переменной терм-множество в виде P = <«давление низкое»> и определить соотвествуюущую функцию принадлежности:

Проделаем аналогичную процедуру для выходной лингвистической переменной в виде ALPHA= <«большой угол вправо», «небольшой угол вправо», «небольшой угол влево», «большой угол влево»> и определить соотвествуюущую функцию принадлежности:

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

Для второго активированного правила : при температуре воды на выходе сместителя = 55 °С — фаззификация приводет к степени истинности 0.48 . А при давлении в 10 степень принадлежности равна примерно 0.65.

Для третьего активированного правила : при температуре воды на выходе сместителя = 55 °С — фаззификация приводет к степени истинности 0.35 . А при давлении в 10 степень принадлежности равна примерно 0.65.

3. Агрегирование подусловий в нечетких правилах продукций:

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

Для второго активированного правила : ЕСЛИ вода не очень горячая И давление низкое. Подставляем соотвествующие значения, определенные на этапе фаззификации. не очень горячая = 0.48 И давление низкое = 0.65 . MIN(0.48, 0.65) = 0.48

Для третьего активированного правила : ЕСЛИ вода прохладная ИЛИ давление низкое. Подставляем соотвествующие значения, определенные на этапе фаззификации. прохладная = 0.38 И давление низкое = 0.65. MAX(0.48, 0.65) = 0.65

4. Активизация или композиция подзаключений в нечетких правилах продукций: В системах нечеткого вывода представляет собой процедуру или процесс нахождения степени истинности каждого из подзаключений правил нечетких продукций (т.е. нахождение нечеткой области). Для нахождения этой области используются различные методы. В данном алгоритме используется — min — активизация ( min( ci, μ(x) ), где ci — значения агрегирования, i — правила ).

Для второго активированного правила : ТО следует повернуть вентиль крана rорячей воды на небольшой угол вправо. Значения агрегирования для данного правила (см.выше) = 0.48. min — активизация, min(0.48, μ(x) ) изображено на рисунке

Для третьего активированного правила : ТО следует повернуть вентиль крана rорячей воды на небольшой угол влево. Значения агрегирования для данного правила (см.выше) = 0.65. min — активизация, min(0.65, μ(x) )

5. Аккумулирование заключений нечетких правил продукий (дефаззификация): осталось получить конкретное значение (или нечеткий вывод в числовое представление). Цель аккумуляции заключается в объединении всех степеней истинности в одну интегральную функцию принадлежности. Объединение в данном алгоритме осуществляется по методу объединения ( max(μA(x),μ B (x)) ) нечетких множеств — TA ∨ TB ⇒ A ∪ B . В нашем случае два множества: небольшой угол вправо и небольшой угол вправо . После объединения необходимо произвести дефаззификацию по методу центра тяжести .

Соотвественно, значение угла поврота примерно = 16 °С.

Для полного представления всех этапов алгоритма приведем общую структурную схему:

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

Приведем блок-схему алгоритма нечеткого вывода Мамдани:

Данный пример является показательным, существует много готовых библиотек для работы с нечеткими множествами, например — https://www.phpclasses.org/package/9316-PHP-Analyze-variable-based-on-fuzzy-logic-rules.html. А так же реализация — http://www.thegeekstuff.com/2014/09/fuzzy-logic-cpp/

Определим треугольную функцию принадлежности, которая на вход принимает заданные ограничения $a, $b и $x — для операции фаззификации.

ПРИМЕНЕНИЕ НЕЧЕТКОЙ ЛОГИКИ В ЗАПРОСАХ К БАЗАМ ДАННЫХ

студент 3 курса, факультет информатики Самарский университет им. С.П. Королёва, г. Самара

студент 3 курса, факультет информатики Самарский университет им. С.П. Королёва, г. Самара

доцент, кафедра прикладной математики, Самарский Университет им.С.П. Королёва,

Введение

Нечеткая логика является обобщением классической логики и теории множеств и базируется на понятии нечеткого множества, впервые введенного в 1965 году Лотфи Заде в статье «fuzzy set». Понятие нечеткого множества допускает, что функция принадлежности элемента множеству может принимать не только значения 0 или 1, а любые значения из интервала [0,1].

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

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

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

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

Основные термины и определения

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

«Нечеткое подмножество Α некоторого универсального множества характеризуется функцией принадлежности, которая ставит в соответствие каждому элементу число , принадлежащее интервалу , определяющее степень принадлежности элемента множеству Α» [1, с. 32]. Чем больше степень принадлежности, тем в большей мере элемент универсального множества соответствует свойствам нечеткого множества.

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

«Нечеткая переменная описывается набором (N,X,A), где N – это название переменной, X – универсальное множество (область рассуждений), A – нечеткое множество на X» [3].

«Лингвистической переменной называется переменная, значениями которой могут быть слова или словосочетания некоторого естественного или искусственного языка» [3].

«Терм–множеством называется множество всех возможных значений лингвистической переменной» [3].

«Термом называется любой элемент терм–множества» [3].

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

Рассмотрим пример. Пусть имеется неточное определение «высокая зарплата». Для кого-то зарплата в 40 у.е. будет считаться высокой, для кого-то нет, а вот зарплата размером 80 у.е. точно будет высокой. Конкретный порог установить практически нереально, поэтому определим нечеткое множество для данного понятия:

Таблица 1.

Таблица задания нечеткого множества «высокая зарплата»

Fuzzy logic. Учим «электронные мозги» мыслить по-человечьи.


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

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

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

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

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

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

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

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

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

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

Нечёткие правила

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

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

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

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

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

Фазификация

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

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

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

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

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

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

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

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

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

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

Нечёткий контроллер

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

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

Заключение

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

Элементы нечеткой логики

Дата добавления: 2013-12-23 ; просмотров: 595 ; Нарушение авторских прав

Пример: задача поиска пути в лабиринте

В качестве примера использования механизма возврата напишем процедуру для поиска пути в лабиринте. Лабиринт представлен фак­тами вида:

стена(I, J) для позиции в I-м ряду и J-й колонке, где есть стена

отсутств_стена(I, J) для позиции в I-м ряду и J-й колонке, где нет стены

выход (I, J) для позиции в 1-м ряду и J-й колонке, являющейся выходом

Рассмотрим небольшой лабиринт:

Выход

Последний ряд лабиринта описывается фактами:

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

Если исходная позиция является выходом, то путь найден.

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

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

/* Терм a(I, J) представляет позицию в


/* I-м ряду и J-й колонке.

путь(а(I, J),[а(I, J)], Были) :- выход(I, J).

/* Пытаемся идти на север

путь(а(I, J),[а(I, J) | Р], Были) :-

можем_идти(a (K, J), Были),

путь(а(I, J) ,Р, [a(K, J) | Были]).

/* Пытаемся идти на юг

путь(а(I, J),[а(I, J) | Р], Были) :-

можем_идти(a (K, J), Были),

путь(а(I, J) ,Р, [a(K, J) | Были]).

/* Пытаемся идти на запад

путь(а (I, J), [a (I, J) | P], Были) :-

можем_идти(а(I, L), Были),

путь(а(I, L), Р, [а(I, L)| Были]).

/* Пытаемся идти на восток

путь(а (I, J), [a (I, J) | P], Были) :-

можем_идти(а(I, L), Были),

путь(а(I, L), Р, [а(I, L)| Были]).

/* в позицию a(I, J) можно попасть при

/* условии, что там нет стены и мы

/* не побывали в ней прежде

можем_идти(а(I, J)), Были) :-

not (принадлежит (a (I, J), Были)).

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

Выходом из лабиринта является позиция выход (3,1).

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).

Целевое утверждение не удается согласовать с первым утвержде­нием

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)])

так как а (3,2) не является выходом. Во втором утверждении пред­принимается попытка найти путь, двигаясь на север, т.е. согласовать целевое утверждение

путь(а(2,2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).

Ни одно из утверждений не может согласовать

путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).

Первое утверждение — потому, что а (2, 2) не является выходом, вто­рое — потому, что северная позиция является стеной, третье утверждение — потому, что в южной позиции мы уже побывали, а четвертое и пятое утверждения — потому, что западная и восточная границы — это стены.

Неудача в согласовании

путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)])

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).

Решение пересматривается и выбирается третье утверждение.

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

путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]),

выбирается четвертое утверждение. Мы успешно находим путь, дви­гаясь в западном направлении к позиции а(3,1), которая и является выходом. Рекурсия сворачивается, и в результате полу­чается путь

другие решения(да/нет)? да

Других решений нет

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

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

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

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

Как можно легко заметить, при использовании только классических состояний (ложь-0, истина-1) мы приходим с классическим законам логики.

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL