Описание операций над нечеткими числами в языке программирования С++
Функциональное назначение программы, область применения и ее ограничения. Алгоритм операций с нечеткими числами, описание используемых технических средств. Пример вычислений и обучающая программа, условия передачи программной документации или её продажи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 06.01.2020 |
Размер файла | 505,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Описание операций над нечеткими числами в языке программирования С++
1. Функциональное назначение программы, область применения, ее ограничения
При выполнении НИР «Автоматизированная система информационно-аналитической поддержки принятия решений в области муниципального управления», а также диссертационных работ связанных с управлением социально-экономическими процессами и созданием программных модулей по приближенной оценки возможных ситуаций на базе теории нечетких множеств, возникла проблема. Эта проблема связанна с тем, что в компиляторах языков программирования высокого уровня отсутствует возможность описания нечетких чисел, множеств и операций над ними.
Для решения возникшей проблемы авторы использовали стандартные возможности языков программирования, применив способ описания нечетких чисел, множеств и операций над ними на уровне объектов языка.
Авторами на языке программирования С++ описаны объекты и разработаны программные модули. Результаты выполненной работы позволяют использовать для создания вычислительных программ алгоритмы, основанные на теории нечетких множеств.
2. Используемые технические средства
Программа работает в графической операционной системе Windows 2000 и выше. Для устойчивой работы программы достаточно наличия персонального компьютера с процессором Pentium II и старше. Инструментальное программное средство Microsoft Visual C++ (реализ 6.0). Оперативная память на персональной ЭВМ должна быть не менее 64 Мбт, Монитор SVGA и выше. Для работы с программой необходима среда программирования, поддерживающая стандарты C++. Программа распространяется в исходных кодах на языке программирования C++.
3. Алгоритм и реализация операций с нечеткими числами
3.1 Общие понятия и алгоритм
Одним из прогрессивных направлений математического исследования является применение теории нечетких множеств для решения управленческих задач. Авторами предлагается способ, применение которого на языке программирования позволяет разрабатывать программы в терминах аппарата нечетких множеств. Суть способа заключается во включении модулей на языке программирования, объектов описывающих типы нечетких чисел и математические операции над ними. Для удобства отдельные компоненты и их обязанности представим с помощью индексных карточек - CRC-карточек. На лицевой стороне карточки написаны имя компоненты, ее обязанности и имена других компонент, с которыми она должна взаимодействовать.
Исходя из правил нечеткой арифметики и возможных задач, в объект «нечеткое число» необходимо включить следующие действия:
1. задать нечеткое число;
2. сделать альфа-срез нечеткого числа;
3. получить носитель нечеткого числа;
4. получить представление нечеткого числа;
5. получить характеристическую функцию;
6. получить текстовое представление нечеткого числа;
7. выполнить с нечеткими числами арифметические операции: сложение, вычитание, умножение, деление, максимум, минимум.
Для осуществления действий с нечеткими числами определены вспомогательные компоненты, такие как носитель, срез, менеджер данных и сингельтон.
Сингельтон - это пара <>, где на первом месте стоит элемент x принадлежащий универсуму, а на втором - степень его принадлежности.
На рис.1 показан вид CRC-карточки компоненты «нечеткое число».
CFuzzyNumber(нечеткое число) |
Сотрудничающие компоненты: |
|||
Задать нечеткое число |
нечеткое число |
|||
Сделать альфа-срез нечеткого числа |
носитель |
|||
Получить носитель нечеткого числа |
срез |
|||
Получить четкое представление нечеткого числа |
||||
Получить характеристическую функцию |
||||
Получить текстовое представление нечеткого числа |
||||
Операции по взаимодействию с другим нечетким числом: |
Список других компонент: |
|||
сложение |
менеджер данных |
|||
вычитание |
||||
умножение |
сингельтон |
|||
деление |
||||
минимум |
||||
максимум |
Рис.1. CRC - карточка для компоненты нечеткое число CFuzzyNumber
Работа с компонентой «нечеткое число» начинается с задания значений нечеткого числа. Значения могут быть заданы как совокупность «сингельтонов» или в текстовом представлении. Текстовое представление записывается в виде , где степень принадлежности стоит перед своим элементом, а знак «+» имеет смысл объединения. Компоненты «носитель» и «менеджер данных» управляют данными. Операции над нечеткими множествами рассматриваются, как операции над срезами, по которым раскладывается нечеткое число. Для этого определен компонент «срез». нечеткое число программная документация
По сценарию работы нечеткого числа, действия могут быть разделены между пятью компонентами (рис.2.). Компонента «нечеткое число» взаимодействует только с «носителем» и «срезом». Компонент «носитель» взаимодействует со «срезом», «менеджером данных» и «сингельтонов» взаимодействует с «менеджером данных». Схема взаимосвязей компонентов (рис.2.), отображает статические связи между компонентами.
1
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Для описания динамического взаимодействия между компонентами используется диаграмма взаимодействия. На диаграмме взаимодействия (рис.3.) каждая компонента представлена вертикальной линией, сообщение от одной компоненты к другой изображается горизонтальной стрелкой между вертикальными линиями, возврат управления в компоненту (результат) представлен аналогичной стрелкой, комментарии справа от рисунка объясняют взаимодействие, время движется сверху вниз. Данная диаграмма (рис.3.) описывает последовательность событий при операции сложения в процессе работы программы, взаимосвязь компонентов в процессе работы, а также события и сообщения передающиеся между ними.
3.2 Программная реализация
Все компоненты реализованы в языке программирования С++ в виде классов. Их реализация разделена на два файла, первый заголовочный (расширение .h), который описывает поведение объекта и допустимые операции (интерфейс) и второй файл - выполнение этих операций (расширение .cpp).
Данная реализация, позволяет получить в рабочей программе представление нечеткого числа (выпуклого нечеткого множества) высотой не более единицы в виде объекта обладающего свойствами, поведением и характеристиками, а также выполнить над ним операции по правилам нечеткой арифметики на множестве вещественных чисел: при этом базис нечеткого числа составляет
.
Объекты могут быть заданы как совокупность сингельтонов или как текстовая запись вида
«».
Точность расчетов системы составляет .
3.3 Исходные коды программы и описание
3.3.1 Исходные коды компонентов «Нечеткое число» и «Срез»
CFuzzyNumber - класс, описывающий поведение нечеткого числа, включает себя описание структуры среза SLICE.
Иерархия:
1
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Структура SLICE:
Элементы данных:
Элемент данных |
Уровень доступа |
Описание |
|
x1 |
открытый |
Левая граница диапазона среза |
|
x2 |
открытый |
Правая граница диапазона среза |
Класс CFuzzyNumber:
Конструкторы:
Конструктор |
Уровень доступа |
Описание |
|
CFuzzyNumber |
открытый |
Конструирует объект CFuzzyNumber |
Деструкторы:
Деструктор |
Уровень доступа |
Описание |
|
~CFuzzyNumber |
открытыйвиртуальный |
Уничтожает объект CFuzzyNumber |
Методы:
Метод |
Уровень доступа |
Описание |
|
SetFuzzySetInText |
открытый |
Вызывает этот метод для задания нечеткого числа тестовой строкой |
|
GetFuzzySetInText |
открытый |
Вызывает этот метод для получения текстового представления нечеткого числа |
|
Insert |
открытый |
Этот метод служит для добавления данных определяющих нечеткое число (ввод сингельтонов) |
|
GetIndicative |
открытый |
Характеристическая функция задающая нечеткое число |
|
Alfa_Cut |
открытый |
Вызывает этот метод для получения альфа-среза нечеткого числа |
|
GetSupport |
открытый |
Вызывает этот метод для получения носителя нечеткого числа |
|
GetClearNumder |
открытый |
Метод служит для получения четкого представления нечеткого числа |
|
operator/ |
открытый |
Метод определяет операцию деления для объекта CFuzzyNumber |
|
operator* |
открытый |
Метод определяет операцию умножения для объекта CFuzzyNumber |
|
operator+ |
открытый |
Метод определяет операцию сложения для объекта CFuzzyNumber |
|
operator- |
открытый |
Метод определяет операцию вычитание для объекта CFuzzyNumber |
|
Minimum |
открытыйстатичный |
Метод определяет операцию нахождения минимума из объектов CFuzzyNumber |
|
Maximum |
открытыйстатичный |
Метод определяет операцию нахождения максимума из объектов CFuzzyNumber |
|
Validate |
закрытый |
Вызывает этот метод для исправления внутренних данных объекта CFuzzyNumber |
|
CreateSliceSet |
закрытыйстатичный |
Вызывает этот метод для получения множества всех характеристик объектов CFuzzyNumber |
Элементы данных:
Элемент данных |
Уровень доступа |
Описание |
|
m_IsValid |
закрытый |
ИСТИНА если объект CFuzzyNumber нуждается в исправлении данных |
|
m_Data |
закрытый |
Носитель нечеткого числа - объекта CFuzzyNumber |
3.3.2 Исходные коды компонентов «Срез» и «Сингельтон»
CSupport - класс, описывающий поведение носителя нечеткого числа, включает себя описание структуры среза SINGLETON.
Иерархия:
1
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Структура SINGLETON:
Конструкторы:
Конструктор |
Уровень доступа |
Описание |
|
SINGLETON |
открытый |
Конструирует объект SINGLETON |
Методы:
Метод |
Уровень доступа |
Описание |
|
operator< |
открытый |
Метод определяет поведение оператора меньше для объекта SINGLETON |
|
operator== |
открытый |
Метод определяет поведение оператора равенство для объекта SINGLETON |
Элементы данных:
Элемент данных |
Уровень доступа |
Описание |
|
x |
открытый |
Число - элемент нечеткого множества |
|
ux |
открытый |
Степень принадлежности числа x |
Класс CSupport:
Методы:
Метод |
Уровень доступа |
Описание |
|
Validate |
открытый |
Вызывает этот метод для исправления внутренних данных объекта CSupport |
|
Insert |
открытый |
Этот метод служит для добавления данных в носитель нечеткого числа |
|
Clear |
открытый |
Вызывает этот метод для очищения данных объекта CSupport |
|
operator[] |
открытый |
Метод определяет оператор доступа к элементам массива для объекта CSupport, служит для получения данных объекта CSupport |
|
IsCrossing |
открытый |
Вызывает этот метод для определения, пересекаются ли точки заданные входными параметрами |
|
IsUnderLine |
открытый |
Вызывает этот метод для определения, находятся ли сингельтоны на одной линии |
|
UnderLineX |
открытый |
Метод для определения значения Y, по X - точки на отрезке заданном сингльтонами |
|
UnderLineY |
открытый |
Метод для определения значения X, по Y - точки на отрезке заданном сингльтонами |
Элементы данных:
Элемент данных |
Уровень доступа |
Описание |
|
m_Data |
закрытый |
Менеджер данных объекта CSupport |
3.4 Пример вычислений и обучающая программа
Рассмотрим пример вычислений. Для этой цели авторами была специально в среде поддерживающей стандарты языка программирования С++, разработана обучающая программа.
3.4.1 Обучающая программа
Обучающая программа «Основы нечеткой арифметики и логики» предназначена для персональных компьютеров. Ее цель - обучить пользователя основам нечеткой арифметики, смоделировать операции нечеткой арифметики. Программа помогает преподавателю в обучении студентов, показывает учащимся модели нечетких чисел и графическое представление арифметических операций с нечеткими числами. Также подходит для самообучения пользователя. Пользователь садится за компьютер, просматривает обучающий материал, строит модели нечетких чисел и арифметических операций.
Рис.4. Общий вид главного окна
Программа имеет простой и легкий в обучении графический интерфейс, который позволяет решать поставленные задачи.
Общий вид главного окна демонстрационной программы показан на рис.4, где:
1. Первый аргумент арифметической нечеткой операции, в данном случае задан как треугольное нечеткое число 4;
2. Второй аргумент арифметической нечеткой операции, в данном случае показан как трапециидальное нечеткое число 7,5;
3. Результат арифметической нечеткой операции, в данном случае представлен результат операции вычитание второго аргумента из первого, в итоге получено трапециидальное нечеткое число -3,5;
4. Кнопочная панель арифметических операций, представлена группой кнопок, определяющих тип операции.
5. Кнопка для доступа к справочной системе, обучающему материалу по теме «Нечеткие числа и нечеткая арифметика».
Вместо встроенной Справочной системы преподаватель может использовать свои методики или лекции.
3.4.2 Пример вычислений
Для примера вычислений выполним сложения двух нечетких чисел A и B:
CFuzzyNumber A;
A.SetFuzzySetInText("0.0/0.0+1.0/1.0+0.0/2.0");
CFuzzyNumber B;
B.SetFuzzySetInText("0.0/3.0+1.0/4.0+0.0/5.0");
CFuzzyNumber C;
C = A + B;
Реализация представления результата могут быть различные - как текстовые, так и графические. Пример графической реализации представлен на рис.5.
Рис.5. Сложение двух нечетких чисел:
а) число Aб) число B
в) число C - результат сложения A и B
Текстовое представление результата имеет вид:
C.GetFuzzySetInText():
"0.00/3.00+1.00/5.00+0.00/7.00"
Условия передачи программной документации или её продажи
Передача методик для разработки программ, а также разработка программных продуктов с алгоритмами выполненных в терминах нечетких множеств авторами предоставляются отдельно в каждом конкретном случае.
Размещено на Allbest.ru
...Подобные документы
Понятие и функции комплексных чисел. Правила выполнения арифметических операций с комплексными числами. Действия с комплексными числами: сложение, вычитание, произведение, деление. Программная реализация решения задачи. Пример выполнения программы.
курсовая работа [398,8 K], добавлен 01.02.2010Рассмотрение методов совершения основных операций (содержания, равенства, пересечения, объединения, разности, произведения, отрицания и дизъюнктивной суммы) над нечеткими множествами, их функциональных моделей и программной реализации решения задачи.
курсовая работа [486,8 K], добавлен 25.01.2010Виды и особенности ИТ-проектов, риски и управление ими, способы оценки. Описание и правила операций над нечеткими лингвистическими переменными. Программная реализация алгоритмов. Требования к составу, параметрам технических средств. Тестирование системы.
дипломная работа [3,5 M], добавлен 10.06.2013Анализ информационных потоков. Описание информационных задач. Функциональное назначение программы, ее структура, описание логики. Тексты запросов на языке SQL. Назначение и условия применения информационно-справочной системы, описание операций, отчетов.
курсовая работа [3,0 M], добавлен 16.12.2013Проведение четырех основных арифметических операций над целыми числами – подзадача, реализованная в большинстве пользовательских программ. Реализация многоэтапных алгоритмов вычисления. Список макросов, процедур и описание их функциональной нагрузки.
курсовая работа [25,9 K], добавлен 17.05.2013Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [159,8 K], добавлен 26.01.2010Функциональное и эксплуатационное назначение изделия, методологические ограничения. Требования к составу и параметрам технических средств. Описание алгоритма, входные и выходные данные. Стадии и этапы разработки, технико-экономическое обоснование.
курсовая работа [564,4 K], добавлен 18.01.2014Область применения системы учета перевозок в карьере горно-обогатительного комбината. Функциональное назначение, описание логической структуры программы, пользовательского интерфейса, языков программирования, используемых при разработке программы.
дипломная работа [3,0 M], добавлен 21.12.2016Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.
курсовая работа [721,4 K], добавлен 10.11.2010Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.
курсовая работа [1,2 M], добавлен 25.11.2011Назначение и цели создания системы. Требования к программе или программному изделию, к информационной и программной совместимости, к составу и параметрам технических средств. Алгоритм Rijndael. Назначение и условия применения программного продукта.
дипломная работа [1,3 M], добавлен 01.03.2009Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.
реферат [687,5 K], добавлен 28.10.2011Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.
курсовая работа [563,7 K], добавлен 15.07.2012Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [700,6 K], добавлен 26.01.2010Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.
курсовая работа [969,3 K], добавлен 26.03.2009Разработка эскизного и технического проекта программы идентификации личности по отпечатку. Назначение и область применения, описание алгоритма, входных и выходных данных. Выбор состава технических и программных средств. Тестирование и внедрение продукта.
курсовая работа [61,9 K], добавлен 12.05.2015Разработка на программируемой логической интегральной микросхеме арифметико-логического устройства для выполнения операций над числами. Описание его функционирования. Коды команд АЛУ. Реализация действия RS триггера. Структура, тело и работа программы.
курсовая работа [697,1 K], добавлен 16.12.2014Поиск взаимно простых чисел. Алгоритм Евклида для целых чисел. Описание выбранного языка программирования. Алгоритм решения задачи. Обзор средств программирования. Текст и описание программы. Руководство оператора, программа и методика испытаний.
курсовая работа [843,5 K], добавлен 15.06.2011Разработка программы для сбора и анализа информации об автобусах на парковке. Назначение и область применения. Алгоритм в словесной форме. Состав технических и программных средств. Разработка приложения в среде визуального программирования C++Builder 6.
курсовая работа [1,5 M], добавлен 06.09.2014Использование единой системы программной документации. Состав нормативно-технических документов. Разработка анкетирования средствами web-приложений. Описание и текст программы, методика испытаний. Анализ предметной области сайта. Пояснительная записка.
курсовая работа [32,2 K], добавлен 13.03.2015