Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Календарь событий






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

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

Однако порядок исполнения событий относительно друг друга обычно не определён. Множество запланированных в календаре событий иногда называют множеством будущих событий (Future Event Set - FES).

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

Событие в модели глобальной ТКС инициирует некоторую “деятельность” в имитируемых объектах, которая влечёт изменение атрибутов объектов и такие операции над календарём, как установка в календарь новых событий или отмена запланированных событий. После завершения всех связанных с событием изменений в системе управление передаётся календарю событий, который удаляет из очереди только что отработавшее событие и в случае, если в очереди остались события, приступает к выполнению следующего шага имитационного эксперимента.

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

Интерфейс структуры данных, реализующей множество будущих событий, содержит следующие операции:

- извлечение элемента с минимальным временем происхождения (extract-min),

- вставка нового элемента (insert),

- отмена запланированного события (cancel).

Структуру данных, описывающую событие, всегда можно представить как пару (t, a), где a – «нечто», указывающее на код обработки события, а t – время происхождения события.

В библиотеке TCNsym календарь событий реализован с использованием класса стандартной библиотеки языка C++ (STL) std:: multiset, т.е. в качестве структуры данных календаря событий используется сбалансированное дерево, а именно красно-черное дерево или AVL-дерево в зависимости от реализации STL. Указанная реализация находится в классе TCNsym:: MultisetScheduler.

В качестве сущности, указывающей на код обработки события, в библиотеке TCNsym используется класс библиотеки Boost.Function, при этом типом обработчика события является тип boost:: function< void ()>.

Для связывания экземпляра класса, функции-члена и аргументов, с которыми она будет вызвана, в библиотеке TCNsym используется классы-связыватели библиотеки Boost.Bind.

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.