Сайт о телевидении

Сайт о телевидении

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

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

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

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

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

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

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

1. CubiCalc представляет собой своего рода экспертную систему, в которой пользователь задает набор правил типа "если - то", а система пытается на основе этих правил адекватно реагировать на изменение ситуации. Вводимые правила содержат нечеткие величины, т.е. имеют вид "если Х принадлежит А, то Y принадлежит В", где А и В - нечеткие множества. Например: "Если этому жулику удастся сохранить популярность в регионах, то его шансы на выборах будут весьма высоки". Здесь использованы два нечетких термина - "популярность" и "вероятность избрания", которые практически невозможно задать точным значением, но сравнительно легко отобразить функцией распределения. И аппарат нечеткой логики, заложенный в CubiCalc, дает вам изумительную возможность впоследствии оперировать этими понятиями как точными и строить на их основе целые логические системы, не заботясь о нечеткой природе исходных определений.

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

2. FuziCalc фирмы FuziWare - это первая в мире электронная таблица, позволяющая работать как с точными числовыми значениями, так и с приблизительными, "нечеткими" величинами.

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

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

Триумф-Аналитика - продукт Корпорации "Парус", разработанный по заказу Корпорации специалистами Национального Альянса Управляющих, Консультантов и Аналитиков. В основу программы легли мощные аналитические алгоритмы, используемые при создании Ситуационных центров крупных корпораций, региональных руководителей.

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

Он позволяет быстро диагностировать все основные виды ошибок в управлении торговым предприятием.

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

4. AnyLogic - первый и единственный инструмент имитационного моделирования, объединивший методы системной динамики, "процессного" дискретно-событийного и агентного моделирования в одном языке и одной среде разработки моделей.

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

В редакторе AnyLogic Вы можете разработать анимацию и интерактивный графический интерфейс модели. Редактор поддерживает большой набор фигур, элементов управления (кнопок, ползунков, полей ввода и т.д.), импорт растровой графики и векторной графики в формате DXF. Анимация может быть иерархической и поддерживать несколько перспектив. Например, Вы можете определить глобальный взгляд на процесс производства с несколькими агрегированными индикаторами, а также детальные анимации конкретных операций - и переключаться между ними.

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

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

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

В начале 90-х пакет ITHINK стал признанным стандартом структурного моделирования на Западе. Он широко используется в интеллектуальных центрах корпораций, банках, правительственных структурах и проектно-исследовательских учреждениях. В глазах зарубежного инвестора инвестиционный проект, разработанный с использованием системы ITHINK, приобретает дополнительные выигрышные характеристики. Работа с этим элитарным инструментом свидетельствует об определенной “приобщенности” разработчиков к новейшим наиболее тонким технологиям анализа проектов.

С помощью ITHINK решались разнообразные задачи, начиная от анализа причин разрушения дамбы в Юго-Восточной Азии в 1989г. и кончая обслуживанием и распределением пациентов, поступающих в приемный покой клиники. Однако в наибольшей степени ему органичны так называемые “потоковые” задачи. Они охватывают весьма широкую группу ситуаций, встречающихся в повседневной жизни предпринимателей, менеджеров и экспертов в области бизнес-планирования. Дело в том, что большинство развивающихся во времени явлений можно представить как потоковые процессы.

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

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

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

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

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

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

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

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

Концептуальную модель предметной области экспертно-аналитической задачи или систему предпочтений, которая является формализованным представлением эксперта о задаче, ее элементах и связях; - оценки объектов из предметной области или просто объекты реального мира, которые анализируются при решении задачи;

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

Корректуры или внутренние факторы динамики, которые порождаются самой концептуальной моделью по установленным правилам.

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

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

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

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

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

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

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

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

Приложение функционирует в составе системы FinExpert разработки компании IDM. Учетные данные по объемам продаж (покупок), накапливаемые системой FinExpert, служат в МаркетЭффект исходной точкой для анализа рынка (спроса, предложения, цен).

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

МаркетЭффект позволяет решать следующие задачи:

Анализ рынка.

Анализ и прогноз продаж (покупок).

Прогнозирование эффективности и рисков.

Планирование и анализ маркетинга.

Поиск эффективных схем и стратегий.

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

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

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

Использование fuzzy-технологии позволяет получать диапазоны прогнозных значений величин в соответствии с определенной долей уверенности.

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

9. Fuzzy Estimation of Critical Messages (FECM) предназначен для оценки интегрального (совокупного) влияния потока сообщений, поступающих в большом количестве накануне и в процессе валютных торгов, на курсы валют. Как результат - прогнозы этих курсов. Совместно с имеющимися программными продуктами технического анализа, использование FECM позволяет соединить прошлое и будущее при прогнозировании курсов валют и, тем самым, повысить возможность принятия правильных решений участниками валютных торгов и других сфер бизнеса.

Использование программы - прогнозирование и системный анализ фундаментальных факторов при проведении валютных торгов на рынке FOREX.

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

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

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

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

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

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

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

C={0/0; 0/10; 0/20; 0,15/30; 0,30/40; 0,60/50; 0,80/60; 0,90/70; 1/80; 1/90; 1/100}.

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

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

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

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

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

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

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

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

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

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

$$MF\,(x) = \,\begin{cases} \;1\,-\,\frac{b\,-\,x}{b\,-\,a},\,a\leq \,x\leq \,b &\ \\ 1\,-\,\frac{x\,-\,b}{c\,-\,b},\,b\leq \,x\leq \,c &\ \\ 0, \;x\,\not \in\,(a;\,c)\ \end{cases}$$

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

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

$$MF\,(x)\,=\, \begin{cases} \;1\,-\,\frac{b\,-\,x}{b\,-\,a},\,a\leq \,x\leq \,b & \\ 1,\,b\leq \,x\leq \,c & \\ 1\,-\,\frac{x\,-\,c}{d\,-\,c},\,c\leq \,x\leq \,d &\\ 0, x\,\not \in\,(a;\,d) \ \end{cases}$$

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

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

$$MF\,(x) = \exp\biggl[ -\,{\Bigl(\frac{x\,-\,c}{\sigma}\Bigr)}^2\biggr]$$

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

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

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

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

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

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

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

Пусть в базе правил имеется m правил вида:
R 1: ЕСЛИ x 1 это A 11 … И … x n это A 1n , ТО y это B 1

R i: ЕСЛИ x 1 это A i1 … И … x n это A in , ТО y это B i

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

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

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

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

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

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

    $$alfa_i\,=\,\min_i \,(A_{ik}\,(x_k))$$

    $$B_i^*(y)= \min_i \,(alfa_i,\,B_i\,(y))$$

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

    $$MF\,(y)= \max_i \,(B_i^*\,(y))$$

    где 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 и его обобщение в виде алгоритма Густафсона-Кесселя.

Литература

  • Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений. – М.: Мир, 1976.
  • Круглов В.В., Дли М.И. Интеллектуальные информационные системы: компьютерная поддержка систем нечеткой логики и нечеткого вывода. – М.: Физматлит, 2002.
  • Леоленков А.В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. – СПб., 2003.
  • Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. – М., 2004.
  • Масалович А. Нечеткая логика в бизнесе и финансах. www.tora-centre.ru/library/fuzzy/fuzzy-.htm
  • Kosko B. Fuzzy systems as universal approximators // IEEE Transactions on Computers, vol. 43, No. 11, November 1994. – P. 1329-1333.
  • Cordon O., Herrera F., A General study on genetic fuzzy systems // Genetic Algorithms in engineering and computer science, 1995. – P. 33-57.

Свое начало математическая теория нечетких множеств (fuzzy sets) и сама нечеткая логика (fuzzy logic) ведет с 1965 года. Ее отцом-основателем является профессор Лотфи Заде (Lotfi Zadeh) из университета Беркли, именно он в своей статье «Fuzzy Sets» в журнале Information and Control и ввел оба этих понятия. Данный математический аппарат позволил ввести в такую точную науку, как математика, нечеткие (размытые) понятия, которыми оперирует любой человек, и заложил основу принципиально новым методам решения задач на основе мягких вычислений . Все эти нововведения, при правильном их использовании, могут значительно облегчить процесс решения задач классификации, создания экспертных систем и построения нейронных сетей.

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

1. Теория нечетких множеств и нечеткой логики

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

  • "1" - если объект принадлежит тому или иному множеству;
  • "0" - если не принадлежит.

В своей теории нечетких множеств Лотфи Заде отошел от дискретного понятия "принадлежности" и ввел новое - "степень принадлежности", а привычные "множества" были заменены на "нечеткие множества".

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

Определение 1. Нечетким множеством (fuzzy set) на универсальном множестве называется совокупность пар , где - степень принадлежности элемента нечеткому множеству.

Определение 2. Степень принадлежности - это число из диапазона . Чем выше степень принадлежности, тем в большей мере элемент универсального множества соответствует свойствам данного нечеткого множества. Так, если степень принадлежности равна 0, то данный элемент абсолютно не соответствует множеству, а если равна 1, то можно говорить, наоборот, о полном соответствии. Эти два случая являются краевыми и в отсутствии иных вариантов представляли бы из себя обычное множество. Наличие всех остальных вариантов и есть ключевое отличие нечеткого множества.

Определение 3. Функцией принадлежности (membership function) называется функция, которая позволяет вычислить степень принадлежности произвольного элемента универсального множества нечеткому множеству. Следовательно, область значений функций принадлежности должна принадлежать диапазону . В большинстве случаев функция принадлежности - это монотонная непрерывная функция.

Определение 4. Лингвистической (нечеткой) переменной (linguistic variable) называется переменная, значениями которой могут быть слова или словосочетания некоторого естественного или искусственного языка. Именно из лингвистических переменных и состоят нечеткие множества. При определении нечеткого множества количество и характер нечетких переменных субъективны для каждой отдельной задачи.

Определение 5. Терм–множеством (term set) называется множество всех возможных значений, которые способна принимать лингвистическая переменная.

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

Пример:

Определим некоторую лингвистическую переменную с названием "Возраст". По определению "Возраст" - период, ступень в развитии и росте человека, животного, растения. Минимальное значение этой переменной равно 0, то есть человеку не исполнилось и года. В качестве максимального значения возьмем 80. В зависимости от конкретного возраста человека мы можем дать оценку: "новорожденный", "юный", "молодой", "среднего", "старый", "пожилой" и так далее. Этот список может вместить в себя довольно большое количество элементов. Он будет являться терм-множеством для нашей лингвистической переменной, а его элементами - термами.

На рисунке ниже приведен пример нечеткой переменной "Возраст", для которой задали терм-множество только из трех термов: "Юный", "Средний", "Старый". Каждый из термов имеет свою функцию принадлежности.

Рассмотрим случай, когда возраст человека равен 30 годам, что на рисунке будет соответствовать перпендикуляру, проведенному из точки (30, 0). Эта прямая будет пересекать все три функции принадлежности в точках:

  1. (30, 0) - точка пересечения графика "Возраст 30 лет" и графика "Старый".
  2. (30, 0.29) - точка пересечения графика "Возраст 30 лет" и графика "Средний".
  3. (30, 0.027) - точка пересечения графика "Возраст 30 лет" и графика "Юный".


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

Определение 7. Дефаззификацией (defuzzification) называется процедура преобразования нечеткого множества в четкое число. На данный момент выделяют более двадцати методов, причем их результаты могут весьма значимо отличаться друг от друга. Следует отметить, что лучшие результаты дает дефаззификации по методу центра тяжести (center of gravity).

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

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

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

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

Ход построения модели можно разделить на три основных этапа:

  1. Определение входных и выходных параметров модели.
  2. Построение базы знаний.
  3. Выбор одного из методов нечеткого логического вывода.

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

Если условие (посылка) правила, то заключение правила.

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

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

  1. простое - в нем участвует одна нечеткая переменная;
  2. составное - участвуют несколько нечетких переменных.

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

1.3. Нечеткий логический вывод Мамдани

Нечеткий логический вывод по алгоритму Мамдани выполняется по нечеткой базе знаний:


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

v нечеткому терму t.

j-го правила из базы знаний;

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

m

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

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

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

1.4. Нечеткий логический вывод Сугено

Нечеткий логический вывод по алгоритму Сугено выполняется по нечеткой базе знаний:


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

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

Эту базу также можно записать как:

Введем новое обозначение: - функция принадлежности входной или выходной нечеткой переменной v нечеткому терму t.

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

Данная функция будет характеризовать результат работы j-го правила из базы знаний;

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

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

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

2. Библиотека нечеткой логики FuzzyNet

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

2.1. Проектирование систем типа Мамдани

Первый пример - скрипт Tips_Sample_Mamdani.mq5 из библиотеки FuzzyNet для MQL5. В нем реализована нечеткая модель для вычисления чаевых, которые посетителю заведения предпочтительнее оставить, опираясь на свою оценку качества обслуживания и еды. Данная система имеет два нечетких логических входа, один выход, базу знаний из трех правил и систему логического вывода типа Мамдани.

Входными параметрами будут нечеткие переменные "еда" (food ) и "сервис" (service ), обе переменные оцениваются по шкале от 0 до 10 - это их минимальные и максимальные значения. Переменная "еда" состоит из двух термов: "невкусная" (rancid ), "вкусная" (delicious ). Переменная "сервис" будет состоять из трех нечетких термов: "плохой" (poor ), "хороший" (good ), "отличный" (excellent ).

На выходе получим нечеткую переменную "чаевые" (tips ). Определим диапазон значений оставляемых чаевых от 5 до 30% процентов от суммы в чеке и заведем для этой переменной три терма: "маленькие" (cheap ), "средние" (average ), "большие" (generous ).

База знаний этой системы будет состоять из трех правил:

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

Теперь, имея общие представления о системе, рассмотрим процесс ее создания:

  1. Подключим файл MamdaniFuzzySystem.mqh из библиотеки FuzzyNet для MQL5:
    #include Данный файл позволяет создавать системы типа Мамдани и работать с ними.
  2. Теперь мы можем создать пустую систему Мамдани и далее ее наполнять:
    MamdaniFuzzySystem *fsTips=new MamdaniFuzzySystem();
  3. Создадим первую входную переменную "сервис". При создании нечетких переменных в качестве параметров для конструктора указывается сначала имя переменной в виде строки, затем ее минимальное и максимальное значение.
    FuzzyVariable *fvService=new FuzzyVariable("service" ,0.0 ,10.0 );
  4. Добавим в нее нечеткие термы. В качестве параметров конструктор нечетких терминов принимает первым параметром имя в виде строки, а вторым - соответствующую ему функцию принадлежности.
    fvService.Terms().Add(new FuzzyTerm("poor" , new TriangularMembershipFunction(-5.0 , 0.0 , 5.0 ))); fvService.Terms().Add(new FuzzyTerm("good" , new TriangularMembershipFunction(0.0 , 5.0 , 10.0 ))); fvService.Terms().Add(new FuzzyTerm("excellent" , new TriangularMembershipFunction(5.0 , 10.0 , 15.0 ))); Функции принадлежности в данном примере для всех термов представлены в виде треугольной функции.
  5. Теперь уже готовую и сформированную нечеткую переменную добавляем в нашу систему:
    fsTips.Input().Add(fvService);
  6. Аналогично реализуем второй вход для системы с переменной "еда", только термины для этой переменной будут иметь трапециевидную функцию принадлежности.
    FuzzyVariable *fvFood=new FuzzyVariable("food" ,0.0 ,10.0 ); fvFood.Terms().Add(new FuzzyTerm("rancid" , new TrapezoidMembershipFunction(0.0 , 0.0 , 1.0 , 3.0 ))); fvFood.Terms().Add(new FuzzyTerm("delicious" , new TrapezoidMembershipFunction(7.0 , 9.0 , 10.0 , 10.0 ))); fsTips.Input().Add(fvFood);
  7. Поскольку система имеет логический вывод Мамдани, ее входные и выходные значения будет определяться одними и теми же способами. Поэтому по аналогии создадим выход:
    FuzzyVariable *fvTips=new FuzzyVariable("tips" ,0.0 ,30.0 ); fvTips.Terms().Add(new FuzzyTerm("cheap" , new TriangularMembershipFunction(0.0 , 5.0 , 10.0 ))); fvTips.Terms().Add(new FuzzyTerm("average" , new TriangularMembershipFunction(10.0 , 15.0 , 20.0 ))); fvTips.Terms().Add(new FuzzyTerm("generous" , new TriangularMembershipFunction(20.0 , 25.0 , 30.0 ))); fsTips.Output().Add(fvTips);
  8. Создадим нечеткие правила, которые в совокупности будут представлять базу знаний нашей системы. Для создания правила необходимо вызвать метод ParseRule от объекта, который представляет нашу систему, и в качестве параметра передать ему простое строковое представление нечеткого правила:
    MamdaniFuzzyRule *rule1 = fsTips.ParseRule("if (service is poor) or (food is rancid) then (tips is cheap)" ); MamdaniFuzzyRule *rule2 = fsTips.ParseRule("if (service is good) then (tips is average)" ); MamdaniFuzzyRule *rule3 = fsTips.ParseRule("if (service is excellent) or (food is delicious) then (tips is generous)" );

    Написание нечетких правил строго типизировано и не допускает использование неключевых слов. Ключевыми словами являются: "if", "then", "is", "and", "or", "not", "(" , ")", "slightly", "somewhat", "very", "extremely". Последние четыре ключевых слова являются лингвистическими квантификаторами. Также к ключевым словам относятся все имена переменных, терминов и функций, имеющихся в вашей системе. Лингвистическими квантификаторами увеличивают или, наоборот, уменьшают значимость нечетких термов или линейных функций Сугено. Реализация лингвистических квантификаторов:

    1. "slightly" - "едва", заменяет результат посылки на ее кубический корень. Сильно уменьшает значимость.
    2. "somewhat" - "отчасти", заменяет результат посылки на ее квадратный корень. Уменьшает значимость.
    3. "very" - "очень", возводит результат посылки во вторую степень. Увеличивает значимость.
    4. "extremely" - "экстремально", возводит результат посылки в третью степень. Сильно увеличивает значимость.
  9. Осталось лишь добавить правила в систему:
    fsTips.Rules().Add(rule1); fsTips.Rules().Add(rule2); fsTips.Rules().Add(rule3);

Теперь мы имеем готовую модель вычисления чаевых на основе системы нечеткого логического вывода Мамдани.

2.2. Проектирование систем типа Сугено

Примером реализации системы типа Сугено будет скрипт для вычисления необходимого управления системой круиз-контроля автомобиля. Этот скрипт описан в файле Cruise_Control_Sample_Sugeno.mq5 библиотеки FuzzyNet для MQL5 и является одним из примеров применения нечетких моделей для решения задач автоматического управления.

Именно для таких одномерных задач в системах автоматического управления (САУ) и нашла наибольшее распространение нечеткая логика. Постановка этих задач звучит примерно так: некий объект в момент времени находится в состоянии "A", необходимо, чтобы за время он пришел в состояние "B". Для решения задач такого типа весь временной участок разбивают на частей, находят шаг по времени, равный , и далее САУ необходимо вырабатывать управление в каждой точке , где i=0,1,2...n .

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

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

  • разность между скоростью автомобиля в данный момент и скоростью, установленной в системе круиз-контроля;
  • как быстро эта разность уменьшается (увеличивается).

Итак, первый входной параметр "ошибка скорости" (SpeedError ) будет принимать значения от -20 до 20 км/ч и иметь три терма: "уменьшилась" (slower ), "не изменилась" (zero ), "увеличилась" (faster ). Все три терма будут иметь треугольную функцию принадлежности. Второй вход - "производная по ошибке скорости" (SpeedErrorDot ) с диапазоном от -5 до 5 и нечеткими термами "уменьшилась" (slower ), "не изменилась" (zero ), "увеличилась" (faster ) также с треугольной функцией принадлежности.

Поскольку наша модель имеет систему логического вывода Сугено, выходное значение "ускорение" (Accelerate ) не будет иметь максимального и минимального значения, а вместо нечетких терминов будут линейные комбинации входных переменных, которые также будут иметь имена: "не изменять" (zero ), "увеличить" (faster ), "уменьшить" (slower ), "поддерживать" (func ). Распишем все четыре линейные комбинации. Для этого обозначим переменные SpeedError как , SpeedErrorDot как , а Accelerate как , тогда получим уравнения:

База знаний этой системы будет состоять из девяти правил:

  1. Если (ошибка уменьшилась) и (производная по ошибке уменьшилась), то ускорение увеличить.
  2. Если (ошибка уменьшилась) и (производная по ошибке не изменилась), то ускорение увеличить.
  3. Если (ошибка уменьшилась) и (производная по ошибке увеличилась), то ускорение не изменять.
  4. Если (ошибка не изменилась) и (производная по ошибке уменьшилась), то ускорение увеличить.
  5. Если (ошибка не изменилась) и (производная по ошибке не изменилась), то ускорение поддерживать.
  6. Если (ошибка не изменилась) и (производная по ошибке увеличилась), то ускорение уменьшить.
  7. Если (ошибка увеличилась) и (производная по ошибке уменьшилась), то ускорение увеличить.
  8. Если (ошибка увеличилась) и (производная по ошибке не изменилась), то ускорение уменьшить.
  9. Если (ошибка увеличилась) и (производная по ошибке увеличилась), то ускорение уменьшить.

Рассмотрим непосредственно ход создания системы:

  1. Подключим файл SugenoFuzzySystem.mqh из библиотеки FuzzyNet для MQL5:
    #include Данный файл позволяет создавать системы типа Сугено и работать с ними.
  2. Теперь мы можем создать пустую систему Сугено и далее ее наполнять:
    SugenoFuzzySystem *fsCruiseControl=new SugenoFuzzySystem();
  3. Входные переменные для системы Сугено создаются так же, как и для системы типа Мамдани.

    Создадим переменную "ошибка скорости" и добавим ее в систему:

    FuzzyVariable *fvSpeedError=new FuzzyVariable("SpeedError" ,-20.0 ,20.0 ); fvSpeedError.Terms().Add(new FuzzyTerm("slower" ,new TriangularMembershipFunction(-35.0 ,-20.0 ,-5.0 ))); fvSpeedError.Terms().Add(new FuzzyTerm("zero" , new TriangularMembershipFunction(-15.0 , -0.0 , 15.0 ))); fvSpeedError.Terms().Add(new FuzzyTerm("faster" , new TriangularMembershipFunction(5.0 , 20.0 , 35.0 )));

    Создадим переменную "изменение ошибки скорости" и также добавим ее в систему:

    FuzzyVariable *fvSpeedErrorDot=new FuzzyVariable("SpeedErrorDot" ,-5.0 ,5.0 ); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("slower" , new TriangularMembershipFunction(-9.0 , -5.0 , -1.0 ))); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("zero" , new TriangularMembershipFunction(-4.0 , -0.0 , 4.0 ))); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("faster" , new TriangularMembershipFunction(1.0 , 5.0 , 9.0 )));

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

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

    В нашей системе две входные переменные, поэтому длины массивов коэффициентов не должны превышать трех. Объявим все четыре массива, на их основе сформируем описанные выше функции и добавим их в нечеткую переменную типа Сугено, а ее, в свою очередь, занесем в систему:
    SugenoVariable *svAccelerate=new SugenoVariable("Accelerate" ); double coeff1={0.0 ,0.0 ,0.0 }; svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("zero" ,coeff1)); double coeff2={0.0 ,0.0 ,1.0 }; svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("faster" ,coeff2)); double coeff3={0.0 ,0.0 ,-1.0 }; svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("slower" ,coeff3)); double coeff4={-0.04 ,-0.1 ,0.0 }; svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("func" ,coeff4)); fsCruiseControl.Output().Add(svAccelerate);

  5. По аналогии с системой Мамдани создадим все девять нечетких правил:
    SugenoFuzzyRule *rule1 = fsCruiseControl.ParseRule("if (SpeedError is slower) and (SpeedErrorDot is slower) then (Accelerate is faster)" ); SugenoFuzzyRule *rule2 = fsCruiseControl.ParseRule("if (SpeedError is slower) and (SpeedErrorDot is zero) then (Accelerate is faster)" ); SugenoFuzzyRule *rule3 = fsCruiseControl.ParseRule("if (SpeedError is slower) and (SpeedErrorDot is faster) then (Accelerate is zero)" ); SugenoFuzzyRule *rule4 = fsCruiseControl.ParseRule("if (SpeedError is zero) and (SpeedErrorDot is slower) then (Accelerate is faster)" ); SugenoFuzzyRule *rule5 = fsCruiseControl.ParseRule("if (SpeedError is zero) and (SpeedErrorDot is zero) then (Accelerate is func)" ); SugenoFuzzyRule *rule6 = fsCruiseControl.ParseRule("if (SpeedError is zero) and (SpeedErrorDot is faster) then (Accelerate is slower)" ); SugenoFuzzyRule *rule7 = fsCruiseControl.ParseRule("if (SpeedError is faster) and (SpeedErrorDot is slower) then (Accelerate is faster)" ); SugenoFuzzyRule *rule8 = fsCruiseControl.ParseRule("if (SpeedError is faster) and (SpeedErrorDot is zero) then (Accelerate is slower)" ); SugenoFuzzyRule *rule9 = fsCruiseControl.ParseRule("if (SpeedError is faster) and (SpeedErrorDot is faster) then (Accelerate is slower)" );
  6. Добавим их в нашу систему:
    fsCruiseControl.Rules().Add(rule1); fsCruiseControl.Rules().Add(rule2); fsCruiseControl.Rules().Add(rule3); fsCruiseControl.Rules().Add(rule4); fsCruiseControl.Rules().Add(rule5); fsCruiseControl.Rules().Add(rule6); fsCruiseControl.Rules().Add(rule7); fsCruiseControl.Rules().Add(rule8); fsCruiseControl.Rules().Add(rule9);

2.3. Расчет систем типа Мамдани и Сугено

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

Что же именно нужно подавать на вход системы и в каком виде мы получим результат от нее?

Количество входных переменных для нечетких систем не ограниченно, каждый вход обязательно должен принимать какие-то значения, следовательно, мы должны иметь список, в котором будем хранить значения для каждого входа. Элементами этого списка должен быть сложный объект с двумя полями: первое - нечеткая переменная, а второе - числовое значение типа double . В файле Dictionary.mqh из библиотеки FuzzyNet на MQL5 реализован класс Dictionary_Obj_Double , позволяющий создавать такие объекты.

Сформируем входной список для нашей системы типа Мамдани:

CList *in =new CList; Dictionary_Obj_Double *p_od_Service=new Dictionary_Obj_Double; Dictionary_Obj_Double *p_od_Food=new Dictionary_Obj_Double; p_od_Service.SetAll(fvService, Service); p_od_Food.SetAll(fvFood, Food); in .Add(p_od_Service); in .Add(p_od_Food);

Здесь Service и Food - два входных параметра типа double .

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

Выход для системы типа Мамдани:

CList *result=new CList; Dictionary_Obj_Double *p_od_Tips=new Dictionary_Obj_Double;

Теперь для каждой системы вызываем функцию Calculate , которая принимает один параметр - список входов, а возвращает список выходов. По индексу 0 из этого списка получим значения выхода системы, который представлен как объект класса Dictionary_Obj_Double. Используя методы Key и Value для данного объекта, можно получить переменную и ее результат соответственно.

Выполним расчет для системы Мамдани и выведем на экран полученное число при нечеткой выходной переменной fvTips :

Result=fsTips.Calculate(in); p_od_Tips=result.GetNodeAtIndex(0 ); Alert ("Tips, %: " ,p_od_Tips.Value());

Проделаем то же самое с системой типа Сугено:

CList *in =new CList; Dictionary_Obj_Double *p_od_Error=new Dictionary_Obj_Double; Dictionary_Obj_Double *p_od_ErrorDot=new Dictionary_Obj_Double; p_od_Error.SetAll(fvSpeedError,Speed_Error); p_od_ErrorDot.SetAll(fvSpeedErrorDot,Speed_ErrorDot); in .Add(p_od_Error); in .Add(p_od_ErrorDot); CList *result=new CList; Dictionary_Obj_Double *p_od_Accelerate=new Dictionary_Obj_Double; result=fsCruiseControl.Calculate(in ); p_od_Accelerate=result.GetNodeAtIndex(0 ); Alert("Accelerate, %: " ,p_od_Accelerate.Value()*100 );

Заключение

Более подробно ознакомиться со скриптами, описанными выше, а также создать свою нечеткую модель вы можете, скачав библиотеку FuzzyNet для MQL5 или MQL4 . Важно понимать, что построение "боевых" нечетких моделей - это довольно непростая работа, даже с использованием каких-либо вспомогательных библиотек, а каждая готовая модель требует обязательной доскональной проверки и настройки.

Более подробное и объемное описание нечетких регуляторов.

  • Осовский С. Нейронные сети для обработки информации .
  • Статья Андрея Масаловича:
  • Основы теории нечетких множеств и нечеткой логики

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

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

    В системах, построенных на базе нечетких множеств, используются правила вида «ЕСЛИ А ТО В» (А ® В), в которых как в А (условие, предпосылку), так и в В (результат, гипотезу) могут входить качественные значения. Например, «ЕСЛИ Рост = "высокий" ТО Вид_спорта = "баскетбол"».

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

    Каждое значение лингвистической переменной определяется через так называемое нечеткое множество. Нечеткое множество определяется через некоторую базовую шкалу X и функцию принадлежности (характеристическую функцию) m(х ), где х Î Х . При этом, если в классическом канторовском множестве элемент либо принадлежит множеству (m(х ) = 1), либо не принадлежит (m(х ) = 0), то в теории нечетких множеств m(х ) может принимать любое значение в интервале . Над нечеткими множествами можно выполнять стандартные операции: дополнение (отрицание), объединение, пересечение, разность и т. д. (рис. 33).

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

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

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

    2. Ограниченность. Область определения лингвистической переменной должна быть четко обозначена (определены минимальные и максимальные значения лингвистической переменной на базовой шкале). На границах универсального множества, где определена лингвистическая переменная, значения функций принадлежности ее минимального и максимального нечеткого множества должны быть единичными. На рисунке Т 1 имеет неправильную функцию принадлежности, а Т 6 – правильную.

    3. Согласованность. Должно соблюдаться естественное разграничение понятий (значений лингвистической переменной), когда одна и та же точка универсального множества не может одновременно принадлежать с m(х ) = 1 двум и более нечетким множествам (требование нарушается парой Т 2 – Т 3).

    4. Полнота. Каждое значение из области определения лингвистической переменной должно описываться хотя бы одним нечетким множеством (требование нарушается между парой T 3 – Т 4).

    5. Нормальность. Каждое понятие в лингвистической переменной должно иметь хотя бы один эталонный или типичный объект, т. е. в какой-либо точке функция принадлежности нечеткого множества должна быть единичной (требование нарушается T 5).

    X

    Нечеткое множество «низкий рост» m н (х )

    0 20 40 60 80 100 110 120 140 160 X

    Нечеткое множество «высокий рост» m в (х )

    0 20 40 60 80 100 110 120 140 160 X

    Д = Н: Дополнение нечеткого множества «низкий рост»

    m д (х ) = 1 – m н (х )

    0 20 40 60 80 100 110 120 140 160 X

    Н È В: Объединение нечетких множеств «низкий рост» и «высокий рост»

    m нв (х ) = mах (m н (х ), m в (х ))

    0 20 40 60 80 100 110 120 140 160 X

    Н Ç В: Пересечение нечетких множеств «низкий рост» и «высокий рост»

    m нв (х ) = min (m н (х ), m в (х ))

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

    m(х ) Т 1 Т 2 Т 3 Т 4 Т 5 Т 6

    Рис. 34. Пример задания нечетких множеств для линг­вис­тической переменной с нарушением требований

    Требования 2–4 можно заменить одним универсальным – сумма функций принадлежности m(х ) по всем нечетким множествам в каждой точке области определения переменной должна равняться 1.

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

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

    · истинность предпосылки, гипотезы или формулы лежит в интервале ;

    · если две предпосылки (Е 1 и Е 2) соединены Ù (логическим И), то истинность гипотезы Н рассчитывается по формуле t(Н) = MIN(t(Е 1), t(Е 2));

    · если две предпосылки (Е 1 и Е 2) соединены Ú (логическим ИЛИ), то истинность гипотезы Н рассчитывается по формуле t(Н) = MAX(t(Е 1), t(Е 2));

    · если правило (П) имеет свою оценку истинности, тогда итоговая истинность гипотезы Н итог корректируется с учетом истинности правила t(Н итог) = MIN(t(Н), t(П)).

    Лекция № 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    µ A (x 1)=0,3;

    µ A (x 2)=0;

    µ A (x 3)=1;

    µ A (x 4)=0,5;

    µ A (x 5)=0,9.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    "малый" = .

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

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

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

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

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

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

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

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

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

    Включение .

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

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

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

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

    Равенство .

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

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

    Дополнение.

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

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

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

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

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

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

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

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

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

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

    Разность.

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

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

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

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

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

    Примеры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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