Смекни!
smekni.com

Исполняемое Win32 приложение (стр. 1 из 5)

РЕФЕРАТ

Пояснительная записка содержит: 43 страницы, 8 рисунков, 5 формул.

Цель – закрепление знаний, полученных при изучении технологии программирования гибких компьютеризированных систем; приобретение практических навыков в создании программных проектов с использованием среды программирования MSVisualStudio; изучение принципов и методов создания приложений с использованием библиотеки MicrosoftFoundationalClasses (MFC), изучение основ теории нечетких множеств, в частности функций принадлежности.

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

Ключевые слова: НЕЧЕТКОЕ МНОЖЕСТВО, ФУНКЦИЯ ПРИНАДЛЕЖНОСТИ, СТЕПЕНЬ ПРИНАДЛЕЖНОСТИ, ПРОГРАММА, C++, MFC, MICROSOFTVISUALSTUDIO.


СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

2. АНАЛИЗ ТЕХНИЧЕСКИХ РЕШЕНИЙ

2.1 Библиотека MFC

2.2 Нечеткая логика – математические основы

2.3 Применение нечеткой логики

3.ПРОЕКТИРОВАНИЕ ФУНКЦИОНАЛЬНОЙ СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

4.ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

ВЫВОДЫ

ПЕРЕЧЕНЬ ССЫЛОК

Приложение А. Исходный текст программы


ВВЕДЕНИЕ

Математическая теория нечетких множеств (fuzzy sets) и нечеткая логика (fuzzy logic) являются обобщениями классической теории множеств и классической формальной логики. Данные понятия были впервые предложены американским ученым Лотфи Заде (Lotfi Zadeh) в статье "Fuzzy Sets" (Нечеткие Множества) в 1965 году в журнале Information and Control. Основной причиной появления новой теории стало наличие нечетких и приближенных рассуждений при описании человеком процессов, систем, объектов.

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

Прежде чем нечеткий подход к моделированию сложных систем получил признание во всем мире, прошло не одно десятилетие с момента зарождения теории нечетких множеств. И на этом пути развития нечетких систем принято выделять три периода[5].

Первый период (конец 60-х – начало 70 гг.) характеризуется развитием теоретического аппарата нечетких множеств (Л. Заде, Э. Мамдани, Беллман). Во втором периоде (70–80-е годы) появляются первые практические результаты в области нечеткого управления сложными техническими системами (парогенератор с нечетким управлением). Одновременно стало уделяться внимание вопросам построения экспертных систем, построенных на нечеткой логике, разработке нечетких контроллеров. Нечеткие экспертные системы для поддержки принятия решений находят широкое применение в медицине и экономике. Наконец, в третьем периоде, который длится с конца 80-х годов и продолжается в настоящее время, появляются пакеты программ для построения нечетких экспертных систем, а области применения нечеткой логики заметно расширяются. Она применяется в автомобильной, аэрокосмической и транспортной промышленности, в области изделий бытовой техники, в сфере финансов, анализа и принятия управленческих решений и многих других.

Триумфальное шествие нечеткой логики по миру началось после доказательства в конце 80-х Бартоломеем Коско знаменитой теоремы FAT (Fuzzy Approximation Theorem). В бизнесе и финансах нечеткая логика получила признание после того как в 1988 году экспертная система на основе нечетких правил для прогнозирования финансовых индикаторов единственная предсказала биржевой крах. И количество успешных фаззи-применений в настоящее время исчисляется тысячами.

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


1.АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

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

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

б) определить область отображения графика;

в) реализовать построение функций принадлежности таких типов: треугольная, трапециидальная, гауссовская, расширенная гауссовская, сигмоидальная с учетом масштаба;

г) реализовать возможность определения степени принадлежности точки для заданного типа функции принадлежности;

д) произвести тестирование приложения на множестве исходных данных.

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

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


2. АНАЛИЗ ТЕХНИЧЕСКИХ РЕШЕНИЙ

2.1 Библиотека MFC

Система MicrosoftWindows была разработана до того времени, когда идея объектно-ориентированного программирования нашла свое отражение в языке C++. Приложения на языке С реализовывались с применением функций программного интерфейса, называемых иногда функциями API (ApplicationProgrammingInterface). Однако идеи объектно-ориентированного программирования требуют и наличия средств, позволяющих, с одной стороны, программировать в терминах классов, а с другой – сохранить возможность использования в приложениях функций API. Именно такой объектно-ориентированный интерфейс для Windows обеспечивает библиотека классов MFC (Microsoft Foundation Classes), входящая в состав пакета Visual C++.

Эта библиотека классов позволяет:

а) значительно сократить усилия по написанию программного кода приложений Windows;

б) уменьшить размер программного кода;

в) обрабатывать сообщения непосредственно методами класса без программирования цикла обработки сообщений;

г) выполнять непосредственный вызов любой функции Windows С;

д) легко преобразовывать Си-приложения в приложения на языке C++;

е) использовать все функции Windows API;

ж) легче адаптировать приложения к различным платформам, использовать как статически, так и динамически подключаемые библиотеки MFC;

з) значительно упростить применение таких возможностей, как элементы управления OLE, работа с базами данных, средства печати, управление наборами инструментария;

и) более эффективно использовать объектную ориентированность языка C++.

Рисунок 2.1 – Иерархия классов в библиотеке MFC

Следует отметить, что MFC инкапсулирует функции API в форме C++. Эта библиотека классов позволяет работать в терминах различных элементов Windows, таких, как окна, диалоги, элементы управления, а также в терминах графического интерфейса: контекст устройства, кисть и перо. Библиотека MFC создана как иерархический набор классов, позволяющих реализовывать Windows-приложения различных типов: диалоги, приложения с SDI или MDI интерфейсом, приложения, поддерживающие работу с базами данных, OLE-приложения. Базовым классом большинства классов библиотеки является класс CObject. В этом классе инкапсулированы общие методы работы с объектами: использование дампа объектов класса при отладке приложения, доступ к информации о классе объекта времени выполнения, сохранение и восстановление объектов класса. Большую часть библиотеки составляют классы, наследуемые от CObject и реализующие архитектуру приложения (рисунок 2.1)[1]: CWinThread, CWinApp, CDoc-Template, CDocument, CFrameWnd, CView и др.

2.2 Нечеткая логика ‑ математические основы

Нечеткое множество ‑ это пара (A, m), где A ‑ имя нечеткого множества, например: БОЛЬШОЙ, МОЛОДОЙ, ОТРИЦАТЕЛЬНО МАЛЫЙ, а m ‑ функция m:X-->L, называемая функцией принадлежности и обозначаемая обычно греческой буквой m. Часто полагается L = [0,1], а в качестве X используется некоторое множество вещественных чисел. m(x) интерпретируется как степень принадлежности элемента x из X нечеткому множеству A.

Характеристикой нечеткого множества выступает функция принадлежности (Membership Function)[4]. Обозначим через MFc(x) – степень принадлежности к нечеткому множеству C, представляющей собой обобщение понятия характеристической функции обычного множества. Тогда нечетким множеством С называется множество упорядоченных пар вида C={MFc(x)/x}, MFc(x) [0,1]. Значение MFc(x)=0 означает отсутствие принадлежности к множеству, 1 – полную принадлежность.

Проиллюстрируем это на простом примере. Формализуем неточное определение 'горячий чай'. В качестве x (область рассуждений) будет выступать шкала температуры в градусах Цельсия. Очевидно, что она будет изменяется от 0 до 100 градусов. Нечеткое множество для понятия 'горячий чай' может выглядеть следующим образом:

C={0/0; 0/10; 0/20; 0,15/30; 0,30/40; 0,60/50; 0,80/60; 0,90/70; 1/80; 1/90; 1/100}.

Так, чай с температурой 60 С принадлежит к множеству 'Горячий' со степенью принадлежности 0,80. Для одного человека чай при температуре 60 С может оказаться горячим, для другого – не слишком горячим. Именно в этом и проявляется нечеткость задания соответствующего множества.

Для нечетких множеств, как и для обычных, определены основные логические операции[5]. Самыми основными, необходимыми для расчетов, являются пересечение и объединение.