Материал: Разработка модуля визуализации компьютерных структур с WEB-интерфейсом

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Основное достоинство имитационного моделирования:

1.      Возможность описания поведение элементов процессов или систем на высоком уровне детализации;

2.      Возможность исследования динамики взаимодействия компонент во времени и пространстве параметров системы;

Эти достоинства обеспечивают имитационному методу широкое распространение.

Рекомендуется использовать имитационное моделирование в следующих случаях:

1.      Если не существует законченной постановки задачи исследования и идет процесс познания объекта моделирования. Имитационная модель служит средством изучения явления.

2.      Если аналитические методы имеются, но математические процессы сложны и трудоемки, и имитационное моделирование дает более простой способ решения задачи.

.        Когда кроме оценки влияния параметров (переменных) процесса или системы желательно осуществить наблюдение за поведением компонент (элементов) процесса или системы (ПС) в течение определенного периода.

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

.        Когда необходимо контролировать протекание процессов или поведение систем путем замедления или ускорения явлений в ходе имитации.

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

Однако имитационное моделирование наряду с достоинствами имеет и недостатки:

1.      Разработка хорошей имитационной модели часто обходится дороже создания аналитической модели и требует больших временных затрат.

2.      Может оказаться, что имитационная модель неточна (что бывает часто), и мы не в состоянии измерить степень этой неточности.

.        Зачастую исследователи обращаются к имитационной модели, не представляя тех трудностей, с которыми они встретятся и совершают при этом ряд ошибок методологического характера.

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

1.4 Моделирование компьютерных структур и систем

Система - совокупность объектов (элементов), взаимодействующих между собой и образующих определенную целостность, единство. При этом связь между элементами системы должна быть гораздо более сильной, чем связь каждого из этих элементов с частями других систем.

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

Связями называются элементы систем, осуществляющие непосредственное взаимодействие между другими элементами. Понятие связь одновременно характеризует строение (статику) и функционирование (динамику) системы.

Структура системы - наиболее существенные взаимодействия (связи) между элементами системы, которые мало меняются при изменении состояния системы и обеспечивают существование системы и ее основных свойств. Следует отметить, что при удалении из системы одного или нескольких элементов структура может остаться неизменной, а система может сохранить свою качественную определенность (в частности, работоспособность). Например, если из автомобиля убрать все элементы, которые обеспечивают безопасность и комфорт водителя и пассажиров, то от этого он не потеряет работоспособность, то есть структура останется неизменной.

1.5    Этапы компьютерного моделирования структур и систем.

Первый этап: уяснение целей моделирования. Цель существенным образом определяет содержание остальных этапов моделирования.

Второй этап: построение концептуальной модели. Концептуальная модель - модель на уровне определяющего замысла, который формируется при изучении моделируемого объекта. На этом этапе исследуется объект, устанавливаются необходимые упрощения. Выявляются существенные аспекты, исключаются второстепенные. Устанавливаются единицы измерения и диапазоны изменения переменных модели.

Результатом второго этапа является обобщенная схема модели, полностью подготовленная для математического описания - построения математической модели.

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

Результатом третьего этапа моделирования является программа, составленная на наиболее удобном для моделирования и исследования языке - универсальном или специальном.

Четвертый этап: планирование эксперимента. Математическая модель является объектом эксперимента. Эксперимент должен быть в максимально возможной степени информативным, удовлетворять ограничениям, обеспечивать получение данных с необходимой точностью и достоверностью.

Результат четвертого этапа - план эксперимента.

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

Шестой этап: обработка, анализ и интерпретация данных эксперимента. В соответствии с целью моделирования применяются разнообразные методы обработки: определение разного рода характеристик случайных величин и процессов, выполнение анализов (дисперсионного, регрессионного, факторного и др.). В ходе анализа полученных результатов модель может быть уточнена, дополнена или даже полностью пересмотрена.

2. АЛГОРИТМЫ РАБОТЫ ПРОГРАММНОГО МОДУЛЯ

.1 Представление графа

Граф - это совокупность непустого множества вершин и множества пар вершин (связей между вершинами). Объекты представляются как вершины, или узлы графа, а связи - как дуги, или рёбра. Для разных областей применения виды графов могут различаться направленностью, ограничениями на количество связей и дополнительными данными о вершинах или рёбрах.

Неориентированный граф G - это упорядоченная пара G=(V,E), для которой выполнены следующие условия:

V - это непустое множество вершин, или узлов,

E - это множество пар (в случае неориентированного графа - неупорядоченных) вершин, нарываемых рёбрами.

Ориентированный граф G - это упорядоченная пара G=(V,А), для которой выполнены следующие условия:

V - это непустое множество вершин или узлов,

А - это множество (упорядоченных) пар различных вершин, называемых дугами или ориентированными ребрами.

Граф в разработанном программном модуле представлен совокупностью дескрипторов: дескриптор графа, дескриптор вершины, дескриптор входа, дескриптор выхода и дескриптор дуги. Для его реализации было создано 8 структур, 5 из которых представляют собой дескрипторы графа, и еще 3 - вспомогательные элементы, которые служат для более оптимальной связи входов-выходов с дугами (рис.1). Признак указывает на вид дескриптора. Признак 4 - это граф, 5 - вершина, 6 - вход/выход, 7 - дуга.

Рисунок 1-дескрипторы графа, вершины, входа/выхода и дуги

Для реализации модуля реализации была создана дополнительная структура, которая представляет собой список вершин, их имена и номера, и координаты для прорисовки.

.2 Краткое описание среды разработки Qt

Программный модуль написан в среде разработки QT, так как это наиболее оптимальная среда для разработки графических приложений под семейство операционных систем Unix. Qt - кросс-платформенный инструментарий разработки ПО на языке программирования C++. Позволяет запускать написанное с его помощью ПО в большинстве современных операционных системах путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования. предоставляет программисту не только удобный набор библиотек классов, но и определённую модель разработки приложений, определённый каркас их структуры. Следование принципам и правилам «хорошего стиля программирования на C++/Qt» существенно снижает частоту таких трудно отлавливаемых ошибок в приложениях, как утечки памяти (memory leaks), необработанные исключения, незакрытые файлы или неосвобождённые дескрипторы ресурсных объектов, чем нередко страдают программы, написанные «на голом C++» без использования

Важным преимуществом Qt является хорошо продуманный, логичный и стройный набор классов, предоставляющий программисту очень высокий уровень абстракции. Благодаря этому программистам, использующим Qt, приходится писать значительно меньше кода, чем это имеет место при использовании, например, библиотеки классов MFC. Сам же код выглядит стройнее и проще, логичнее и понятнее, чем аналогичный по функциональности код MFC или код, написанный с использованием «родного» для X11 тулкита Xt. Его легче поддерживать и развивать.

Кроме того, даже если программисту в данный конкретный момент не нужна кроссплатформенность для его библиотеки Qt.конкретного приложения (например, планируется версия только для Windows или только для Macintosh), никто не может знать, что понадобится завтра. Бизнес-планы могут поменяться, и может оказаться и нужным, и выгодным выпустить версию для другой операционной системы или другой аппаратной платформы. В случае использования Qt для этого понадобится всего лишь перекомпиляция исходного кода. В случае же использования, например, MFC или «родных» системных API понадобится много тяжёлой работы по портированию, адаптации и отладке, а то и переписыванию с нуля существующего исходного кода для другой ОС или аппаратной платформы.

Многие компании-разработчики приложений Windows используют Qt ещё по одной причине: даже если код пишется и в обозримом будущем будет писаться только для платформы Windows и тестируется только на ней, возможность откомпилировать один и тот же исходный код на одной и той же платформе Windows двумя разными компиляторами (Microsoft Visual C++ и GCC/Win32) гарантирует лучшее качество исходного кода и лучшую его совместимость со стандартом C++. Что немаловажно для кода, который планируется длительно поддерживать и развивать.

.3 Краткое описание используемых пространств имен и классов

Класс QWidget - это базовый класс для всех объектов пользовательского интерфейса. Виджет - элементарный объект пользовательского интерфейса. Он получает события мыши, клавиатуры и другие события от оконной системы и рисует свое изображение на экране. Виджет имеет прямоугольную форму, и отрисовка происходит в порядке наложения.

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

Класс QPainter выполняет низкоуровневое рисование на виджетах и других устройствах рисования. QPainter содержит высокооптимизированные функции, позволяющие выполнить большинство рисунков, требуемых с GUI.

3.РЕАЛИЗАЦИЯ ПРОГРАММНОГО МОДУЛЯ

3.1 Файлы программного модуля Beta

Для реализации программного модуля используются заголовочные файлы “graph.h”, “MainWindow.h” и исходники “MainWindow.cpp”,”main.cpp”.

Заголовочный файл “graph.h”.

В этом заголовочном файле описаны структура представления графа и функции его обработки. Структура DescG представляет собой дескриптор графа. DescV - дескриптор вершины. DescIn и DescOut - дескрипторы входа и выхода. DescAr - дескриптор дуги. SupportInOutArc, SupportArcOut, SupportArcIn - это вспомогательные структуры для оптимизации связи вершин и дуг.

Класс “MainWindow”

В заголовочном файле “MainWindow.h” объявляется класс QMainWindow. В нем объъявляются методы, которые созданы в “MainWindow.cpp”. Также были объявлены 5 глобальных переменных: VCoor и VCoorL типа VertCoor, g1 и g1 типа descG, и логическая переменная f. Переменная VCoorL указывает на первую вершину списка VCoor. VCoor это список вершин графа, параметром которых являются их имя, номер и координаты. g1 и g2 это ссылки на графы, которые программа будет рисовать.

В исходнике “MainWindow.cpp” описан весь алгоритм работы программного модуля.

Источник: https://www.bibliofond.ru/view.aspx?id=868565