Описание операций над нечеткими числами в языке программирования С++

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.