Введение в основы нечеткой логики Нечеткая логика - новая мощная технология Нечеткая логика возникла как наиболее удобный способ построения систем управления метрополитенами и сложными технологическими процессами, а также нашла применение в бытовой электронике, диагностических и других экспертных системах. Несмотря на то, что математический аппарат нечеткой логики впервые был разработан в США, активное развитие данного метода началось в Японии, и новая волна вновь достигла США и Европы. В Японии до сих пор продолжается бум нечеткой логики и экспоненциально увеличивается количество патентов, большая часть которых относится к простым приложениям нечеткого управления. В Японии исследования в области нечеткой логики получили широкую финансовую поддержку. В Европе и США усилия были направлены на то, чтобы сократить огромный отрыв от японцев. Так например, NASA стало использовать нечеткую логику в маневрах стыковки. Термин fuzzy (англ. нечеткий, размытый - произносится [фаззи] ) стал ключевым словом на рынке. Число научных статей по электронике без упоминания нечетких компонент резко снизилось. Это показывает – насколько стала популярной нечеткая логика. Нечеткая логика появилась в 1965 в работах Лотфи А. Задэ (Lotfi A. Zadeh), профессора технических наук Калифорнийского университета в Беркли. Нечеткая логика является многозначной логикой, что позволяет определить промежуточные значения для таких общепринятых оценок, как да/нет, истинно/ложно, черное/белое и т.п. Выражения подобные таким, как: слегка тепло или довольно холодно возможно формулировать математически и обрабатывать на компьютерах.
Что такое нечеткое множество?
Самым главным понятием систем, основанных на нечеткой логике, является понятие нечеткого (под)множества. Из классической математики известно понятие четких (определенных) множеств.
Пример 1: Рассмотрим множество X всех чисел от 0 до 10, которое назовем универсумом рассуждения. Определим подмножество A множества X всех действительных чисел от 5 до 8. A = [5,8]
Покажем характеристическую функцию множества A. Эта функция ставит в соответствие число 1 или 0 каждому элементу в X, в зависимости от того принадлежит данный элемент подмножеству A или нет. Результат представлен на следующем рисунке: [pic 1]
Можно интерпретировать элементы (числа), которым поставлена в соответствие «1», как элементы, входящие в множестве A, а элементы, которым поставлен в соответствие «0», как элементы, не входящие в множестве A. Эта концепция используется во многих областях приложений. Но можно легко обнаружить ситуации, в которых данной концепции будет недоставать гибкости. Пример 2: Опишем множество молодых людей. Более формально можно записать так B = {множество молодых людей} Так как, вообще, возраст начинается с 0, то нижний предел этого множества должен быть нулем. Верхний предел определить немного сложнее. На первый раз установим верхний предел, скажем, равным 20 годам. Таким образом, получаем B как четко ограниченный интервал, буквально: B = [0,20] Возникает вопрос: почему кто-то в свой двадцатилетний юбилей - молодой, а сразу на следующий день уже не молодой? Очевидно, это структурная проблема, и если передвинуть верхнюю границу в произвольную точку, то можно задаться точно таким же вопросом. Более естественный путь получения множества B состоит в ослаблении строгого разделения на молодых и немолодых. Сделаем это, вынося не только четкие суждения: Да, он/она принадлежит множеству молодых людей или Нет, он/она не принадлежит множеству молодых людей, но и более гибкие (нечеткие) формулировки: Да, он/она принадлежит к достаточно молодым людям или Нет, он/она не очень молод/молода.
Далее рассмотрим, как с помощью нечеткого множества определить такое выражение, как: он/она еще молоды Как было сказано выше, мы используем нечеткие множества, чтобы сделать компьютер «более умным». Представим эту мысль более формализовано. В первом примере мы кодировали все элементы универсума рассуждения с помощью 0 или 1. Простой способ обобщить данную концепцию - ввести значения между 0 и 1. Реально можно даже допустить бесконечное число значений между 0 и 1, называемое единичным интервалом I = [0, 1]. Интерпретация чисел при соотнесении всех элементов универсума рассуждений становится теперь более сложной. Конечно, снова число 1 ставится в соответствие тому элементу, который принадлежит множеству B, а 0 означает, что элемент точно не принадлежит множеству B. Все другие значения определяют степень принадлежности к множеству B. Приведем характеристическую функцию множества молодых людей, как и в примере 1. [pic 2] То есть 25-летние все еще молоды со степенью 50 процентов. Это и есть нечеткое множество. Но что с ним можно делать?
Операции с нечеткими множествами Сейчас, когда мы уже знаем, что такое нечеткие множества, попытаемся определить базовые операции (действия) над нечеткими множествами. Аналогично действиям с обычными множествами нам потребуется определить пересечение, объединение и отрицание нечетких множеств. В своей самой первой работе по нечетким множествам Л. А. Задэ предложил оператор минимума для пересечения и оператор максимума для объединения двух нечетких множеств. Эти операторы совпадают с обычными (четкими) объединением и пересечением, только вместо понятий однозначной принадлежности/непринадлежности элемента множеству, используют понятие его степени принадлежности к нечеткому множеству. Чтобы пояснить это, приведем несколько примеров. Пример 3: Пусть A - нечеткий интервал от 5 до 8 и B - нечеткое число около 4, как показано на рисунке. [pic 3][pic 4] Следующий рисунок иллюстрирует нечеткое множество, образованное пересечением данных нечетких интервалов – (между 5 и 8) И [AND] (около 4) – синяя линия. [pic 5] Нечеткое множество образованное объединением данных нечетких интервалов – (между 5 и 8) ИЛИ [OR] (около 4) показано на следующем рисунке – синяя линия. [pic 6]
Следующий рисунок иллюстрирует операцию отрицания. Синяя линия - это отрицание нечеткого множества A. [pic 7]
Нечеткое управление Контроллеры нечеткой логики - наиболее важное приложение теории нечетких множеств. Их функционирование немного отличается от работы обычных контроллеров – для описания системы используются знания экспертов о характере поведения объекта управления вместо систем дифференциальных уравнений (математической модели объекта и среды). Эти знания могут быть выражены естественным образом с помощью лингвистических переменных, которые описываются нечеткими множествами. Пример 4: Перевернутый маятник Проблема состоит в балансировке вертикальной мачты, подвижно закрепленной нижним концом на тележке, которая может двигаться только в двух направлениях - влево или вправо. Очевидно, для четкого алгоритма автоматического управления тележкой необходима точная (четкая) математическая модель этой системы (размеры и массы элементов, значения скорости тележки, угла и угловой скорости отклонения мачты), а так же система уравнений, описывающих все движения элементов. Вместе с тем, если поручить управление тележкой человеку, то он не будет использовать перечисленные данные и решать «в уме» системы уравнений. Он будет действовать по простым правилам: если мачта отклонилась вправо – ускоряем тележку вправо», «если отклонение велико – ускорение тоже должно быть велико» и т.п.
[pic 8] Как это формализовать и создать адекватный интуитивному «ручному» автоматический алгоритм управления? Во-первых, мы должны определить (субъективно) что такое большое ускорение, малое ускорение и т.п. для тележки. Это делается описанием функции принадлежности для нечетких множеств. - отрицательное высокое, neg.high (голубой)
- отрицательное низкое, neg.low (зеленый)
- нулевое, zero (красный)
- положительное низкое, pos.low (синий)
- положительное высокое, pos.high (розовый)
[pic 9]
Тоже самое делается для угла между тележкой и мачтой маятника и для угловой скорости изменения этого угла [pic 10][pic 11] Для упрощения предполагается, что начальное положение мачты около центра справа, так что угол более чем, скажем, 45 градусов в любом направлении по определению никогда не возникнет. На следующей странице определим некоторые правила, которые желательно применить в данной ситуации. Сейчас определим несколько правил, которые определяют – что делать в данной ситуации?. Положим, например, что мачта находится справа (угол равен нулю) и не двигается (угловая скорость - ноль). Очевидно, что это желаемое положение, и ничего предпринимать не надо (скорость равна нулю). Рассмотрим другой случай: мачта находится справа, как и прежде, но движется с низкой скоростью в положительном направлении. Естественно необходимо компенсировать движение мачты, передвигая тележку в том же направлении с низким ускорением. Итак, получаем два правила, которые более формально представляются в следующей форме: - Если угол равен нулю И угловая скорость равна нулю, тогда ускорение должно быть равна нулю.
- Если угол равен нулю И угловая скорость положительная низкая, тогда ускорение должно быть положительным низким.
Сведем все полученные правила в таблицу: | угол | ускорение| ОВ ОН 0 ПН ПВ -----------+------------------------------ ОВ | ОВ угл. ОН | ОН 0 скор. 0 | ОВ ОН 0 ПН ПВ ПН | 0 ПН ПВ | НВ
где ОВ - Отрицательное Высокое (большое) значение, ОН - Отрицательное Низкое (малое) значение, 0 - нуль и т.д.
Для дальнейших расчетов определим численные значения для угла и угловой скорости. Рассмотрим следующую ситуацию:
Реальное значение угла: [pic 12] Реальное значение угловой скорости: [pic 13] Применим правило Если угол равен нулю И угловая скорость равна нулю, тогда скорость равна нулю к реальным значениям переменных. [pic 14] Здесь представлена лингвистическая переменная "угол", отображаемая нечетким множеством "ноль" и реальный угол наклона маятника. Проследим получение результата с помощью нечеткого вывода. 1. Если угол равен нулю И угловая скорость равна нулю тогда скорость равна нулю [pic 15] Получаем, что реальное значение угла принадлежит нечеткому множеству "ноль" со степенью 0.75. 2. Если угол равен нулю И угловая скорость равна нулю тогда скорость равна нулю [pic 16] Реальное значение угла принадлежит нечеткому множеству "ноль" со степенью 0.75. Здесь представлена лингвистическая переменная "угловая скорость", отображаемая нечетким множеством "ноль" и реальная угловая скорость. 3. Если угол равен нулю И угловая скорость равна нулю тогда скорость равна нулю [pic 17] Реальное значение угла принадлежит нечеткому множеству "ноль" со степенью 0.75. Реальное значение угловой скорости принадлежит нечеткому множеству "ноль" со степенью 0.4. 4. Если угол равен нулю И угловая скорость равна нулю тогда скорость равна нулю [pic 18] Так как две части условий правила объединяются по И, то вычисляем min (0.75, 0.4) = 0.4 и уменьшаем нечеткое множество "ноль" для переменной "скорость" до этого уровня (в соответствии с рассматриваемым правилом). Только четыре правила приводят к результату. Объединим их в одно решение. Таким образом результатом правила Если угол равен нулю И угловая скорость равна нулю тогда скорость равна нулю является: [pic 19] Результатом правила Если угол равен нулю И угловая скорость отрицательная низкая тогда скорость - отрицательная низкая является: [pic 20] Результатом правила Если угол положительный малый И угловая скорость равна нулю тогда скорость - положительная низкая является: [pic 21] Результатом правила Если угол положительный малый И угловая скорость отрицательная низкая тогда скорость равна нулю является: [pic 22] Объединение этих четырех результатов дает общее решение: [pic 23] Таким образом, решением контроллера нечеткой логики является нечеткое множество (для скорости). Далее необходимо выбрать одно значение для представления конечного выходного значения. Существует несколько эвристических методов (методов дефаззификации), один из которых, например, предполагает выбирать в качестве конечного значения центр тяжести нечеткого множества: [pic 24] Вся данная процедура получения решения называется контроллером Мамдани (Mamdani controller).
Приложения нечеткой логики
Во-первых, необходимо определить в общих словах области применения нечеткого управления. Использование нечеткого управления рекомендуется... - для очень сложных процессов, когда не существует простой математической модели
- для нелинейных процессов высоких порядков
- если должна производиться обработка (лингвистически сформулированных) экспертных знаний
Использование нечеткого управления не рекомендуется, если... - приемлемый результат может быть получен с помощью общей теории управления
- уже существует формализованная и адекватная математическая модель
- проблема не разрешима
Ниже приведены несколько примеров того, как реально применяется нечеткая логика: - Автоматическое управление воротами плотины на гидроэлектростанциях (Tokio Electric Pow.)
- Упрощенное управление роботами (Hirota, Fuji Electric, Toshiba, Omron)
- Наведение телекамер при трансляции спортивных событий (Omron)
- Замена экспертов при анализе работы биржи (Yamaichi, Hitachi)
- Предотвращение нежелательных температурных флуктуаций в системах кондиционирования воздуха (Mitsubishi, Sharp)
- Эффективное и стабильное управление автомобильными двигателями (Nissan)
- Управление экономичной скоростью автомобилей (Nissan, Subaru)
- Улучшение эффективности и оптимизация промышленных систем управления (Aptronix, Omron, Meiden, Sha, Micom, Mitsubishi, Nisshin-Denki, Oku-Electronics)
- Позиционирование приводов в производстве полупроводников wafer-steppers (Canon)
- Оптимизированное планирование автобусных расписаний (Toshiba, Nippon-System, Keihan-Express)
- Системы архивации документов (Mitsubishi Elec.)
- Системы прогнозирования землетрясений (Inst. of Seismology Bureau of Metrology, Japan)
- Медицина: диагностика рака (Kawasaki Medical School)
- Сочетание методов нечеткой логики и нейронных сетей (Matsushita)
- Распознавание рукописных символов в карманных компьютерах (записных книжках) (Sony)
- Распознавание движения изображения в видеокамерах (Canon, Minolta)
- Автоматическое управление двигателем пылесосов с автоматическим определением типа поверхности и степени засоренности (Matsushita)
- Управление освещенностью в камкодерах (Sanyo)
- Компенсация вибраций в камкодерах (Matsushita)
- Однокнопочное управление стиральными машинами (Matsushita, Hitatchi)
- Распознавание рукописных текстов, объектов, голоса (CSK, Hitachi, Hosai Univ., Ricoh)
- Вспомогательные средства полета вертолетов (Sugeno)
- Моделирование судебных процессов (Meihi Gakuin Univ, Nagoy Univ.)
- САПР производственных процессов (Aptronix, Harima, Ishikawajima-OC Engeneering)
- Управление скоростью линий и температурой при производстве стали (Kawasaki Steel, New-Nippon Steel, NKK)
- Управление метрополитенами для повышения удобства вождения, точности остановки и экономии энергии (Hitachi)
- Оптимизация потребления бензина в автомобилях (NOK, Nippon Denki Tools)
- Повышение чувствительности и эффективности управления лифтами (Fujitec, Hitachi, Toshiba)
- Повышение безопасности ядерных реакторов (Hitachi, Bernard, Nuclear Fuel div.)
Пример: Система кондиционирования воздуха Mitsubishi Постановка задачи: Промышленная система кондиционирования воздуха, обеспечивающая гибкую реакцию на изменения окружающих условий Реализация: - 50 правил
- 6 лингвистических переменных
- Разрешение: 8 бит
- Входные значения: температура в комнате, температура стены и мгновенные значения этих сигналов
Разработка: - 4 дня на создание прототипа
- 20 дней на тестирование и интеграцию
- 80 дней на оптимизацию на реальных тестовых объектах
- Реализация в виде чисто программного комплекса на стандартном микроконтроллере
Результаты: - Уменьшение времени начала работы до 40 процентов к стандартному решению
- Поддержка температуры при наличии возмущающих факторов (открытые окна и т.п.) существенно улучшена
- Небольшое требуемое число датчиков
- Экономия энергии - 24 процента
Пример: Камкодер со стабилизатором изображения, Matsushita Основные функции: Сохранение моментального кадра Деление картинки на 4 части по 30 точек в каждой. Сохранение сигналов от этих точек Получение следующего кадра и сравнение Сравнение сигналов от нового кадра с сигналами сохраненного Стабилизация или обновление соответственно Если имеются небольшие равно ориентированные отклонения (= вибрации), тогда передать сохраненный кадр. Если имеются большие (= предполагаемые) или не равно ориентированные отклонения (= движенния), тогда передать и сохранить новый кадр.
|