Анимация
JavaScript
|
Главная Библионтека кое значение истинности. В разд. 6.2.2 подробно рассмотрен пример программы на нечетком Прологе. Нечеткие программное обеспечение н аппаратные средства Реальное нечеткое программное обеспечение на самом деле выполняется на цифровых компьютерах, построенных на основе двоичной логики, т. е. это обеспечение пишется на существующих языках компьютеров. Не кажется ли это странным? Теория нечетких множеств имеет дело с нечеткими объектами, но считается естественным, что методы их обработки основаны на строгой теории. Тем не менее остается проблема эффективности обработки: ведь нечеткое программное обеспечение, как правило, имеет низкое быстродействие. Это связано с тем, что каждое значение функции принадлежности, соответствующее одному элементу нечеткого множества, представляется с помощью нескольких двоичных разрядов, а операции над нечеткими множествами выполняются поэлементно, строго следуя двоичному представлению значений функций принадлежности. Значения функций принадлежности - числа, определяемые субъективно, по существу они не строгие, и нет необходимости в подобных строгих вычислениях. В этом смысле средства обработки нечетких множеств в современных компьютерах избыточны с точки зрения представления и вычислений. Кроме того, другая причина медленного выполнения нечетких программ заключается в том, что операции над нечеткими множествами необходимо осуществлять для каждого элемента множества. Они выполняются последовательно, хотя по существу это параллельная обработка. Проблему быстродействия можно решить, если значения функций принадлежности для каждого элемента физически представлять в виде определенного аналогового значения [21] либо представлять их группами по нескольку битов [22] и спроектировать специальные аппаратные средства для параллельных вычислений. Это концешщи построения нечетких компьютеров, изложенные в разд. 6.1. Однако до настоящего времени каких-либо исследований связи нечеткого программного обеспечения с нечеткими компьютерами не проводилось. Будущее нечеткого программного обеспечения Реально работающее нечеткое профаммное обеспечение в наши дни можно пересчитать по пальцам. В первую очередь развивается направление, связанное с расширением существующих языков средствами, позволяющими обрабатывать нечеткие множества и нечеткие значения истинности. Проблему быстродействия в основном решают путем проектирования специальных аппаратных средств на цифровых или аналоговых схемах для обработки нечетких множеств и добавления их к существующим цифровым компьютерам. Если учесть, что теория нечетких множеств-это теория строгой обработки нечетких объектов, то, по-видимому, аппаратные средства, на которых будет работать нечеткое программное обеспечение,-это нечеткие компьютеры, органически сочетающие в себе аналоговые и цифровые свойства (нечеткие объекты-аналоговые, а строгое управление-цифровые). Заде предложил понятие нечеткого алгоритма [23] и принципы описания суждений на естественном языке с использованием нечеткой логики [24]. Конечно, было бы идеально свободно общаться с компьютерами на естественном языке, содержащем нечеткости, но для этого вместе с исследованиями по пониманию естественного языка должны проводиться исследования нечеткой логики и нечетких компьютеров. 6.2.2. НЕЧЕТКИЙ ПРОЛОГ Введение Пролог-язык программирования, широко используемый в системах искусственного интеллекта и экспертных системах. Пролог-непроцедурный язык. В его основе лежит логика предикатов первого порядка, а в качестве правил вывода используется принцип резолюций. Логика предикатов первого порядка-система двузначной логики. Она предполагает, что значения логических переменных в суждениях и предикатах могут быть либо истиной (1), либо ложью (0). частности, каждый оператор Пролога соответствует одной Рчской формуле и предполагается, что эти операторы (факты и правила) обычно истинны. С другой стороны, в нечеткой логике значения истинно- СТИ всех логических переменных-это не только истина (1) или ложь (0), как в двузначной логике, они могут принимать любые значения в интервале [О, 1]. Таким образом, если каждому оператору Пролога присвоить произвольное значение в [О, 1] и интерпретировать эти значения как значения Истинности или степень достоверности, то можно было бы делать выводы даже из нечетких фактов и недостоверных правил, а благодаря заключениям со значениями истинности в [О, 1] можно было бы менять порядок управления программой. Все это стимулирует исследования нечеткого Пролога. При разработке нечеткого Пролога необходимо пересмотреть лежащий в его основе принцип резолюций с позиций нечеткой логики [26, 27]. В данном разделе кратко изложены идеи нечеткого Пролога, основанного на принципах нечетких резолюций. Рассматриваемый здесь нечеткий Пролог логически многозначен, и в качестве значений истинности выбираются не произвольные значения в [О, 1], а используется нечеткое множество в [О, 1] (которое называют лингвистическими значениями истинности), хотя до настоящего времени принципы нечетких резолюций для лингвистических значений истинности еще не вполне ясны. Степень достоверности резолюций Принцип резолюций по умолчанию допускает справедливость закона комплементарности АА = 0. В двузначной логике, разумеется, этот закон справедлив. Например, спрашивается, справедливо ли В, если задано правило А-В и факт А1 Заменим А-* В на А\/ В, добавим к 1равилу и факту отрицание В искомого В, и из множества {А Sj В, А, Б] выведем противоречие, а именно ш А\/В ы А, допуасая, что - = О, выведем В, а из этого В и В, допуская, что В-В = О, получим противоречие. Кстати, в случае нечеткой логики закон комплементарности не всегда справедлив, поэтому этот метод нельзя использовать в прежнем виде. А W В, используемые для вывода в принципе нечетких резолюций, называются ключевыми словами. Степень достоверности резолюций вывода с использованием ключевого слова А определяется следующим образом: Степень достоверности резолюции = max (С, С). Здесь Сд(Сд) называются степенями достоверности А(А) р«с 6 П. Стейень достовер- " ности резолюции. и ойределяются как С , = (Г()-0,5) х2, где Т()-значение истинности А. В случае двузначной логики Т{А) обычно равно О или 1, а в случае нечеткой логики принимает произвольное значение в [О, 1]. Степень достоверности С 4 при Т{А), равном 0,5, принимает значение О, а при Т(А), равном О,-значение -1. Если предположить, что fA) = 1 - Т{А), то степень достоверности резолюции будет равна Сд (рис. 6.11). Таким образом, если делается вывод с использованием ключевого слова А, значение истинности которого равно О (строго ложь) или 1 (строго истина), то степень достоверности резолюции равна 1, а если значение истинности равно 0,5 (совсем не ясно, истина или ложь), то степень достоверности равна 0. Степень достоверности полной резолюции для вывода справедливости В с использованием А и В равна меньшей из степеней достоверности отдельных резолюций, т.е. определяется как min(C 4, Cg\). Благодаря этому в нечеткой логике принимается метод вывода, при котором информация А-А и В В, представляющая в общем случае неполное противоречие, зависит от формы степени достоверности резолюций. Пример программы на нечетком Прологе Объясним на очень простом примере идеи нечеткого Пролога. Займемся поиском желающих найти друга. Для простоты будем считать в качестве условий для друга (подруги) только два фактора: молодость и обеспеченность. На рис. 6.12 показана функция принадлежности нечеткого множества «молодой». Данные построены по результатам реаль- Глава б а 1 6 10 15 20 25 30 35 40 4S SU 85 60 Возраст Рис. 6.12. Функция принадлежности множества «молодой». ного анкетирования. В нечетком Прологе эти факты определим как функцию принадлежности следующим образом; /♦Функция принадлежности понятия «молодой»*/ молодой (Возраст) (0/(0), 0/(13.5), 0.0155/(14.5), 0.2093/ /(15.5), 0.3953/(16.5), 0.5194/(17.5), 0.9612/(18.5), 0.9690/(19.5), 1/(20.5), 1/(24.5)} повторить # 10. молодой (Возраст) {1/(24.5), 0.9922/(25.5), 0.7984/(26.5), 0.7829/(27.5), 0.7674/(28.5), 0.6202/(29.5), 0.5969/(30.5), 0.2093/(31.5), 0.2093/(32.5), 0.2106/(33.5), 0.2106/(35.5), 0.0078/(36.5), 0/(40), 0/(120)} повторить #14. Числа в скобках обозначают возраст, а числа перед косой чертой-значения функции принадлежности для данного возраста. На рис. 6.12 функция принадлежности построена непрерывной линией, а здесь функция определяется дискрет- 200 400 600 800 1 000 Деньга* Ютыс.иеи Рис. 6.13. Функция принадлежности множества «богаты!! 499 600 800 Дщпги X ю тцк. цен 1000 Рис. 6.14. Функция принадлежности множества «обеспеченный». но с использованием характерных точек. Промежуточные точки определяются по значениям линейной аппроксимации. Обеспеченность будем оценивать по сумме вклада в банке. Функции принадлежности трех нечетких множеств «богатый», «обеспеченный» и «бедный» показаны на рис. 6.13-6.15. Опишем их на нечетком Прологе следующим образом; /*Функции принадлежности для денег (х 10000 йен)*/ богатый (Деньги) {0/(0), 0/(100), 0.1/(200), 0.2/(250), 0.35/ /(300), 0.4/(350), 0.55/(400), 0.7/(450), 0.85/(500), 0.9/(600), 0.95/(800), 1/(1000), 1/(10000000)} повторить #13. обеспеченньвд (Деньги) (0/(0), 0/(80), 0.1/(90), 0.15/(100), 0.25/(120), 0.40/(140), 0.65/(160), 0.9/(180), 1/(200), 1/(400), 0.8/(450), 0.6/(500), 0.35/(600), 0.2/(700), 0.1/(800), 0.05/(900), 0/(1000), 0/(10000000)} повторить #18. " 20 40 60 80 100 120 140 160 180 200 Деньги «10тыс. иен Рис 6.15. Функция принадлежности множества «бедный». 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [ 56 ] 57 58 59 60 |