Над нечеткими множествами определены ряд логических операций: включения, пересечения, объединения, алгебраического произведения, алгебраической суммы, ограниченного произведения, ограниченной суммы.
Рис. 2. числа
2) Аналитическое выполнение арифметических операций над нечеткими числами
Нечеткое число А
на действительной прямой – это нечеткий
набор, характеризуемый функцией
принадлежности
.
Областью определения нечеткого числа А называется множество чисел для которых определена функция принадлежности.
Оно обладает теми же свойствами, что и нечеткое множество, над ним определены те же операции. Но кроме того над нечеткими числами определены ряд специфических свойств и действий.
Над любыми двумя нечеткими числами определены арифметические операции сложения, вычитания, произведения и деления. Для выполнения этих действий над нечеткими числами существует ряд подходов и алгоритмов, одним из которых является алгоритм аналитического выполнения арифметических операций.
В основе его лежит
принцип обобщения, базирующийся на
графическом способе представления
нечетких чисел. Рассмотрим нечеткое
число А={
(x1)/x1;
(x2)/x2;
…;
(xn)/xn}.
Нам необходимо найти значение функции принадлежности для числа x, не совпадающего ни с одним из чисел x1, x2, …, xn, но находящегося в отрезке [xk, xk+1], где xk и xk+1 – числа с известными . Рассмотрим графическое изображение нечеткого числа B={ (xk)/xk; (xk+1)/xk+1}, оно представлено на рис. 3.
Используя уравнение прямой, проходящей через две точки:
;
(1)
мы можем найти функцию принадлежности для числа x
.
(2)
Рис. 3. Иллюстрация принципа обобщения
Таким образом, используя данный принцип, можно найти функцию принадлежности для любого числа, входящего в область определения данного нечеткого.
Перейдем непосредственно к алгоритму. Пусть даны два нечетких числа X и Y, их область определения VX={x} и VY={y}, а также функции принадлежности в аналитическом виде.
Использование минимаксных операций пересечения и принципа обобщения позволяет представить выполнение арифметической операции над нечеткими числами X и Y в виде
,
(3)
где символ
обозначает одну из четырех операций.
Областью определения нечеткого числа Z будет являться
(4)
Для любого
найдутся такие
и
,
что
,
,
,
(5)
где
- обратная операция по отношению к
;
а
и
определяются следующим образом:
(6)
(7)
При этом значение функции принадлежности μZ(z) определяется следующим образом:
(8)
Мы рассмотрели алгоритм аналитического выполнения арифметических операций над нечеткими числами. Для большей наглядности изобразим все эти действия с помощью структурной схемы и схемы Насси-Шнейдермана, они представлены на рис. 4 и рис. 5.
Рис. 4. Схема Насси-Шнейдермана алгоритма
аналитического выполнения арифметических операций
над нечеткими числами
Рис. 5. Структурная схема алгоритма
аналитического выполнения арифметических операций над нечеткими числами
Разработанная мной программа имеет модульно-иерархическую структуру, она представлена на рис. 6.
.
Рис. 6. Модульно-иерархическая структура программы
Структура программы является модульно-иерархической так как она включает в себя программные модули, располагающихся на нескольких уровнях. Модули верхних уровней управляют работой нижних, то есть вышестоящий передает управление модулю более низкого уровня, а после работы возвращает управление себе. Такая структура программы позволяет решать задачи любой сложности.
Рассмотрим виды межмодульных связей реализованных в программе. «Интерфейсный модуль» и «Модуль предоставления пользователю помощи» связаны через управляющий параметр-данное. «Интерфейсный модуль» и «Вычислительный модуль» связаны через структурный параметр-данное. «Вычислительный модуль» связан со всеми четырьмя модулями третьего уровня иерархии через структурный параметр-данное.
Рассмотрим виды цельности модулей, реализованные в моей программе. «Интерфейсный модуль» и «Вычислительный модуль» являются модулями с логической цельностью, так как они выполняют множество функций не связанных между собой ни по управлению, ни по данным. «Модуль предоставления пользователю помощи» а так же модули дополнительных расчетов - модули с функциональной цельностью потому, что они выполняют одну четко определенную функцию.
аналитического выполнения арифметических операций над нечеткими числами
Для выполнения данного задания использовался язык программирования С++, реализованный в системе визуального объектно-ориентированного программирования C++Builder 4 Enterprise Edition. На рис. 7 представлен фрагмент схемы программной реализации алгоритма аналитического выполнения арифметических операций над нечеткими числами.
Рис. 7. Фрагмент схемы программной реализации
алгоритма аналитического выполнения арифметических
операций над нечеткими числами
Для реализации этого алгоритма использованы средства языка программирования: стандартные функции, способы распределения памяти и так далее. Листинг программы представлен в приложении.
Рассмотрим последовательность действий пользователя при использовании программы для аналитического выполнения арифметических операций над нечеткими числами. Ему необходимо запустить на выполнение программу, которая называется «действие.exe». Пользователь увидит на экране окно, изображенное на рис. 8.
Рис. 8. Внешний вид окна программы после ее запуска
В два верхних левых поля необходимо ввести нечеткие числа, справа вверху находятся поля для установления необходимой точности отображения чисел, по умолчанию они заполнены цифрами «2».
Для примера возьмем два нечетких числа: 7={0/1; 0,3/2; 1/7; 0/9} и 17={0/14; 1/17; 0/19}; и зададим точность отображения функции принадлежности – три знака после запятой. Для начала расчета нажмем кнопку «Расчет». Окно приложения после завершения вычислений примет вид, показанный на рис. 9.
Рис. 9. Внешний вид программы после завершения
вычислений
Как видно из рисунка результаты операций записываются в том же виде, что и вводимые результаты. Также на форме появились новые кнопки и надписи. Кнопка «Очистить» приводит вид окна к виду, показанному на рис. 10. Кнопки «Дополнительно», расположенные напротив результата, позволяют получить значения функции принадлежности для любого числа из области определения данного результата. Нажатие пользователем на одну из этих кнопок вызывает диалоговое окно с полем для ввода числа. На рис. 10 изображено это окно, вызванное для операции сложения.
Рис. 10. Окно ввода числа для дополнительных вычислений
Введя любое число, например 16,5, мы получим функцию принадлежности. Результаты дополнительных вычислений располагаются под основными.
Программа также оснащена встроенной помощью, которая вызывается нажатием клавиши «Помощь». В ней перечислено назначение различных кнопок и полей редактирования приложения, а так же причины сообщений об ошибках. Кнопка «О программе» выведет информацию об авторе, назначении и цели разработки программы.