Разработка и реализация графического редактора сетей Петри

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.06.2011
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аннотация

В данной курсовой работе был разработан и реализован графический редактор сетей Петри. Программа позволяет создавать новые сети путем добавления позиций и переходов, соединяя их определенным образом. Вершины и ребра графа сети Петри можно перемещать по области построения, а также удалять, редактировать и копировать. Была разработана xml схема, описывающая структуру xml файла, получающегося в результате сохранения построенной сети Петри. Данная схема позволяет феривицировать xml файл при загрузке уже построенной сети, что исключает ошибки, если входной файл имеет неправильную структуру. Программа написана на языке Java, поэтому ее можно запускать как в ОС Windows, так и в Linux и др. платформах, на которых установлена JVM.

Содержание

Введение

Постановка задачи

Архитектура программы, основные алгоритмы и структуры данных

UML - диаграммы

Инструкция пользователя

Заключение

Список литературы

Введение

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

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

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

В настоящее время сети Петри становятся все более актуальными, так как применяются при решении многих задач, таких как:

§ моделирование множества взаимосвязанных и параллельных процессов;

§ моделирование работы телефонной системы и исследования ее свойств, при этом исходными данными являются протоколы взаимодействия абонентов в телекоммуникационной сети;

§ разработка параллельных графических объектно-ориентированных средств программирования;

§ разработка ПО центров дистанционного управления и контроля.

То есть, сети Петри применяются для описания и исследования динамических систем.

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

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

Структура сети Петри

Сеть Петри определяется как четверка <Р, Т, I, О>, где Р и Т -- конечные множества позиций и переходов, I и О -- множества входных и выходных функций. Другими словами, сеть Петри представляет собой двудольный ориентированный граф, в котором позициям соответствуют вершины, изображаемые кружками, а переходам -- вершины, изображаемые утолщенными черточками; функциям I соответствуют дуги, направленные от позиций к переходам, а функциям О -- от переходов к позициям.

Рис. 1. Пример сети Петри

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

Рис. 2. Распределение маркеров по позициям перед срабатыванием (слева) и после (справа)

Последовательность событий образует моделируемый процесс. Правила срабатывания переходов (рис. 2) конкретизируют следующим образом: переход срабатывает, если для каждой из его входных позиций выполняется условие N, > Kt , где N, -- число маркеров в i-й входной позиции, К, -- число дуг, идущих от i-и позиции к переходу; при срабатывании перехода число маркеров в i-й входной позиции уменьшается на К„ а в j-и выходной позиции увеличивается на Мj , где Мj -- число дуг, связывающих переход j-й позицией. На рис. 2 показан пример распределения маркеров по позициям перед срабатыванием, эту маркировку записывают в виде (2, 2,3, 1). После срабатывания перехода маркировка становится иной: (1,0,1,4).

Постановка задачи

Наименование задачи

Разработка и реализация графического редактор сетей Петри

Назначение и цель

1. Программа должна иметь набор средств, позволяющих пользователю нарисовать сеть Петри:

1.1. Добавление, редактирование и удаление вершин графа;

1.2. Добавление, редактирование и удаление ребер графа;

1.3. Перемещение вершин и ребер.

2. Программа должна иметь возможность сохранять и загружать построенные сети Петри в xml файл;

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

4. Программа должна осуществлять проверку вводимых пользователем данных. Например, количества фишек вершины.

5. Программа должна иметь интуитивный и понятный пользовательский интерфейс.

Технические средства

Данная программа разработана в среде NetBeans 6.9.1 на языке программирования java.

Минимально рекомендуемые требования для работы с программой приведены в таблице:

Таблица

Процессор

Частота не ниже 400 МГц

Оперативная память

128 Мб

Операционная система

Любая, на которой установлена jvm

Входная и выходная информация

Входной информацией для программы являются данные полученные доступными программно-техническими средствами, а также xml файлы полученные ранее в ходе работы с программой.

XML схема, описывающая структуру входного и выходного файлов:

Архитектура программы, основные алгоритмы и структуры данных

Архитектура программы

Программа включает следующие классы:

PetriNetView.java - класс, реализующий пользовательский интерфейс программы.

Vertex.java - класс, описывающий уникальные свойства вершины, как узла сети Петри.

Transition.java - класс, содержащий размеры перехода, а также метод отображающий переход в области построения сети.

Position.java - класс, содержащий размеры позиции, а также метод отображающий переход в области построения сети.

Edge.java - класс, содержащий информацию о ребре графа сети Петри (к каким вершинам ребро прилегает, координаты ребра и дополнительные точки).

XmlIO.java - класс, содержащий методы для сохранения и загрузки сети Петри

LabelVertex.java - класс, содержащий информацию о названии вершины.

PanelPointPetri.java - класс, отображающий дополнительные точки ребер графа.

PanelPetri.java - класс, реализующий основные функции по созданию и редактированию сети Петри. Он отображает сеть Петри в области построения и содержит данные обо всех вершинах и ребрах графа.

Основные структуры данных

Организация основных данных отображена на следующей диаграмме классов:

В программе все вершины являются объектами класса Vertex, а ребра - Edge. Вершины и ребра хранятся в классе PanelPetri в виде хеш таблицы, для повышения быстродействия программы. Ключами хеш таблицы являются уникальные идентификаторы вершин и ребер, а значениями - объекты соответствующих классов. Названия вершин являются объекты класса JLabel, которые также хранятся в классе PanelPetri, где ключами являются идентификаторы вершин, а значениями - сами названия.

Основные алгоритмы

Основными алгоритмами являются:

§ добавление ребра между вершинами графа сети Петри;

Рис. 3. Алгоритм добавления пользователем ребра между двумя вершинами

§ удаление выбранной пользователем вершины;

Рис. 4. Алгоритм удаление выбранной вершины

§ удаление выбранного пользователем ребра;

Рис. 5. Удаление ребра графа сети Петри

вставка из буфера обмена элементов сети Петри;

Рис. 6. Вставка элементов графа, выделенной пользователем области

UML - диаграммы

Диаграмма вариантов использования:

Рис. 7. Диаграмма вариантов использования

Диаграмма деятельности:

Рис. 8. Диаграмма деятельности

Краткое описание основных классов

Класс Vertex, описывающий общие для всех вершин сети Петри свойства. Классы Position и Transition наследуются от данного класса.

public class Vertex extends JComponent {

protected Integer vertexId; // id вершины

protected int marker; // Кол-во маркеров

/**

* Количество ребер исходящих из вершины( ключ- в какую вершину направлено ребро, значение -сколько ребер)

*/

protected HashMap<Integer, Integer> outVertex;

protected ArrayList<Integer> edgeIdLst; // id ребер, прилегающих к вершине

protected String label; // Название вершины

protected float scale = 1.0f; // масштаб

protected float lnTkns; // Толщина линии при отрисовки элемента

private Integer copyVertexId = null;

//Создать новую вершину

public Vertex(Integer vertexId, int marker, String label, float scale) {….}

public void addMarker(int num) { this.marker += num; }

public void subMarker(int num) { this.marker -= num; }

//Добавление прилегающего к вершине ребра

private void addEdge(Integer vertexId, int type, Integer edgeId) {

//ребро направлено из вершины

Integer count = outVertex.get(vertexId);

if (count == null) {

outVertex.put(vertexId, 1);

} else {

count++;

outVertex.put(vertexId, count);

}

edgeIdLst.add(edgeId);

}

геттеры и сеттеры ….

Класс Edge, описывающий свойства ребра графа сети Петри

public class Edge {

private Integer edgeId;// id ребра

private Integer inVertex; // id вершины начала ребра

private Integer outVertex; // id вершины в которую направлено ребро

private LinkedList<Point2D.Double> point; // Координаты ребра

// создать новое ребро

public Edge(Integer edgeId, Integer inVertex, Integer outVertex, int type) {…}

геттеры и сеттеры ….

Класс PanelPetri, содержащий логику работы сети Петри и отображающий элементы графа:

public class PanelPetri extends JPanel {

private SortedMap<Integer, Vertex> vertexMap; // Вершины графа

private HashMap<Integer, Edge> edgeMap; // Ребра графа

private HashMap<Integer, JLabel> labelMap; // Надписи вершин

private Integer selEdgeId = null; // id выбранного ребра

private int nextVertexId = 1; // Id следующей вершины

private int nextPositionInd = 1; // индекс следующей позиции

private int nextTransitionInd = 1; // индекс следующего перехода

private int nextEdgeId = 1; // Id следующего ребра

private JComponent current = null; // текущий выбранный элемент

//Последовательность точек панели на которые нажимал пользователь

private LinkedList<Point> curPLst = new LinkedList<Point>();

/**

* Последовательность из двух точек.

* Первая откуда, вторая куда пользователь переместил элемент

*/

private LinkedList<Point> moveP = new LinkedList<Point>();

/**

* точки, которые отмечает пользоваль, чтобы провести ребро

*/

private Point _p1;

private Point _p2;

/**

* Точки прямоугольника, который выбрал пользователь

*/

private Point rectUser1;

private Point rectUser2;

/**

* Создать новую сеть Петри

*/

public void newPetriNet(){…}

/**

* Установить кол-во фишек и надпись для выбранной позиции или

* установить надпись для выбранного перехода

*/

public void setFieldsV() {…}

/**

* Удалить выбранный элемент

*/

public void deleteSelected() {…}

/**

* Осуществить переход

*/

public void step() {…}

/**

* Занести id выделенных вершин в буфер для последующей вставки

*/

public void copyVertex() {…}

/**

* Вставить выделенные вершины

*/

public void pasteVertex() {…}

/**

* Пользователь выбрал вершину

* @param selectedValue

* @return левая нижняя точка выбранной вершины

*/

public Point2D.Double changeCurrent(Object selectedValue) {…}

/**

* Загрузить из xml файл

* @param in

*/

public void loadFromXml(File in) {…}

/**

* Сохранить в xml файл

* @param out

*/

public void saveToXml(File out) {…}

дополнительные private методы для работы программы …

}

Инструкция пользователя

Для работы в программе необходимо запустить файл PetriNet.java

Рис. 9. Интерфейс программы

Как видно из рисунка выше, интерфейс программы состоит из следующих элементов:

§ главное меню;

§ панель инструментов;

§ панель редактирования свойств вершины;

§ список вершин;

§ область построения сети Петри.

Главное меню содержит пункты, показанные на следующих рисунке:

Рис. 10. Пункты главного меню

При открытии файла или сохранение созданной сети открывается диалоговое окно выбора xml файла:

Рис. 11. Диалоговые окна открытия и сохранения сети Петри

Назначение кнопок панели инструментов:

Переключиться в режим выбора элементов сети Петри

Переключиться в режим добавления позиции

Переключиться в режим добавления перехода

Переключиться в режим добавления ребра

Горячие клавиши программы:

§ Ctrl+O - открыть созданную ранее сеть Петри;

§ Ctrl+S - сохранить созданную сеть Петри;

§ Ctrl+N - создать новую сеть Петри;

§ Ctrl+D - удалить выбранный(ые) элемент(ы) сети Петри;

§ S - выполнить разрешенные переходы.

При создании сети Петри необходимо переключиться в нужный режим, переместить курсор мыши в область построения и нажать левую кнопку мыши. В результате чего, будет добавлена вершина. Для соединения двух вершин нужно переключиться в режим добавления ребра, щелкнуть по первой вершине и удерживая левую кнопку мыши указать вторую. Если проведенное ребро «допустимо», то будет добавлено новое ребро, прилегающее к указанным вершинам. При добавлении позиции курсор, автоматически перемещается в поле ввода кол-ва фишек, а при добавлении перехода - в поле ввода надписи. После изменения параметров вершины, достаточно нажать клавишу Enter, чтобы изменения вступили в силу.

Рис. 12. Создание сети Петри.

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

.

Для копирования необходимо выделить отметить прямоугольную область и нажать сочетание клавиш Ctrl+C, для вставки из буфера обмена - Ctrl+V.

Рис. 13. Копирование и вставка элементов сети Петри.

При выборе из списка вершин названия вершины в области построения автоматически отмечается выбранная вершина.

Заключение

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

Таблица. Количество строк кода:

Имя класса

Назначение

Кол-во строк

Edge.java

Ребро графа

55

Position.java

Позиция

167

Transition.java

Переход

44

Vertex.java

Вершина графа

119

LabelVertex.java

Надпись вершины

19

PanelPetri.java

Область построения сети Петри

1162

PanelPointEdge.java

Дополнительная точка ребра

39

XmlIO.java

Методы для загрузки и сохранения в xml файл

62

PetriNetAboutBox.java

Окно дополнительной информации

139

PetriNetApp.java

Основной класс программы

16

PetriNetView.java

Интерфейс программы

690

Итого:

2512

графический редактор сеть петри

Список литературы

1. Норенков И.П. Основы автоматизированного проектирования: Учеб. для вузов. 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. - 336 с. ил. - (Сер. Информатика в техническом университете).

2. Котов В.Е. Сети Петри - М.: Наука. Главная редакция физико-математической литературы. 1984. -160 с.

3. Питерсон Дж. Теория сетей Петри и моделирование систем - М.: Мир, 1984. - 264 с., ил.

4. А.А. ВОЕВОДА, Д.В. ПРЫТКОВ. О применении сетей Петри в процессе объектно-ориентированного анализа и проектирования. Сборник научных трудов НГТУ. - 2009. - № 4(58). - 131-138.

5. Д.О. Саркенов. Применение сетей Петри при разработке протоколов. Ползуновский альманах №3, 2007г., ст 82,83.

6. Кей С. Хорстманн, Гари Корнел. Java 2. Библиотека профессионала. Том 1. Основы, 8-е издание.: Пер. с англ. - М.: ООО «И.Д. Вильямс», 2009. - 816 с. : ил. - Парал. тит. англ.

7. Кей С. Хорстманн, Гари Корнел. Java 2. Библиотека профессионала. Том 2. Тонкости программирования, 7-е издание.: Пер. с англ. - М.: ООО «И.Д. Вильямс», 2007. - 1168 с. : ил. - Парал. тит. англ.

Размещено на Allbest.ru


Подобные документы

  • Исследование методов моделирования, отличных от сетей Петри. Моделирование при помощи инструментария IDEF. Пример простейшей байесовской сети доверия. Анализ младшего разряда множителя. Сложение на сумматорах. Заполнение и анализ редактора сетей Петри.

    курсовая работа [2,6 M], добавлен 28.10.2013

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

    курсовая работа [1,0 M], добавлен 17.11.2009

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

    курсовая работа [1,3 M], добавлен 28.07.2013

  • Методы моделирования, отличные от инструментария "сети Петри". Пример моделирования стандартом IDEF0 процесса получения запроса браузером. Раскрашенные (цветные) сети Петри. Моделирование процессов игры стандартными средствами сетей Петри, ее программа.

    курсовая работа [1,6 M], добавлен 11.12.2012

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

    лабораторная работа [36,8 K], добавлен 03.12.2009

  • Изучение компьютерной программы – графического редактора Paint, ее возможности и основные приемы работы. Панель инструментов, редактирование рисунка. Составление и реализация школьных уроков в начальной школе по изучению графического редактора Paint.

    курсовая работа [865,0 K], добавлен 28.04.2014

  • Анализ инцидентов информационной безопасности. Структура и классификация систем обнаружения вторжений. Разработка и описание сетей Петри, моделирующих СОВ. Расчет времени реакции на атакующее воздействие. Верификация динамической модели обнаружения атак.

    дипломная работа [885,3 K], добавлен 17.07.2016

  • Анализ существующих решений системы поддержки принятия решений для корпоративной сети. Многоагентная система. Разработка концептуальной модели. Структура базы знаний. Разработка модели многоагентной системы на базе сетей Петри. Методика тестирования.

    дипломная работа [5,1 M], добавлен 19.01.2017

  • Разработка алгоритма и программы, которая позволяет создавать программное обеспечение для языка программирования Паскаль. Функциональная спецификация программы. Выбор и обоснование комплекса технических средств. Пользовательское меню и интерфейс.

    курсовая работа [1,3 M], добавлен 02.02.2014

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

    курсовая работа [3,2 M], добавлен 25.07.2013

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