66526
СОБЫТИЙНЫЕ МОДЕЛИ ДИСКРЕТНЫХ СИСТЕМ. ЯЗЫК МОДЕЛИРОВАНИЯ ESimPL
Лабораторная работа
Информатика, кибернетика и программирование
Ресурс может одновременно выделяться нескольким транзактам процессам. К статическим характеристикам процесса относятся: длительность; результат; потребляемые ресурсы; условия запуска активизации; условия останова прерывания.
Русский
2014-08-22
985 KB
7 чел.
Tu
Tu
Еi
Pj
A
B
А3
Тz
Нпст
Пст
2
Тm
Св
Зан
P1
eнПм
eнП1
eзО1
eзС1
eна1
eкПм
Т0
eка1
Тob
eоC1
eкП1
еоО1
eзС1
eна1
Тob
А1
А2
А4
А5
Тz
Нпст
Пст
P2
Тm
Св
Зан
P1
eнПм
eнП1
eзО1
eзС1
eна1
eкпм
Т0
eка1
Тob
eоС1
eкП1
еоО1
eзС1
eна1
Тob
А1
А2
0
Е0
Е1
Е2
Е3
Е4
eкп
- / Тz
Е0
Е1
Е4
Е3
P1=Св / Тob
- / Т0
Е2
- / 0
P2=Нпст / Тob
- / Тm
E0
Обслуживание в средстве S
Номера транзактов
E3
Ожидание в очереди Q
E3
E2
E1
Ожидание в очереди Q
3
2
1
0
5251
5366
5591
10000
t
Обслуживание в средстве S
Окончание процесса моделирования
Интервал времени, определяемый состояниями списков
Инициирующая секция (Е0)
Управляющая секция
Событийная секция Е1
Событийная секция Еn
Событийная секция ЕN
…
…
Список
событий
Список
транзактов
Инициализация системы
Объявление средства
equip1
Объявление очереди
queue1
Планирование Е1 через
время Т0
Планирование Е4 через
время Тм
Создание процесса current_process
Генерация приоритета
Pr
Планирование Е1 через
время Тz
Планирование Е2 через
время 0
Занятие средства
equip1
Занятие очереди
queue1
Планирование Е3 через
время Тob
P1
Освобождение средства
equip1
Планирование Е3 через
время Тob
Освобождение очереди
queue1
Удаление процесса current_process
Активизация нового процесса current_process
P1
Занятие средства
equip1
Вывод результатов
1
2
3
4
Изучение организации событийно-ориентированных моделей дискретных систем (ДС) на языке ESimPL.
Функциональные математические модели дискретных систем (ДС) представляются в виде совокупности статических и динамических объектов [1].
К статическим объектам относятся средства, ресурсы и очереди и их композиции (СМО, сети массового обслуживания и т.п.). Статические объекты существуют постоянно в системе. Статическими объектами могут быть ЭВМ, отдельные устройства, программные средства.
СРЕДСТВО (канал) это объект, в котором выполняется обслуживание (обработка) транзактов (заявок, задач), причем одновременно может обслуживаться только один транзакт. Средства имеют два состояния: "занято" и "свободно". Средства это объекты, в которых выполняются операции.
РЕСУРС (память) это объект (средство, запас), необходимый для выполнения процессов функционирования и распределяемый между ними. Ресурс может одновременно выделяться нескольким транзактам (процессам). Ресурс имеет состояния: «полностью свободен», «полностью занят» и множество состояний «частично занят».
Ресурс может быть активным и пассивным.
Активный ресурс это объект, в котором может выполняться обслуживание сразу нескольких заявок.
Пассивный ресурс это объект, распределяемый между заявками, но обслуживание заявок в нем не происходит. Эти заявки обслуживаются в этом случае в средстве.
ОЧЕРЕДЬ это объект, в котором транзакты ожидают обслуживания (обработки). В зависимости от детализации модели очереди могут иметь либо два состояния «занята» и «свободна», либо несколько состояний вида: «свободна», «занята одной заявкой», «занята двумя заявками» и т.д. вплоть до состояния «полностью занята».
К объектам динамического типа относятся транзакты, активности, процессы и события. Динамические объекты существуют не постоянно в системе, они создаются или появляются в системе и затем уничтожаются или уходят из системы. Основной характеристикой динамических объектов является время.
ТРАНЗАКТ (заявка) это некоторый объект, сообщение (заявка на обслуживание), который поступает извне на вход системы и подлежит обслуживанию (обработке), то есть это динамический объект, проходящий обслуживание (обработку) в системе, требование на обслуживание.
В рамках одной имитационной модели могут рассматриваться транзакты нескольких типов. Каждый транзакт характеризуется соответствующим алгоритмом (процессом) обработки и необходимыми для его реализации ресурсами системы. Учитывая это, прохождение транзакта по системе можно в некоторых случаях рассматривать как последовательную активизацию процессов, реализующих его обработку («обслуживание заявки»).
СОСТОЯНИЕ положение системы, совокупность (набор) значений внутренних параметров системы, множество наборов значений внутренних параметров системы. Все статические и динамические объекты системы, кроме событий, обладают состояниями.
АКТИВНОСТЬЮ является элементарное действие (операция, шаг) на данном уровне представления системы.
Активность характеризуется временем выполнения и потребляемыми ресурсами. Активности имеют два состояния: «выполняется» (существует) и «не выполняется» (не существует в данный момент модельного времени). Активность всегда связана со статическим объектом, которым она выполняется.
Логически связанный набор активностей образует ПРОЦЕСС, который можно рассматривать как объект, вмещающий или инициирующий эти активности. Некоторый процесс может выступать в роли активности в процессе более высокого уровня.
Любой процесс характеризуется совокупностью статических и динамических характеристик.
К статическим характеристикам процесса относятся:
В общем случае статические характеристики процесса не изменяются в ходе его реализации, однако при необходимости любая из них может быть представлена в модели как случайная величина, распределенная по заданному закону.
Динамической характеристикой процесса является его состояние (выполняется, не выполняется, активен, не активен (находится в состоянии ожидания ресурса)). Процесс может иметь два или более состояний.
СОБЫТИЕ представляет собой значимое мгновенное изменение функциональной модели, имеющее положение во времени и пространстве.
Возможны следующие события изменения:
К событиям изменения структуры системы относятся события создания, изменения и удаления объектов и связей, составляющих структуру системы.
События изменения состояний по виду объектов разделяются на две разновидности:
Например, окончание активности, то есть изменение состояния активности с «выполняется» на «не выполняется», является событием, совершение которого может инициировать последующие активности.
Функционирование ДС представляется как процесс прохождения транзактов (заявок) через систему. При прохождении транзакта через систему он может поступать на обслуживание в некоторый статический объект (средство). Если этот объект был в состоянии "свободен", то он переходит в состояние "занят".
Если транзакт поступает на вход статического объекта, который уже занят обслуживанием другого транзакта, то возможно образование очереди на входе статического объекта. В некоторых функциональных моделях очередь включается в статический объект "средство". В этом случае статический объект характеризуется не только своим состоянием, но и наличием очереди. Очередь характеризуется своим состоянием, размером и дисциплиной обслуживания заявок в очереди. Транзакт (заявка на обслуживание) в систему поступает извне. Поэтому составной частью функциональной модели, является модель источника входного потока транзактов, которая задает моменты появления транзактов и их параметры в модели.
Для описания функциональных моделей ДС существуют специальные языки. Эти языки разделяются на три вида [1]:
Отличия этих языков обусловлены их процедурной организацией. Процедура моделирующей программы в зависимости от вида применяемого языка описывает процесс, событие или активность.
Математическая модель в виде событийного графа используется для формализации процесса создания математической модели дискретной системы (ДС).
СОБЫТИЙНЫЙ ГРАФ представляет процесс функционирования ДС в терминах событий и отображает причинно-следственные связи между событиями и состоит из четырех типов вершин и четырех типов дуг (pис.1).
Вершины Дуги
1) 1)
2) 2)
3) 3)
4) 4)
Рис.1. Условно-графические обозначения элементов событийного графа
Вершина первого типа отображает событие Еi. В этой вершине выполняются все действия по изменению состояний соответствующих объектов ДС. Вершина может иметь любое количество входов и только один выход.
Вершина второго типа Pj отображает условное разветвление по логическому условию Pj. В этой вершине вычисляется логическое выражение или набор логических выражений fPj, в зависимости от истинности которых происходит переход по соответствующему выходу вершины. Вершина может иметь любое количество входов и два или более выходов. Каждый выход вершины помечается соответствующим значением набора логических выражений fPj, например, 0 или 1, да или нет. Выход вершины может также помечаться состоянием анализируемого статического объекта.
Вершина третьего типа A отображает распараллеливание выполнения процесса. Вершина может иметь любое количество входов и выходов.
Вершина четвертого типа B отображает окончание распараллеливания выполнения процесса. В этой вершине вычисляется логическое выражение fB окончания распараллеливания, в зависимости от истинности которого происходит переход к следующей вершине событийного графа. Выделяются две типовые функции fB: И (And) и ИЛИ (Or). В случае функции И вершина, следующая за вершиной окончания распараллеливания процесса, выполняется если все параллельные потоки процесса завершены. В случае функции ИЛИ вершина, следующая за вершиной окончания распараллеливания процесса, выполняется если завершен хотя бы один из параллельных потоков процесса. Завершение остальных потоков не порождает выполнения вершины, следующей после вершины B. Вершина B может иметь любое количество входов и только один выход.
Дуга первого типа отображает причинно-следственную связь между событиями Ei и Ev без задержки во времени (Т = 0 ), то есть это дуга мгновенного следования события Ev после события Ei.
Дуга второго типа с задержкой во времени Tu >= 0, то есть это дуга следования с задержкой. Дуга второго типа помечается величиной задержки Tu.
Дуга третьего типа отображает причинно-следственную связь отмены события Ev после события Ei без задержки во времени (Т = 0), то есть это дуга мгновенной отмены события Ev после события Ei.
Дуга четвертого типа отображает причинно-следственную связь отмены события Ev после события Ei с задержкой во времени Tu >= 0, то есть это дуга отмены с задержкой события Ev после события Ei. Дуга четвертого типа помечается величиной задержки Tu.
Построение событийного графа состоит из следующих шагов:
На первом шаге выделяются средства, ресурсы, очереди, транзакты, активности и процессы, составляющие модель дискретной системы.
Выделение средств и очередей может производиться по математической модели ДС в виде композиции СМО: каждому элементу СМО типа "канал обслуживания" ставится в соответствие элемент функциональной модели "средство", каждому элементу СМО типа "накопитель" элемент "очередь" с теми же параметрами.
Активности и процессы выделяются по описанию процесса функционирования ДС, прежде всего по временной диаграмме процесса функционирования. Элементарные действия, время выполнения которых неравно нулю, отображаются активностями. Элементарные действия, время выполнения которых равно нулю (длительность настолько мала, что ею можно пренебречь), отображаются событиями. Связанные последовательности действий, начинающиеся с появления заявки (транзакта) в системе и заканчивающиеся уходом заявки (транзакта) из системы, объединяются в процессы.
Поскольку за время машинного эксперимента через модель ДС проходит множество заявок, все процессы включаются как элементы в глобальный процесс процесс моделирования Пм.
На втором шаге по совокупности выделенных статических и динамических объектов определяется множество событий модели ДС. Для этого для каждого объекта определяются все возможные состояния и все возможные изменения состояний, которым сопоставляются события в модели. Средство Si может иметь только два состояния "занято" и "свободно". Для него возможны только два изменения состояний: с "занято" на "свободно" и наоборот. Этим изменениям состояний сопоставляются следующие события:
езSi событие занятия средства Si,
еоSi событие освобождения средства Si.
Конечная очередь Qh с максимальной длиной L имеет L+1 состояние и 2L изменений состояний, которым могут быть сопоставлены события. Однако, при составлении событийного графа удобнее выделять два состояния очереди: "занята данной заявкой" и "свободна от данной заявки". В этом случае возможны только два изменения состояния очереди, которым соответствуют два события:
езQh событие занятия очереди Qh заявкой,
еоQh событие освобождения очереди Qh заявкой.
Активности и процессы имеют по два состояния: "выполняется" и "не выполняется". Для них возможны два изменения состояний: с "не выполняется" на "выполняется" и наоборот. Этим изменениям сопоставляются следующие события:
енаj событие начала активности аj,
екаj событие конца активности аj,
енПu событие начала процесса Пu,
екПu событие конца процесса Пu.
Процессу моделирования Пм также соответствуют два события:
енПм событие начала процесса моделирования Пм,
екПм событие конца процесса моделирования Пм.
На третьем шаге на основе анализа причинно-следственных связей между изменениями состояний моделируемой ДС совокупность вершин, соответствующих выделенным событиям, соединяется дугами и строится событийный граф.
На рисунке 2 приведен пример простейшей модели ДС в виде СМО, состоящей из бесконечного накопителя Н и канала К. Источник И генерирует входной поток заявок на обслуживание N1, N2 выходной поток обслуженных заявок.
Рис. 2. Система массового обслуживания
Соответствие элементов модели в виде СМО и в виде событийного графа для рассматриваемого примера приведено в таблице 1.
Таблица 1. Выделение объектов событийного графа
Модель СМО |
Событийная модель |
|
Шаг 1. Выделение |
Шаг 2. Выделение событий |
|
Статические объекты |
События |
|
Каналы обслуживания |
||
Канал К |
Средство equip1 |
eзС1, eоС1 |
Накопители |
||
Накопитель Н |
Очередь queue1 |
eзО1, eоО1 |
Действия |
Динамические объекты |
|
Обслуживание в К |
Активность a1 |
eна1, eка1 |
Последовательности действий |
Процессы |
|
Обслуживание заявки в СМО |
Процесс обслуживания П1 |
eнП1, eкП1 |
Процесс моделирования Пм |
eнПм, eкПм |
Исходный событийный граф, представляющий имитационную модель процесса функционирования СМО приведен на рисунке 3.
Окончание процесса моделирования определяется по окончанию заданного интервала модельного времени Тм, поэтому событие eнПм связано дугой второго типа с событием eкПм. Связь во времени между событиями появления заявок в системе eнП отображается дугой второго типа, помеченной интервалом времени между появлениями заявок Тпз.
В событийном графе используются вершины второго типа, которым соответствуют следующие условия:
Р1 анализ состояния средства equip1, значения: Зан "занято",
Св "свободно";
Р2 анализ состояния очереди queue1, значения: Пст "пуста",
Нпст "непуста".
Дуги второго типа помечаются величинами задержки:
Тm время моделирования,
Т0 время поступления первой заявки после начала моделирования,
Тz интервал времени между поступлениями заявок,
Тob время обслуживания заявки в канале (длительность активности).
Рис. 3. Исходный событийный граф имитационной модели СМО
На следующем этапе математическая модель ДС в виде событийного графа преобразуется в программную модель на языке ESimPL. Это осуществляется в два шага:
Программная модель на событийно-ориентированном языке представляет собой совокупность инициирующей, управляющей и событийных СЕКЦИЙ (блок-схема программной модели в приложении 3).
Связь между событийными секциями осуществляется через механизм планирования системы моделирования. Порядок выполнения событийных секций определяется управляющей секцией по списку событий. В связи с этим событийный граф, полученный на предыдущем этапе необходимо преобразовать в программно-реализуемую форму в виде совокупности событийных секций. Событийным секциям соответствуют подграфы событийного графа, которые удовлетворяют следующим условиям:
Таким образом, событийная секция объединяет группу событий, т.е. является сложным событием или МАКРОСОБЫТИЕМ.
Взаимосвязанная последовательность событий, следующих друг за другом мгновенно (без задержки времени), может быть объединена в МАКРОСОБЫТИЕ. Макрособытию соответствует подграф событийного графа, внутри которого вершины соединены только дугами первого типа.
Поскольку в подграфах может быть несколько входов и выходов, которые необходимо различать на уровне макрособытий, введем понятие точек входа и выхода.
ТОЧКОЙ ВХОДА называется вершина подграфа, в которую входит одна или несколько дуг второго, третьего или четвертого типа. Вершина окончания распараллеливания процесса всегда является точкой входа подграфа.
ТОЧКОЙ ВЫХОДА подграфа называют вершину, из которой выходит дуга второго, третьего или четвертого типа. У подграфа макрособытия может быть несколько точек выхода или ни одной.
Выделим подграфы и соответствующие им макрособытия (событийные секции) для рассматриваемого примера (см. рис. 3). Для этого (рис. 4):
В результате этого мы получим следующие макрособытия:
Е0 безусловное макрособытие начала моделирования, точек входа нет, одна точка выхода O1 вершина А1;
Е1 безусловное макрособытие поступления заявки в СМО, одна точка входа I1 - вершина eнП1, одна точка выхода O1 вершина А2;
Е2 условное макрособытие начала обслуживания заявки в СМО, одна точка входа I1 вершина P1, одна точка выхода O1 вершина eна1;
Е3 условное макрособытие окончания обслуживания заявки в СМО, одна точка входа I1 вершина eка1, одна точка выхода: O1 вершина eна1;
Е4 безусловное макрособытие окончания моделирования, одна точка входа I1 - вершина eкПм, точек выхода нет.
Подграфы макрособытий Е0 Е4 удовлетворяют вышеуказанным условиям. Макрособытия Е1 и Е2 могут быть объединены в одно макрособытие. В данном примере они разделены с точки зрения удобства моделирования.
Рис. 4. Событийный граф процесса функционирования СМО
в программно-реализуемой форме
Событийный граф, состоящий из макрособытий Е0 Е4, приведен на
рисунке 5. Макрособытия связаны только дугами второго типа. Дуги помечаются парой <условие> / <время>, прочерк означает безусловный переход. Если у макрособытия больше одного выхода, то они помечаются. Условие определяется как дизъюнкция С1С2…СN, где n=(1, …, N) номер пути (ветви) от точки входа макрособытия до рассматриваемой точки выхода, Сn= P1&P2&…&PK конъюнкция условий следования Pk от точки входа до точки выхода макрособытия.
В программной модели (приложение 4) каждому макрособытию (Е0 Е4) соответствует процедура (событийная секция).
Содержание макрособытий.
Макрособытие Е0 (начало процесса моделирования):
Макрособытие Е1 (начало процесса обслуживания заявки в СМО):
Макрособытие Е2 (занятие средства):
Макрособытие Е3 (конец процесса обслуживания заявки в СМО):
Макрособытие Е4 (конец процесса моделирования):
В приложении 3 приведены блок-схемы программной модели и событийных секций (макрособытий). В приложении 4 приведен код программной модели на языке ESimPL.
Среда имитационного событийного моделирования дискретных систем ESimPL включает CASE-средство разработки моделей и библиотеку поддержки имитационного моделирования (рис. 6).
Среда ESimPL ориентирована на процесс обучения, имеет графический ввод и вывод, что значительно снижает трудоемкость разработки, ввода и проверки модели, повышает наглядность процесса моделирования, позволяет проводить различные эксперименты с моделью, по ходу эксперимента изменять его условия и наблюдать за состоянием всех объектов и самой системы моделирования. Все это повышает эффективность обучения моделированию. Среда имитационного моделирования ESimPL базируется на использовании событийных графов [2, 3] для описания процесса функционирования исследуемой системы.
Рис. 6. Схема разработки имитационных событийных моделей в среде ESimPL
CASE-средство разработки моделей позволяет визуально моделировать поведение дискретных систем на языке событийных графов и генерировать код программной модели в виде совокупности процедур макрособытий на языке программирования высокого уровня с использованием библиотеки поддержки имитационного моделирования. Библиотека поддержки представляет собой совокупность классов на языке программирования модели.
Выделяются два уровня представления событийных моделей: уровень математической модели событийный граф, и уровень программной модели в виде совокупности процедур макрособытий на языке программирования высокого уровня с использованием библиотеки поддержки имитационного моделирования. В связи с этим событийная система моделирования дискретных систем включает два языка: язык визуального моделирования и язык программирования модели.
Для визуального представления событийных моделей были выделены графические и внутренние элементы модели.
Графические элементы составляют основу языка визуального событийного моделирования. Элементами модели, имеющими свои графические обозначения являются событие, условие, начало и окончание распараллеливания процесса и дуги четырех типов: мгновенного следования, следования с задержкой, мгновенной отмены и отмены события с задержкой. Основным графическим элементом модели является событие (рис. 7).
Рис. 7. События изменений состояний объектов модели в среде ESimPL
Внутренними элементами, не представляемыми графически, являются статические и динамические объекты и переменные модели. Статическими объектами являются средства (каналы), очереди и ресурсы. Динамическими объектами процессы и активности. Каждому объекту ставится в соответствие два события изменения состояния: занятие и освобождение для статического объекта (за исключением очереди, для которой добавляется событие удаления), начало и конец выполнения для динамического. Переменные разделяются на две разновидности: переменные, относящиеся ко всей модели в целом и переменные, индивидуальные для каждого процесса.
Языком программирования моделей среды ESimPL является язык высокого уровня С++, дополненный библиотекой поддержки имитационного моделирования. Библиотека поддержки предоставляет низкоуровневый интерфейс разработки программной модели, связанный с языком программирования. Язык моделирования ESimPL является развитием событийно-ориентированного языка SMPL [1] и разработан с использованием объектно-ориентированного подхода. Программная модель генерируется на языке С++, в тексте которой используются операторы языка ESimPL, реализованные в виде вызова методов граничного класса TModel библиотеки поддержки имитационного моделирования. Язык моделирования определяется набором операторов, используемых при разработке программной модели. Таким образом, язык моделирования ESimPL на уровне программной модели является расширением языка С++, то есть, образован операторами вызова специальных подпрограмм и языковыми средствами С++.
Подпрограммы реализуют основные и вспомогательные операции над объектами модели и в совокупности составляют систему имитации во времени функционирования модели, описанной на языке ESimPL.
Информационное обеспечение системы ESimPL состоит из файлов, хранимых на жестком магнитном диске, и списков информационных структур, располагающихся в оперативной памяти ЭВМ.
В файлах хранятся сгенерированная программная модель на языке С++ Builder (файл с расширением cpp) и полное описание событийной модели в файле XML-формата. В оперативной памяти системой создаются информационные структуры, в которых размещаются список поступивших на выполнение транзактов и список запланированных событий, а также данные о статических объектах (средствах, очередях и ресурсах).
В списке выполняемых транзактов для каждого транзакта (процесса), существующего в данный момент модельного времени, хранятся, помимо его уникального номера (идентификатора), значения переменных процесса
Р1, ..., РN. Переменные процесса это параметры, которыми различаются транзакты в случае неоднородного потока заявок, а также накапливаемые данные, например количество циклов обслуживаний. Список транзактов организован таким образом, что информационные структуры ушедших из системы транзактов не удаляются из памяти, а помечаются как «свободные» и будут использованы при последующих вызовах оператора создания нового транзакта.
В рассматриваемой модели (приложение 4) транзакты отличаются только приоритетами, поэтому в информационной структуре транзакта добавлен параметр Pr, значение которого генерируется в момент появления транзакта в системе (событийная секция Е1) и используется при занятии очереди Q (событийная секция Е2).
Список событий представляет собой (рис. 8) список, в котором для каждого планируемого события E хранится номер транзакта J, которому принадлежит данное событие, и время Т, когда должно произойти это событие. Список упорядочен в порядке возрастания времени Т, то есть во главе списка стоит ближайшее в будущем планируемое событие. E0 указатель на первый элемент списка событий.
Сгенерированный CASE-средством ESimPL текст программной модели в дальнейшем сохраняется в cpp-файле среды программирования Borland C++ Builder, в которой совместно с библиотекой поддержки имитационного моделирования компилируется в исполняемый код программной модели.
Рис. 8. Структура списка событий
Программная модель имеет два режима вывода информации о моделировании:
и три режима моделирования:
В режиме трассировки выводится в упорядоченном виде список происходящих событий, начиная с заданного времени. Последовательность событий (состояний модели) может быть представлена в виде временной событийной диаграммы.
Для следующей последовательности событий (табл. 2), полученных в режиме трассировки, на рисунке 9 приведен пример временной диаграммы.
Таблица 2. Пример трассировки модели
Время события |
Номер события |
Номер транзакта |
5251 |
1 |
0 |
5251 |
2 |
1 |
5366 |
3 |
2 |
5591 |
3 |
3 |
Номер события i в таблице трассировки определяет событийную секцию и макрособытие Ei, выполняемое в этот момент модельного времени отмечаемое на временной диаграмме.
Рис. 9. Временная событийная диаграмма процесса моделирования
Сплошные линии со стрелками на временной событийной диаграмме обозначают наличие временной причинно-следственной связи между соответствующими событиями в соответствии с макрособытийным графом (см. рис. 5). Пунктирная линия обозначает ожидание обслуживания транзактом в очереди. Уточнение состояния статических и динамических объектов можно выполнить в режиме прогона модели с выводом состояний системы.
В приложении 3 приведены алгоритмы событийных секций Е0 Е4 для событийной модели СМО (см. рис. 4 и 5). В приложении 4 приведена программная модель СМО. В приложении 5 приведено руководство по использованию системы моделирования ESimPL.
Результаты всех прогонов вывести в файлы результатов, а затем распечатать. Во втором режиме производить вывод 10 состояний, начиная с модельного времени 1000. Распечатать программную модель.
Приложение 1
Язык ESimPL
При описании операций, входящих в язык ESimPL, будем использовать следующие обозначения:
Е идентификатор события,
Т моменты совершения событий,
J процесс (указатель процесса),
F средство (указатель средства),
Q очередь (указатель очереди),
R ресурс (указатель ресурса),
Main_process указатель главного процесса процесса моделирования (процесс с номером 0),
current_process указатель текущего процесса.
Переменная времени языка ESimPL является вещественной переменной двойной точности. Выбор единицы времени в языке устанавливается значениями, участвующими в планировании событий, а не указывается явным образом.
mymodel = new TMyModel() оператор создает объект (экземпляр) класса модели и возвращает его адрес в памяти, который сохранятся в переменной mymodel (имя переменной может быть изменено); происходит инициализация начальных состояния внутренних переменных и списков, а также устанавливается нулевое значение времени моделирования (переменная current_time). Этот оператор не имеет выходных переменных и должен быть выполнен прежде всех остальных операторов языка. В дальнейшем все операторы языка вызываются через переменную модели, так как являются методами класса модели.
mymodel->printHeader() оператор вывода на дисплей информации о системе моделирования. Оператор не несет никакой смысловой нагрузки и без ущерба для логики работы программной модели может быть удалён.
mymodel->printAndSetupOptions() оператор установки опций работы системы моделирования (режим моделирования и режим вывода информации, а также дополнительные параметры) посредством диалога с пользователем в режиме «вопрос ответ». Данный оператор не возвращает никакого значения.
F = mymodel->Create_equip("<имя F>") оператор, регистрирующий в системе моделирования новое средство F. Строка <имя F> представляет символьное имя средства (количество символов не ограничено), под которым средство фигурирует в выходных документах моделирования. Оператор возвращает указатель на экземпляр класса средства, описывающего поведение средства. Например, объявление средства:
equip1 = mymodel->Create_equip("Банкомат");
Объявление средства канал:
equip1=mymodel->Create_equip("Канал");
Q = mymodel->Create_queue("<имя Q>", Length, dis_obs) оператор, регистрирующий в системе моделирования новый объект Q типа «очередь». Строка <имя Q> представляет символьное имя очереди (количество символов в строке не ограничено), под которым очередь фигурирует в выходных документах моделирования. Целочисленный параметр Length определяет ёмкость (максимальную длину) очереди (нулевое значение этого параметра означает неограниченную ёмкость), в случае превышения данного не нулевого значения во время работы программной модели будет сгенерирована исключительная ситуация и работа системы будет остановлена с соответствующим кодом ошибки. Целочисленный параметр dis_obs определяет дисциплину обслуживания (постановки) элементов в очередь; возможны три значения этого параметра:
Оператор возвращает указатель на экземпляр класса очереди.
Например, объявление очереди:
queue1=mymodel->Create_queue("Лоток фрезерного станка",12,1);
создает очередь с именем <Лоток фрезерного станка >, ёмкостью равной 12-ти и дисциплиной постановки новых элементов в очередь по принципу FIFO.
Объявление бесконечной приоритетной очереди канала:
queue1=mymodel->Create_queue("Очередь к банкомату",0,0);
R = mymodel->Create_resource("<имя R>", volume) оператор создает новый объект R типа «ресурс» и регистрирует его в списке ресурсов с именем <имя R> (количество символов не ограничено). Параметр volume определяет максимальный целочисленный объем ресурса, который предоставляется процессам для их нужд. Метод возвращает указатель на экземпляр класса ресурса.
Например, объявление ресурса:
resource1 = mymodel->Create_resource("Рабочие цеха", 15);
mymodel->schedl (E, TI, J) оператор планирования события Е для процесса J через время TI; помещает в список событий новый элемент с параметрами: Е номер события; J указатель на экземпляр процесса, которому принадлежит это событие, TI - время, через которое должно произойти это событие. Этот оператор не возвращает никакого значения. Например планирование события 1 через время T0 распределенное по экспоненциальному закону для процесса моделирования Main_process:
mymodel->schedl(1,mymodel->fnp(T0),mymodel->Main_process);
Параметр класса модели Main_process соответствует главному процессу моделирования, который имеет нулевой идентификатор.
mymodel->cause(E, J) оператор определения текущего события Е, принадлежащего процессу J; удаляет из списка событий элемент, который находится в его вершине, устанавливает значение текущего времени current_time моделирования равным соответствующему времени совершения событий и возвращает значения номера события Е и указателя на экземпляр процесса J. Например:
mymodel->cause(eventNumber, current_process);
dT = mymodel->cancel(E, J, S) оператор отмены события; отыскивает в списке запланированных событий первое (ближайшее) по времени совершения событие E для процесса J, удаляет соответствующий элемент из списка и возвращает значение dT разности между временем, когда должно было наступить событие, и текущим модельным временем. Логический параметр S определяет реакцию системы при отсутствии искомого события в списке запланированных событий. При значении данного параметра равного «истина» система сгенерирует нефатальную ошибку №1, с занесением в отчет её параметров; процесс выполнения программной модели прерван не будет. При значении данного параметра равного «ложь», установленного по умолчанию, будет сгенерирована фатальная ошибка №9, при этом процесс выполнения программной модели будет прерван и выведена информация об ошибке. Например:
dT = mymodel->cancel(2, current_process, true);
Удаляет из списка событий ближайшее по времени событие под номером 2 для процесса current_process. Отсутствие такового события не приведет к завершению работы программной модели.
mymodel->cancelM(J) оператор отмены всех запланированных событий процесса J; удаляет из списка запланированных событий все события, принадлежащие процессу J. Отсутствие в списке искомых событий не влияет на продолжение работы модели, то есть никаких ошибок сгенерировано не будет.
mymodel->cancelAll() оператор отмены всех событий; удаляет все элементы из списка запланированных событий (очищает список).
mymodel->enque(Q, J, P) оператор занятия очереди, помещает процесс J в очередь Q, где параметр Q определяет указатель на экземпляр очереди в моделирующей программе, т.е. значение, возвращаемое оператором объявления очереди mymodel->Create_queue(). Позиция постановки процесса J в очередь Q определяется её дисциплиной обслуживания, которая указывается при создании очереди. Если очередь имеет дисциплину постановки по приоритету процессов, то третьим параметром P указывается целочисленный приоритет процесса. Первым в очереди будет процесс с наибольшим приоритетом. Если приоритеты некоторых процессов совпадают, то эти элементы располагаются в порядке поступления. Этот оператор не возвращает никакого значения.
J = mymodel->head( Q ) оператор-функция освобождения процесса J, стоящего первым, из очереди Q (этот процесс удаляется из очереди). Оператор возвращает указатель на экземпляр этого процесса.
L = mymodel->length( Q ) оператор-функция определения длины очереди Q, значение функции равно числу элементов, находящихся в очереди Q.
T = mymodel->remove(Q, J) оператор-функция удаления из очереди Q процесса J. Функция возвращает время нахождения процесса J в очереди Q.
J = mymodel->first( Q ) оператор-функция определения процесса J, стоящего первым в очереди Q; функция возвращает указатель процесса J, если в очереди нет процессов, то нулевой указатель. Состояние очереди после выполнения оператора не изменяется.
mymodel->reserv(F, J) оператор занятия средства F процессом J. Параметр F представляет указатель на экземпляр средства в моделирующей программе, т.е. значение, возвращаемое оператором объявления средства mymodel->Create_equip(). Этот оператор не возвращает никакого значения.
mymodel->releas( F ) оператор освобождения средства F. Этот оператор не возвращает никакого значения.
S = mymodel->status( F ) оператор-функция определения состояния S средства F. Если средство занято, возвращается логическое значение «истина». Если средство не занято, то возвращается логическое значение «ложь».
J = mymodel->Status( F ) оператор-функция определения состояния средства F. Если средство занято, то возвращается указатель на занявший его процесс, иначе возвращается нулевой указатель.
mymodel->occupy(R, J, V) оператор занятия ресурса R процессом J, где параметр R определяет имя ресурса в моделирующей программе, т.е. значение, возвращаемое оператором объявления ресурса mymodel->Create_resource(). Целочисленный параметр V, определяет объем ресурса, который занимает процесс J. Этот оператор не возвращает никакого значения.
mymodel->exempt(R, J) оператор освобождения ресурса R от процесса J. Оператор возвращает значение, равное объёму ресурса, которое занимал процесс J.
V = mymodel->volume(R) оператор-функция определения занятого объема V ресурса R. Значение функции равно количеству занятого ресурса R.
J = mymodel->NewProcess() оператор создает и регистрирует в системе новый процесс. Оператор возвращает указатель на созданный экземпляр процесса.
mymodel->DeleteProcess( J ) оператор удаления из системы процесса J. Этот оператор не возвращает никакого значения.
mymodel->end_parallel( J, E, H, Fun) оператор окончания распараллеливания хода выполнения процесса J. Оператор соответствует вершине четвертого типа, которая в макрособытийном графе является точкой входа в макрособытие, и соответственно оператор будет первый в функции-обработчике данного макрособытия. Оператор возвращает логическое значение «истина» если условие окончания не наступило и должен быть осуществлен досрочный выход из функции-обработчика (макрособытие не выполняется), в противном случае возвращается логическое значение «ложь» и выполнение функции-обработчика продолжается (макрособытие выполняется). Оператор имеет следующие параметры:
mymodel->report() оператор вывода в отчет о моделировании статистических данных о статических объектах: средствах, очередях и ресурсах. В ходе выполнения моделирующей программы эти данные фиксируются и накапливаются. Статистические данные выводятся в табличной форме в конце прогона программы или в любой указанной точке программы с помощью оператора без параметров. В таблице указывается среднее время пребывания в занятом состоянии, процент занятого времени и число запросов резервирования, обращенных к каждому из средств моделирующей программы. Для каждой из очередей, определенных в программе, в таблице указываются среднее время ожидания, среднее квадратическое отклонение времени ожидания, средняя максимальная длина очередей и число элементов, входивших в очередь.
mymodel->output(varname, var) оператор вывода в отчет о моделировании значения переменной var, поименованное текстовой строкой varname. Этот оператор не возвращает никакого значения.
В языке ESimPL имеются три оператора, генерирующие псевдослучайные величины с вероятностными распределениями определенного вида.
X = mymodel->fnp(M) оператор-функция генерирует псевдослучайные вещественные значения, распределенные по экспоненциальному закону со средним M. Параметр М может принимать вещественным значения двойной точности.
X = mymodel->irand(M1, M2) оператор-функция генерирует псевдослучайные вещественные значения X, распределенные по равномерному закону на отрезке [M1 .. M2].
X = mymodel->irand_int(M1, M2) оператор-функция генерирует псевдослучайные равновероятностные целочисленные значения X, где
M1 X M2.
X = mymodel->uniform() оператор-функция генерирует псевдослучайные вещественные значения X, распределенные по равномерному закону на интервале (0,1).
mymodel->cur_time() оператор, возвращающий текущее модельное время.
Переменные модели разделяются на переменные состояния статических объектов, переменные процесса и вспомогательные переменные.
Обращение (использование) переменных процесса выполняется по указателям (именам) статических объектов с помощью соответствующих операторов, например, занятие средства equip1 текущим процессом current_process:
mymodel->reserv(equip1,current_process);
Для процессов обслуживания заявок в модели определяются переменные процесса. Это переменные, значения которых могут быть различны для различных экземпляров процессов. Например, если маршрут прохождения заявки через систему зависит от типа заявки, то вводится переменная процесса тип заявки Type (устанавливается флажок Переменная процесса) (рис. П1.1).
Рис. П1.1. Определение переменной процесса Type
Вспомогательные переменные (или, просто, переменные) это переменные времени для дуг второго типа и остальные переменные (например, количество заявок в прогоне N длительность прогона) (рис. П1.2).
Рис. П1.2. Определение вспомогательной переменной N
Изменения переменных процесса и вспомогательных переменных выполняется в окне спецификации событийной вершины (вершины первого типа) в поле «Модификации переменных модели». В этом окне в режиме текстового редактора задаются все операторы изменения переменных в синтаксисе языка C++. Например, на рисунке П.1.3 приведено присвоение значения 1 переменной процесса Type. При выборе в выпадающем списке имени переменной процесса к нему автоматически добавляется current_process.
Рис. П1.3. Присвоение значения переменной процесса Type
При выполнении моделирующей программы возможно возникновение следующих исключительных ситуаций: фатальные и не фатальные ошибки.
Возникновение фатальной ошибки приводит к остановке процесса выполнения программной модели, при этом в отчет выводиться следующая информация:
В следующем списке представлены все фатальные ошибки, которые отслеживаются системой моделирования. Номер пункта соответствует номеру ошибки в системе:
Нефатальная ошибка или нежелательная динамическая ситуация не прерывает процесс выполнения программной модели, но при ее обнаружении система моделирования выводит в отчет информацию о произошедшей ситуации следующего вида:
В системе предусмотрено отслеживание следующих нефатальных ошибок, где номер пункта соответствует номеру ошибки в системе моделирования:
Последние две нежелательные динамические ситуации сигнализируют разработчику о неконтролируемом росте числа динамических объектов модели, что замедляет работу программной модели, так как системе приходиться обрабатывать списки большой длины. В большинстве случаев возникновение данных ситуации обусловлено некоторой ошибкой в разработанной модели.
Номер группы и номер в группе |
Т поступления заявки |
Т обслуживания канала |
Длина очереди |
Окончание процесса моделиро-вания |
||
Закон распред. |
Интервал или |
Закон распред. |
Интервал или |
|||
1 группа |
||||||
|
равном. |
0... 68 |
равном. |
0... 50 |
Беск. |
По ч.з. |
|
экспон. |
20 |
равном. |
0...34 |
3 |
По Т |
|
равном. |
0...34 |
равном. |
0...30 |
5 |
По ч.з. |
|
экспон. |
34 |
равном. |
0...60 |
Беск. |
По ч.з. |
|
равном. |
0...90 |
экспон. |
40 |
4 |
По Т |
|
экспон. |
55 |
экспон. |
50 |
8 |
По Т |
|
равном. |
0...68 |
экспон. |
25 |
Беск. |
По ч.з. |
|
экспон. |
24 |
экспон. |
20 |
5 |
По Т |
|
равном. |
0...34 |
равном. |
0...30 |
10 |
По ч.з. |
|
экспон. |
40 |
равном. |
0...60 |
Беск. |
По ч.з. |
|
равном. |
0... 102 |
равном. |
0... 80 |
6 |
По Т |
|
экспон. |
60 |
равном. |
0...110 |
12 |
По Т |
|
равном. |
0...40 |
экспон. |
15 |
Беск. |
По ч.з. |
|
экспон. |
25 |
экспон. |
22 |
7 |
По Т |
|
равном. |
0...60 |
экспон. |
21 |
14 |
По ч.з. |
|
экспон. |
35 |
экспон. |
20 |
Беск. |
По ч.з. |
|
равном. |
0...50 |
равном. |
0...45 |
8 |
По Т |
|
экспон. |
40 |
равном. |
0...60 |
16 |
По Т |
|
равном. |
0... 120 |
равном. |
0...40 |
Беск. |
По ч.з. |
|
экспон. |
50 |
равном. |
0...50 |
9 |
По Т |
|
экспон. |
250 |
экспон. |
280 |
Беск. |
По ч.з. |
|
равном. |
0...400 |
экспон. |
240 |
1 |
По Т |
|
экспон. |
150 |
экспон. |
180 |
2 |
По Т |
|
равном. |
0...600 |
экспон. |
360 |
3 |
По ч.з. |
|
экспон. |
400 |
равном. |
0...960 |
Беск. |
По ч.з. |
Номер группы и номер в группе |
Т поступления заявки |
Т обслуживания канала |
Длина очереди |
Окончание процесса моделиро-вания |
||
Закон распред. |
Интервал или |
Закон распред. |
Интервал или |
|||
2 группа |
||||||
|
равном. |
0...1000 |
равном. |
0...1080 |
4 |
По Т |
|
экспон. |
250 |
равном. |
0...720 |
5 |
По Т |
|
равном. |
0...400 |
равном. |
0...600 |
6 |
По Т |
|
экспон. |
150 |
экспон. |
240 |
Беск. |
По ч.з. |
|
равном. |
0...600 |
экспон. |
390 |
7 |
По ч.з. |
|
экспон. |
400 |
экспон. |
460 |
8 |
По Т |
|
равном. |
0...1000 |
экспон. |
520 |
9 |
По Т |
|
экспон. |
15 |
равном. |
49 |
Беск. |
По ч.з. |
|
равном. |
150 |
равном. |
0...70 |
10 |
По Т |
|
экспон. |
60 |
равном. |
0...112 |
11 |
По ч.з. |
|
равном. |
0...80 |
равном. |
0...70 |
Беск. |
По ч.з. |
|
экспон. |
45 |
экспон. |
20 |
12 |
По Т |
|
равном. |
0...100 |
экспон. |
40 |
13 |
По Т |
|
экспон. |
50 |
экспон. |
45 |
14 |
По Т |
|
равном. |
0... 120 |
экспон. |
55 |
Беск. |
По ч.з. |
|
равном. |
0... 68 |
равном. |
0...60 |
7 |
По ч.з. |
|
экспон. |
20 |
равном. |
0...36 |
3 |
По Т |
|
равном. |
0...34 |
равном. |
0...32 |
5 |
По Т |
|
экспон. |
34 |
равном. |
0...64 |
Беск. |
По ч.з. |
|
равном. |
0...90 |
экспон. |
42 |
4 |
По ч.з. |
|
экспон. |
55 |
экспон. |
52 |
8 |
По Т |
|
равном. |
0...68 |
экспон. |
30 |
Беск. |
По ч.з. |
|
экспон. |
24 |
экспон. |
22 |
5 |
По Т |
|
равном. |
0...34 |
равном. |
0...32 |
10 |
По ч.з. |
|
экспон. |
40 |
равном. |
0...70 |
Беск. |
По ч.з. |
Рис. П3.1.
Рис. П3.2. Событийная секция Е0
Рис. П3.2. Событийная секция Е1
Рис. П3.2. Событийная секция Е2
Рис. П3.2. Событийная секция Е3
Рис. П3.2. Событийная секция Е4
Приложение 4
Программная модель СМО на языке ESimPL
#include <iostream>
#include "ClassImit.h"
class TMyProcess :public TProcess {
public:
int Pr; //Приоритет заявки
__fastcall TMyProcess(void); // конструктор класса процесса
};
__fastcall TMyProcess::TMyProcess(void) :TProcess()
{
Pr=0;
}
// переменные пользователя
long T0=0; // Время поступления первой заявки
long Tz=800; // Время поступления заявки
long Tob=400; // Время обслуживания в канале
long Tm=120000; // Время моделирования
typedef TModel<TMyProcess> TMyModel; // Тип класса модели
TMyModel * mymodel; // Переменная класса модели
TMyProcess * current_process; // Переменная текущего процесса
int eventNumber; // Переменная текущего макрособытия
// Переменные статических объектов
Equip equip1; // переменная средства 'Ср'
Queue queue1; // переменная очереди 'Оч'
void E0(void)
{
mymodel = new TMyModel();
mymodel->printHeader();
mymodel->printAndSetupOptions();
equip1=mymodel->Create_equip("Ср"); // регистрация в модели средства 'Ср'
queue1=mymodel->Create_queue("Оч",0,0); // регистрация в модели очереди 'Оч'
mymodel->schedl(1,T0,mymodel->Main_process);
mymodel->schedl(4,Tm,mymodel->Main_process);
}
void E1(void)
{
current_process=mymodel->NewProcess(); // новый процесс
current_process->Pr=mymodel->irand_(0,1);
mymodel->schedl(2,0,current_process);
mymodel->schedl(1,mymodel->irand(0,Tz),mymodel->Main_process);
}
void E2(void)
{
if(!mymodel->status(equip1)) // условие, что средство свободно
{
mymodel->reserv(equip1,current_process); // занятие средства 'Ср'
mymodel->schedl(3,mymodel->fnp(Tob),current_process);
}
else{
mymodel->enque(queue1,current_process, current_process->Pr); // занятие очереди 'Оч'
}
}
void E3(void)
{
mymodel->releas(equip1); // освобождение средства 'Ср'
mymodel->DeleteProcess(current_process); // удалить процесс
if(mymodel->length(queue1)>0) // проверка, текущей длины queue1
{
current_process = mymodel->head(queue1); // взятие первого элемента из очереди 'Оч'
mymodel->reserv(equip1,current_process); // занятие средства 'Ср'
mymodel->schedl(3,mymodel->fnp(Tob),current_process);
}
}
void E4(void)
{
mymodel->report();
}
int main(int argc, char* argv[])
{
E0();
do {
mymodel->cause(eventNumber, current_process);
switch (eventNumber)
{
case 1: E1(); break;
case 2: E2(); break;
case 3: E3(); break;
case 4: E4(); break;
}
}
while (eventNumber !=4);
delete mymodel;
getch();
}
Приложение 5.
Руководство по использованию
системы моделирования ESimPL
Файл \ Новый
Модель \ Объекты модели
При этом:
Рис. П5.1. Ввод статических объектов
Рис. П5.2. Ввод активностей и процессов
Рис. П5.3. Определение событий
Модель \ Переменные
Рис. П5.4. Определение переменных модели
Переменная приоритета заявки Pr является переменной процесса.
выделить элемент,
событие,
логическое условие,
начало распараллеливания процесса,
конец распараллеливания процесса,
определение макрособытия (режим работы с макрособытиями),
мгновенное следование,
следование с задержкой,
мгновенная отмена события,
отмена события с задержкой.
Рис. П5.5. Панель инструментов
Рис. П5.6. Исходный событийный граф
Рис. П5.7. Определение операторов для событийных вершин (Енп1 для рассматриваемого примера)
1 многострочное поле ввода операторов события, служит для ввода операторов изменения переменных модели на языке С++. Для ввода имен переменных, операций и функций служат поля 2 и 3.
2 Поле выбора переменной из списка переменных модели.
3 Кнопки выбора операций, функций и переменных.
Назначение кнопок:
irand_int функция mymodel->irand_int(М1,М2) генерации случайного целого числа равномерно распределенного в интервале от М1 до М2;
irand функция mymodel->irand(М1,М2) генерации случайного числа равномерно распределенного в интервале от М1 до М2;
fnp функция mymodel->fnp(М) генерации случайного числа распределенного по экспоненциальному закону со средним М;
(0,1) функция mymodel->uniform() генерации случайного числа распределенного по равномерному закону в интервале от 0 до 1;
модельное время ввод текущего модельного времени посредством вызова функции mymodel->cur_time();
текущий процесс ввод текущего процесса current_process;
вывод в отчет функция mymodel->output(varname, var) вывода в отчет о моделирования значения некоторой переменной var под именем varname;
cancelM, cancelAll функции удаления событий из списка событий.
Остальные кнопки служат для ввода знаков операций, скобок и знака разделения операторов.
4 Установка выполнения операторов до (флажок установлен) или после события.
Рис. П5.8. Определение параметров условных вершин Р1 и Р2 для рассматриваемого примера
Рис. П5.9. Определение параметров дуг первого типа
Рис. П5.10. Определение параметров дуг второго типа
Трансляция \ Проверка
Если ошибок нет, то будет выдано сообщение «Ошибок не обнаружено!».
Обнаруженные синтаксические ошибки показываются в дополнительном окне сообщений «Ошибки правил построения», которое располагается под окном редактора. Если выполнить двойной щелчок мышью по сообщению, то элемент графа с ошибкой выделяется (индицируется).
Файл\Сохранить
Рис. П5.11. Событийный граф в программно-реализуемой форме
Правка \ Удалить макрособытие
Рис. П5.12. Окно изменения макрособытия для вершины графа
Трансляция \ Проверка ПР
Если ошибок нет, то будет выдано сообщение «Граф программно-реализуемый!».
Обнаруженные ошибки выделения макрособытий показываются в дополнительном окне сообщений «Ошибки правил построения», которое располагается под окном редактора. Если выполнить двойной щелчок мышью по сообщению, то элемент графа с ошибкой выделяется (индицируется).
Файл\Сохранить как …
Трансляция \ Транслировать
Если в графе есть ошибки, программа сообщит об этом, выдав сообщение в дополнительном окне сообщений «Ошибки правил построения».
Если трансляция прошла успешно, то откроется окно «программная модель» (рис. П5.13).
Рису. П.13. Окно программной модели с текстом программы
Файл \ Сохранить
Далее выполняется контроль и калибровка программной модели, планирование и выполнение компьютерного эксперимента.
Файл \ новый \ другое… \ новый \ мастер консоли \ Ок,
Файл \ Сохранить проект как …,
Проект \ Компилировать модуль,
Рис. П5.14. Задание параметров прогона
В текстовый файл (в примере 1.txt) будет выведена трассировка и отчет о моделировании (рис. П5.15)
Рис. П5.15. Трассировка и отчет о моделировании
================================================================================
Трассировка модели
Время Событие Процесс
1358,43989379559 2 5
1361,29768605288 3 1
1713,87066255684 1 0
1713,87066255684 2 1
2165,34928434095 1 0
2165,34928434095 2 6
2247,92818315725 3 2
2297,48222296823 1 0
2297,48222296823 2 2
2329,51703845941 3 3
================================================================================
Отчет о моделировании
Время: 120000
Средство Среднее время Использование Число
занятости % заявок
Ср 385,59 97,36 303
Очередь Время ожидания Длина очереди
мат. ожида- среднекв. мат. ожида- макси- всего
ние откл. ние мум
Оч 5727,93 2814,05 14,18 29 294
Список ресурсов пуст
Рис. П5.16. Задание параметров прогона
В текстовый файл ( в примере 2.txt) будет выведена трассировка состояний системы и отчет о моделировании (рис. П5.17).
Рис. П5.17. Трассировка состояний модели и отчет о моделировании
Выделить названия списков событий (с них начинается очередное состояние модели), выполняемые события (первое в списке событий) и изменения в состояниях (относительно предыдущего состояния). Объяснить происходящие изменения. Для рассматриваемого примера фрагмент списка:
Список событий
Время события Номер события Номер процесса
1358,43 2 5
1361,29 3 1
1713,87 1 0
120000 4 0
Список средств
Название Процесс Запросов Занятость
Ср 1 0 0
Очередь 'Оч'
Длина Процессов Занятость
3 3 0
Процессы в очереди 'Оч'
Номер процесса Приоритет Время
2 0 268,12
3 0 441,88
4 0 598,50
Список ресурсов пуст
Список событий
Время события Номер события Номер процесса
1361,29 3 1
1713,87 1 0
120000 4 0
Список средств
Название Процесс Запросов Занятость
Ср 1 0 0
Очередь 'Оч'
Длина Процессов Занятость
4 4 0
Процессы в очереди 'Оч'
Номер процесса Приоритет Время
2 0 268,12
3 0 441,88
4 0 598,50
5 0 1358,43
Список ресурсов пуст
Объяснение.
В момент времени 1358,43 происходит событие 2 для процесса 5 процесс 5 занимает очередь Оч поскольку средство Ср занято процессом 1 и в очереди уже ожидают процессы 2, 3 и 4.
А также другие работы, которые могут Вас заинтересовать | |||
55001. | Загадкове Середньовіччя | 49.5 KB | |
Основні деталі одягу: лляна сорочка плащ поступово зявляються панчохи короткі штани Носили також рукавички спочатку як робочий одяг а згодом як предмет розкоші. Жіночий одяг: на початку середньовіччя жіночий одяг мав відрізнятись від чоловічого але з часом ситуація дещо змінилась. | |||
55002. | Подорож до країни Чистоти і Порядку | 51.5 KB | |
Сьогодні ми друзі відправимось в груподорож. Вчитель Школярі які живуть на цій станції не розчісують і не підстригають волосся. Хочу я напитись чаю Але що це Сам не знаю Самовар мій повний вщерть Утікає шкереберть Що зробилось Вчитель Діти чому від Бруднулі всі речі повтікали З`являється Умивальник . | |||
55003. | Подорож моєї мрії | 88.5 KB | |
Вдале географічне розташування Буковель оточений амфітеатром красивих гір створює комфортні умови для відпочинку в Буковелі. Унікальні кліматичні умови надзвичайна краса карпатських гір живописні ландшафти а також джерела мінеральних вод залучають на відпочинок і лікування в Буковелі велику кількість туристів. Відпочинок в Буковелі добрий у будьякий час року але в першу чергу Буковель вважається гірськолижним курортом тому кращий час його відвідин зимові місяці. Любителі гір з різних куточків світу з'їжджаються на гірськолижний... | |||
55004. | Инвестиции: понятие, виды, источники финансирования. Факторы, определяющие динамику инвестиционного спроса | 20.39 KB | |
Инвестиции — долгосрочные вложения капитала с целью получения прибыли. Инвестиции являются неотъемлемой частью современной экономики. От кредитов инвестиции отличаются степенью риска для инвестора (кредитора) — кредит и проценты необходимо возвращать в оговорённые сроки независимо от прибыльности проекта | |||
55005. | Подорож по країні здоров’я | 49.5 KB | |
А ще допомагає лікувати хворих зелена аптека. Аптека зелена зелена аптека Від тебе і мене вона не далеко. Зелена аптека це трави і квіти Що в кошик збирають дорослі і діти. Зелена аптека що бачиш навкруг Це наш помічник і хороший наш друг. | |||
55006. | У СВІТ ФОРМУЛ СКОРОЧЕНОГО МНОЖЕННЯ | 212 KB | |
МЕТА: Закріпити знання формул скороченого множення та вмінь використовувати ці формули при розкритті дужок, спрощенні та знаходженні значень виразів. Показати красу математики, перетвори захоплюючу подорож, де кожний зможе проявити себе. | |||
55007. | ПОДОРОЖ | 55 KB | |
The topic of our lesson is “Travelling“. By the end of the lesson you will be able: To recognize and understand new words and word-combinations when reading the sentences. To understand main ideas from the text when listening to it. To use words and word-expressions when speaking. | |||
55008. | Сім подорожей по Черкащині | 5.22 MB | |
Черкаси Головне місто області її адміністративний промисловий і культурний центр знаходиться на правому мальовничому березі Дніпра у верхній частині Кременчуцького водосховища найбільшого на усьому дніпровському водному каскаді. Місто росло й розвивалось. | |||
55009. | Вчора – дошколярики, а завтра – школярі | 56.5 KB | |
Мета: виявити обсяг знань дітей про звуковий склад слова, уміння ділити слова на склади, пригадувати слова із заданим звуком на початку, в середині і в кінці слова; поскладове читання;... | |||