Логические операции над нечеткими переменными. Раздел Fuzzy Logic Toolbox. С.Д.Штовба. Введение в теорию нечетких множеств и нечеткую логику

С.Д.Штовба "Введение в теорию нечетких множеств и нечеткую логику"

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

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

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

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

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

Пример 9. Рассмотрим лингвистическую переменную с именем "температура в комнате". Тогда оставшуюся четверку можно определить так:

Таблица 4 - Правила расчета функций принадлежности

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

Рисунок 13 - Лингвистическая переменная "температура в комнате"

1.7.2. Нечеткая истинность

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

Для задания нечеткой истинности Заде предложил такие функции принадлежности термов "истинно" и "ложно":

;

где - ; параметр, определяющий носители нечетких множеств "истинно" и "ложно". Для нечеткого множества "истинно" носителем будет интервал , а для нечеткого множества ложно" - ; .

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

Рисунок 14 - Лингвистическая переменная "истинность" по Заде

Для задания нечеткой истинности Балдвин предложил такие функции принадлежности нечетких "истинно" и "ложно":

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

Графики функций принадлежности этих термов показаны на рис. 15.

Рисунок 15 - Лингвистическая переменная "истинность" по Балдвину

1.7.3. Нечеткие логические операции

Вначале кратко напомнить основные положения обычной (булевой) логики. Рассмотрим два утверждения A и B, каждое из которых может быть истинным или ложным, т.е. принимать значения "1" или "0". Для этих двух утверждений всего существует различных логических операций, из которых содержательно интерпретируются лишь пять: И (), ИЛИ (), исключающее ИЛИ (), импликация () и эквивалентность (). Таблицы истинности для этих операций приведены в табл. 5.

Таблица 5 - Таблицы истинности булевой логики

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

Определение 45. Обозначим нечеткие логические переменные через и , а функции принадлежности, задающие истинностные значения этих переменных через и , . Нечеткие логические операции И (), ИЛИ (),
НЕ () и импликация () выполняются по таким правилам:

;

В многозначной логике логические операции могут быть заданы таблицами истинности. В нечеткой логике количество возможных значений истинности может быть бесконечным, следовательно в общем виде табличное представление логических операций невозможно. Однако, в табличной форме можно представить нечеткие логические операции для ограниченного количества истинностных значений, например, для терм-множества {"истинно", "очень истинно", "не истинно", "более-менее ложно", "ложно"}. Для трехзначной логики с нечеткими значениями истинности T - ; "истинно", F - ; "ложно" и T+F - "неизвестно" Л Заде предложил такие лингвистические таблицы истинности:

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

Пример 10. Заданы следующие нечеткие истинностные значения:

Применяя правило из определения 45, найдем нечеткую истинность выражения "почти истинно ИЛИ истинно":

Сравним полученное нечеткое множество с нечетким множеством "более-менее истинно". Они почти равны, значит:

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

неопределенно

неопределенно

неопределенно

неопределенно

неопределенно

неопределенно

неопределенно

неопределенно

очень истинно

очень истинно

более-менее истинно

более-менее истинно

1.7.3. Нечеткая база знаний

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

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

Посылка правила или антецедент представляет собой утверждение типа "x есть низкий", где "низкий" - ;это терм (лингвистическое значение), заданный нечетким множеством на универсальном множестве лингвистической переменной x. Квантификаторы "очень", "более-менее", "не", "почти" и т.п. могут использоваться для модификации термов антецедента.

Заключение или следствие правила представляет собой утверждение типа "y есть d", в котором значение выходной переменной (d) может задаваться:

  1. нечетким термом: "y есть высокий";
  2. классом решений: "y есть бронхит"
  3. четкой константой: "y=5";
  4. четкой функцией от входных переменных: "y=5+4*x".

Если значение выходной переменной в правиле задано нечетким множеством, тогда правило может быть представлено нечетким отношением. Для нечеткого правила "Если x есть , то y есть ", нечеткое отношение задается на декартовом произведении , где - ; универсальное множество входной (выходной) переменной. Для расчета нечеткого отношения можно применять нечеткую импликацию и t-норму. При использовании в качестве t-нормы операции нахождения минимума, расчет нечеткого отношения осуществляется так:

Пример 11. Следующая нечеткая база знаний описывает зависимость между возрастом водителя (x) и возможностью дорожно-транспортного происшествия (y):

Если x = Молодой, то y = Высокая;

Если x = Средний, то y = Низкая;

Если x = Очень старый, то y = Высокая.

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

Рисунок 16 - Функции принадлежности термов

Рисунок 17 - Нечеткие отношения, соответствующие правилам базы знаний из примера 11

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

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

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

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

Определение . Любая нечеткая переменная характеризуется тройкой

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

(1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

,

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

.

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

Судьба нечеткой логики, как нового научного направления, сходна с ее содержимым - необычна, сложна и парадоксальна. В основе нечеткой логики лежит теория нечетких множеств, изложенная в серии работ Заде в 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.

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

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

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

A b || a b && a ! -------- -------- ---- 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1
В нечеткой логике, в отличие от классической, вместо величин истина и ложь используется величина степень истинности , принимающая любые значения из бесконечного множества от 0 до 1 включительно. Следовательно логические операции уже нельзя представить таблично. В нечеткой логике они задаются фукнциями.

Есть два способа реализации дизъюнкции и конъюнкции:

#Максиминный подход: a || b => max(a, b) a && b => min(a, b) #Колорометрический подход: a || b => a + b - a * b a && b => a * b
Отрицание задается единственным способом (не трудно догадаться):

A => 1 - a
Легко проверить, что для крайних случаев - когда значения переменных исключительно 1 или 0 - приведенные выше функции дают таблицы истинности операций классической логики. Готово! Теперь у нас есть расширенная логика, обладающая невероятной мощью, простотой и при этом полностью совместимая с классической логикой в предельных случаях. Значит везде, где мы [программисты] используем логические выражения, мы можем использовать выражения нечеткой логики? Не совсем.

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

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

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

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

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

Я сразу отбросил идею распознавать любой каракуль, нарисованный пользователем на экране (тогда это был экран КПК). Вместо этого программа предлагала выбрать тип черты из порядка 23-х, определенных правилами японской каллиграфии. Выбрав тип черты, пользователь рисовал прямоугольник, в который вписывалась черта. Фактически, иероглиф - и введенный, и хранимый в словаре - представлялся в виде множества прямоугольников, для которых был определен тип.

Как определить равенство иероглифов в таком представлении? Для начала сформулируем критерий в четкой постановке:

Иероглифы A и B равны тогда и только тогда, когда для каждой черты в A существует равная ей черта в B и для каждой черты в B существует равная ей черта в A.

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

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

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

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

Для начала построим матрицу E следующим образом:

For i in 1..n for j in 1..n E = A[i] == B[j] end end #A и B - это иероглифы; A[i] и B[j] - это их черты, и оператор "==" вычисляет их нечеткое равенство. #Предполагается, что оба иероглифа имеют одинаковое количество черт - n.
Затем сомкнем эту матрицу в вектор M[n]:

For i in 1..n M[i] = E.max_in_row(i) end #Метод max_in_row вычисляет максимальное значение в строке матрицы.
Я использую максиминный подход, потому что, на практике, колорометрический дает слишком маленькие значения для конъюнкций. Если вспомнить, что max - это дизъюнкция, то получается, что мы вычисляем утверждение, что i-я черта A равна первой черте B или второй или третьей и т.д. Таким образом M - это вектор совпадений черт A с чертами B.

#Просто нечеткой конъюнкцией. e = M.min #Либо так: e = M.sum / M.length #(отношение суммы элементов к длине вектора).
Оба способа работают, но по-разному, причем второй способ работает даже если сравнивать черты четко. Какой из них правильней - вопрос философский.

Еще пару слов стоит сказать о сравнении черт. В соответствии с определением, равенство черт - это конъюнкция двух условий: равенства типов и равенства прямоугольников. Черты некоторых типов очень похожи. Вводя, пользователь легко может их перепутать, поэтому стоит иметь таблицу похожести, значения которой будут отражать насколько черта i похожа на черту j (на главной диагонали, естественно, будут единицы). Как степень равенства прямоугольников можно брать отношение площади их пересечения к площади большего из прямоугольников.

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