Нечеткая Логика и Нечеткое Управление
Нечеткая логика применяется как удобный инструмент для управления систем подземки и комплексных индустриальных процессов, а также для домашнего хозяйства и электроники развлечения, систем обнаружения ошибок и других экспертных систем. Хотя, Нечеткая Логика была изобретена в Соединенных Штатах, быстрый рост этой технологии начался в Японии и теперь снова достиг США и Европы.
Нечеткая Логика все еще быстро развивается в Японии, количество патентов увеличивается по экспоненте. Основная часть имеет дело с довольно простыми приложениями Нечеткого Управления.
В Японии исследования по нечеткой логике широко поддерживаются огромным бюджетом. В Европе и США сделаны усилия, чтобы догнать огромный японский успех. Например, агентство NASA занято применением Нечеткой Логики для комплексной стыковки - маневров.
Нечеткая Логика - в основном многозначная логика, которая позволяет промежуточным значениям быть определенным между стандартными оценками (вычислениями) подобно да/нет, истинно/ложь, черный/белый, и т.д. Понятия подобно "скорее тепло" или "довольно холодно" может быть сформулированы математически и обработаны компьютерами. Таким образом сделана попытка, чтобы применить более человекоподобное мышление в программировании для компьютеров.
Нечеткая Логика открыта в 1965 Лофти А.Заде (Иран), профессором информатики в Университете Калифорнии в Беркли.
Сначала мы рассмотрим множество X всех вещественных чисел между 0 и 10, которые мы назовем областью исследования. Теперь, давайте определим подмножество X всех вещественных чисел в амплитуде между 5 и 8.
A = [5,8]
Теперь поредставим множество A с помощью символической функции, т.е. эта функция приписывает число 1 или 0 к каждому элементу в X, в зависимости от того, находится ли элемент в подмножестве А или нет. Это приводит к следующей диаграмме:
Мы можем интерпретировать элементы, которым назначено число 1, как элементы которые находятся в множестве А и элементы, которым назанчено число 0, как элементы не в множестве A.
Этой концепции достаточно для многих областей приложений. Но мы можем легко найти ситуации, где теряется гибкость. Чтобы показать это рассматрим следующий пример:
В этом примере мы хотим описать множество молодых людей. Более формально мы можем обозначить
B = {множество молодых людей}
Поскольку, вообще, возраст начинается с 0, нижняя граница этого множества должна быть нулевой. Верхнюю границу, с другой стороны, надо определить. На первый раз определим верхнию границу множества, скажем, 20 лет. Следовательно, мы получаем B как четкий интервал, а именно:
B = [0,20]
Теперь возникает вопрос: почему кто-то на его 20-ом дне рождения молодой, а на следующий день не молодой? Очевидно, это - структурная проблема, поскольку, если мы перемещаем верхнюю границу от 20 до произвольной точки, мы можем излагать тот же самый вопрос.
Более естественный способ описать множество B состоит в том, чтобы ослабить строгое разделение между молодыми и не молодыми. Мы будем делать это, допуская не только (четкое) решение ДА он/она находится в множестве молодых, или НЕТ он/она не в множестве молодых, но более гибких фраз подобно Хорошо, он/она принадлежит немного больше к множеству молодых или НЕТ, он/она почти не принадлежит к множеству молодых.
Как упомянуто во введении, мы хотим использовать нечеткие множества, чтобы делать компьютеры более интеллектуальными. Теперь мы должны закодировать вышеупомянутую идею более формально. В нашем первом примере мы кодировали все элементы Области Исследования 0 или 1. Прямой путь обобщить эту концепцию состоит в том, чтобы позволить большее количество значений между 0 и 1. Фактически, мы даже позволяем бесконечно многие варианты между 0 и 1, а именно единичный интервал I = [0, 1].
Интерпретация чисел, теперь назначеная всем элементам Области Исследования, намного более трудная. Конечно, снова число 1 назначено элементу как способ определить элемент который находится в множестве B и 0 - способ, при котором элемент не определен в множестве B. Все другие значения означают постепенную принадлежность к множеству B.
Для большей наглядности, теперь мы показываем множество молодых, подобно нашему первому примеру, графически при помощи символической функции.
При таком способе 25-летние люди будут все еше молоды на 50 процентов. Теперь Вы знаете, что такое нечеткое множество. Но что Вы можете делать с этим?
Теперь, когда мы имеем понятие, что такое нечеткие множества, мы можем вводить основные операции на нечетких множествах. Подобно операциям на четких множествах, мы также хотим определить пересечение, объединение и отрицание на нечетких множествах. В ранней статье о нечетких множествах Заде предложил оператор минимума для пересечения и оператор максимума для объединения двух нечетких множеств. Легко видеть, что эти операторы совпадают с четким объединением, и пересечением, если мы рассматриваем только принадлежность к 0 и 1.
Чтобы разъяснять это, мы дадим несколько примеров. Допустим А есть нечеткий интервал между 5 и 8, а B - нечеткое число, приблизительно 4. Соответствующие диаграммы показаны ниже.
Следующая диаграмма показывает нечеткое множество между 5 и 8 И (AND - пересечение) приблизительно 4 (синия линия).
Нечеткое множество между 5 и 8 ИЛИ (OR-объединение) приблизительно 4 показывается в следующей диаграмме (снова, синей линией).
Следующая диаграмма явкяется примером отрицания. Синяя линия - ОТРИЦАНИЕ нечеткого множества A.
Нечеткие контроллеры - наиболее важное приложение нечеткой теории. Их работа сильно отличается от работы стандартных контроллеров; экспертное знание используется вместо дифференциально-разностных уравнений, чтобы описать систему. Это знание может быть выражено естественным способом, использующим лингвистические переменные, которые описаны размытыми множествами.
Прежде всего, мы должны определить (субъективно) что такое высокая скорость, низкая скорость платформы и т.д.; это выполняется, при помощи определения функции принадлежности для нечеткого множества
Тот же самое выполнено для угла между платформой и маятником и углового ускорения этого угла:
Заметьте, для упрощения мы принимаем, что в начале полюс находится в почти вертикальном положении так, чтобы угол больше чем, скажем, 45 градусов в любом направлении, по определению, никогда не мог появиться.
Далее мы установим несколько правил, которые мы будем применять в некоторых ситуациях.
Предположим, например, что полюс находится в вертикальном положении (угол - нуль) и он не двигается (угловое ускорение - нуль). Очевидно, это - желательная ситуация, и, следовательно, мы не должны ничего делать (скорость - нуль).
Давайте рассмотрим другой случай: полюс находится в вертикальном положении, как прежде, но находится в движении с низким ускорением в положительном направлении. Естественно, мы были бы должны компенсировать перемещение полюса, перемещая платформу в том же самом направлении с низкой скоростью.
Пока мы составили два правила, которые могут быть записаны в более формализованной форме, подобно следующей:
We can summarize all applicable rules in a table:
Результируя полученные правила, можем составить таблицу:
| угол | скорость | NH NL Z PL PH ----------+------------------------------ у NH | NH с NL | NL Z к Z | NH NL Z PL PH о PL | Z PL р PH | PH
Далее мы покажем, как эти правила могут применяться при конкретных значениях угла и углового ускорения.
Определим два явных значения для угла и углового ускорения, чтобы вычислять правила. Рассмотрим следующую ситуацию:
Фактическое значение для угла:
Фактическое значение для угловой скорости:
Теперь применим наши правила к этой фактической ситуации.
Давайте применим правило
Если угол - нуль, и угловое ускорение - нуль, тогда скорость - нуль
к значениям, которые мы выбрали на ранее.
1. Угол
Это - лингвистическая переменная "угол", здесь мы выделили нечеткое множество "нуль" и фактический угол.
2. Угловое ускорение
Это - лингвистическая переменная "уголовое ускорение", здесь мы выделяем нечеткое множество "нуль" и фактическое угловое ускорение.
3. Угол и угловое скорение
Мы определили, что наше фактическое значение угла принадлежит нечеткому множеству "нуль" со степенью 0.75, а фактическое значение ускорения - нечеткому множеству "нуль" со степенью 0.4
4. Угол и угловое ускорение
Так как две части условия нашего правила соединены И, мы вычисляем минимум (0.75,0.4) = 0.4 и выделяем нечеткое множество "нуль" переменной "скорость" на этом уровне (согласно нашему правилу).
Только четыре правила образуют решение, и мы объединяем их в один результат.
Как показано выше, результат, выдаваемый правилом
Если угол - нуль, и угловое ускорение - нуль, тогда скорость - нуль:
Результат, выдаваемый правилом
Если угол - нуль, и угловое ускорение отрицательное низкое, тогда скорость, отрицательная низкая:
Результат, выдаваемый правилом
Если угол положителено низок, и угловое ускорение - нуль, тогда скорость, положительная низкая:
Результат, выдаваемый правилом
Если угол положительный низкий, и угловое ускорение отрицательное низкое, тогда скорость - нуль:
Теперь, полученные четыре результата, можно объединить, в результате чего получаем полное решение:
Результат работы нечеткого контроллера - нечеткое множество (скорости), так что мы должны выбрать одно значение как окончательный результат. Существуют отдельные эвристические методы (defuzzification methods). Один из них - взять центр тяжести нечеткого множества:
Вся процедура называется Mamdani контроллером.
Разделим возможную область применения Нечеткого Управления на две группы.
Случаи, когда использование Нечеткого Управления разумно:
Случаи, в которых использование Нечеткого Управления нерационально:
Мы называем новое множество, образованное из двух данных множеств А и B пересечением А и B, если новое множество содержит элементы, которые содержатся в А и в B одновременно.
Мы называем новое множество, образованное из двух данных наборов А и B объединение А и B, если новое множество содержит все элементы, которые содержатся в А или в B или в обоих одновременно.
Мы называем новое множество, содержащее все элементы, которые находятся в области исследования, но не в множестве А отрицанием A.
Лингвистическая переменная - пятерка (X, T (X), U, G, М,), где X - имя переменной, T(X) - члены множества, то есть множество имен лингвистических значений X, U - область исследования, G - грамматика, чтобы генерировать имена, и М - множество семантических правил для связи каждого X со значением.