Вы находитесь на странице: 1из 58

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ

Федеральное государственное автономное

образовательное учреждение

высшего образования

«МОСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ»

Факультет: «Машиностроение»

Кафедра: «Автоматика и управление»

Дисциплина: «Проектирование систем управления»

Отчёт по курсовой работе

Тема: «Имитационная модель»

Группа 181-251

Выполнил:

Мартыщенко Игорь Максимович

Проверил:

Березин Евгений Сергеевич

Москва 2021
Содержание
1. Особенности проведения имитационного моделирования с применением РДО-
технологий..................................................................................................................................3
1.1. Основные сведения об имитационном моделировании..................................................3
1.2. Основы РДО – языка..........................................................................................................5
2.Формулировка проблемы и цели имитационного моделирования....................................6
2.1. Цель имитационного моделирования...............................................................................6
2.2.Задача имитационного моделирования.............................................................................7
3.Определение релевантных ресурсов и законов функционирования системы................10
3.1. Описание ресурсов. Типы ресурсов, параметры, типы данных...................................10
3.2. Описание операций и образцов.......................................................................................12
4.Описание кадров анимации.................................................................................................28
5. Описание последовательности...........................................................................................31
6. Описание объекта прогона..................................................................................................33
7. Результаты трассировки......................................................................................................34
Вывод:.......................................................................................................................................37
Код программы:.......................................................................................................................39

2
1. Особенности проведения имитационного моделирования с
применением РДО-технологий

1.1. Основные сведения об имитационном моделировании


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

При имитационном моделировании в среде РДО (Ресурсов, Действий и


Операций), необходимо четко представлять и оперировать следующими
основными понятиями.
Модель — совокупность объектов РДО-языка, описывающих какой-то
реальный объект, собираемые в процессе имитации показатели, кадры
анимации и графические элементы, используемые при анимации, результаты
трассировки.
Прогон — это единая неделимая точка имитационного эксперимента. Он
характеризуется совокупностью объектов, представляющих собой исходные
данные и результаты, полученные при запуске имитатора с этими исходными
данными.

3
Проект — один или более прогонов, объединенных какой-либо общей
целью.

Например, это может быть совокупность прогонов, которые направлены на


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

1.2. Основы РДО – языка


Программный комплекс RAO-editor предназначен для подготовки
исходных данных, моделирования и просмотра результатов в системе
имитационного моделирования на базе РДО-технологии. Основная цель
данного комплекса - обеспечение пользователя легким в обращении, но
мощным средством разработки текстов моделей на языке РДО, обладающим
большинством функций по работе с текстами программ, характерных для
сред программирования.
В соответствии с основной целью программный комплекс решает
следующие задачи:

4
 синтаксический разбор текста модели и настраиваемая подсветка
синтаксических конструкций языка РДО;
 открытие и сохранение моделей;
 расширенные возможности для редактирования текстов моделей;
 автоматическое завершение синтаксических конструкций языка
(т.н. code completion или автозавершение);
 поиск и замена фрагментов текста;
 навигация по тексту моделей с помощью закладок;
 наличие нескольких буферов обмена для хранения фрагментов
текста;
 вставка синтаксических конструкций языка и заготовок
(шаблонов) для написания элементов модели;
 настройка отображения текста моделей, в т.ч. скрытие
фрагментов текста и масштабирование;
 запуск и остановка процесса моделирования, а также чтение
результатов моделирования с диска;
 обработка ошибок при запуске процесса моделирования;
 обеспечение пользователя справочной информацией.

Объектами исходных данных являются:
 типы ресурсов (с расширением .rtp);
 ресурсы (с расширением .rss);
 образцы операций (с расширением .pat);
 операции (с расширением .opr);
 точки принятия решений (с расширением .dpt);
 константы, функции и последовательности (с расширением .fun);
 кадры анимации (с расширением .frm);
 требуемая статистика (с расширением .pmd);

5
 прогон (с расширением .smr).

Объекты, создаваемые РДО-имитатором при выполнении прогона:


 результаты (с расширением .pmv);
 трассировка (с расширением .trc).

Программный комплекс состоит из трех частей:


1. Интерфейса пользователя, IDE for RAO-simulator, версия 2.0.0.46
(файлы RAO-editor.exe, RAO-editor.dll);
2. Файлов справок скомпилированный HTML-файл справки (RAO-
language.chm - справка по языку РДО, RAO-editor.chm - справка по
программному комплексу);
3. РДО-имитатора, rdosim for Windows версия 3.0.0.0.

6
2.Формулировка проблемы и цели имитационного моделирования
2.1. Цель имитационного моделирования
Используя РДО-метод, спроектировать модель покупки билетов,
характеризующуюся наличием обслуживания и очередью заявок.

2.2. Задача имитационного моделирования


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

7
Рис.1. Блок-схема часть 1

8
Рис.2. Блок-схема часть 2

9
3.Определение релевантных ресурсов и законов функционирования
системы
3.1. Описание ресурсов. Типы ресурсов, параметры, типы данных
В среде РДО моделирование ведется на основе ресурсов и действий над
ними. Ресурсы представляют собой объекты реального мира, над которыми
совершаются операции.
Ресурсы могут быть двух видов: постоянные и временные. Постоянные
ресурсы всегда присутствуют в системе. Временные ресурсы поступают в
СДС и покидают ее в процессе функционирования, они могут быть
результатом работы СДС.
Ресурсы определяют начальное состояние глобальной базы данных
модели и описываются в отдельном объекте (с расширением .rss).

Типы ресурсов определяют структуру глобальной базы данных


программы (модели) и их описывают в отдельном объекте (имеет
расширение .rtp).

В моей работе ресурс один, и называется он – Библиотека.

Программа описания ресурсов(вкладка rss):

$Resources

Библиотека:Библиотеки trace 0 0 * * * * * * * * * * * * * * * 0

$End

Программа описания типа ресурсов (вкладка rtp):

$Resource_type Библиотеки : permanent

$Parameters

Количество_клиентов_в_очереди:integer

Всего_клиентов:integer

Занятость_окна_1:(Свободен,Занят,Сломан)= Свободен

10
Занятость_окна_2:(Свободен,Занят)= Свободен

Занятость_окна_3:(Свободен,Занят)= Свободен

Состояние_оплаты_1:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Состояние_оплаты_2:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Состояние_оплаты_3:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Место_свободно_1:(Да,Нет) = Да

Место_свободно_2:(Да,Нет) = Да

Место_свободно_3:(Да,Нет) = Да

Смещение_очереди_1:(Да,Нет) = Нет

Смещение_очереди_2:(Да,Нет) = Нет

Смещение_очереди_3:(Да,Нет) = Нет

Состояние_окна_1:(Работает,Перерыв,Возвращается) = Работает

Состояние_окна_2:(Работает,Перерыв,Возвращается) = Работает

Состояние_окна_3:(Работает,Перерыв,Возвращается) = Работает

Обслужено_клиентов:integer

$End

Начальные значения параметров ресурса задают в позиционном


соответствии с порядком следования параметров в описании типа. Для тех
параметров, у которых при описании типа указано значение по умолчанию,
вместо начального значения можно указать символ "*".

11
3.2. Описание операций и образцов
Образец типа operations содержит список релевантных ресурсов, (то
есть ресурсов, участвующих в описываемой образцом операции),
предусловия начала операции (задаваемые по значениям параметров
релевантных ресурсов) и конверторы преобразования состояния ресурсов,
участвующих в операции, в ее начале и в конце. В данном типе образцов
имеются также выражения, по которым вычисляются длительности
выполнения операций, описываемыми данными образцами.

Операции определяют содержимое базы знаний программы (модели) и


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

Программа описания операций (вкладка opr):

$Operations

Приход_клиента:Образец_приход_клиента

Обслуживание_клиента_1 :Образец_обслуживание_клиента_1

Обслуживание_клиента_2 :Образец_обслуживание_клиента_2

Обслуживание_клиента_3 :Образец_обслуживание_клиента_3

Оплата_1:Образец_Оплата_1

Оплата_2:Образец_Оплата_2

Оплата_3:Образец_Оплата_3

Осовобождение_места_1:Образец_Осовобождение_места_1
12
Осовобождение_места_2:Образец_Осовобождение_места_2

Осовобождение_места_3:Образец_Осовобождение_места_3

Смещение_очереди_1:Образец_Смещение_очереди_1

Смещение_очереди_2:Образец_Смещение_очереди_2

Смещение_очереди_3:Образец_Смещение_очереди_3

Перерыв_окна_1:Образец_Перерыв_окна_1

Перерыв_окна_2:Образец_Перерыв_окна_2

Перерыв_окна_3:Образец_Перерыв_окна_3

Возвращение_окна_1:Образец_Возвращения_окна_1

Возвращение_окна_2:Образец_Возвращения_окна_2

Возвращение_окна_3:Образец_Возвращения_окна_3

$End

Образцы составляют совместно с операциями процедурную часть


программы на РДО-языке. Они представляют собой знания о
функционировании моделируемой системы (знания о предметной
области), записанные в виде модифицированных продукционных правил в
соответствии с синтаксисом языка. Описание всех образцов содержится в
объекте образцов (с расширением .pat). Описание образца имеет
следующий формат:

$Pattern <имя_образца> : <тип_образца> [ <признак_трассировки> ]

[ $Parameters <описание_параметров_образца> ]

$Relevant_resources <описание_релевантных_ресурсов_образца>

[ <способ_выбора> ]

13
$Time = <выражение_времени>

$Body <тело_образца>

$End

Образец прихода клиента

$Pattern Образец_приход_клиента : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = Распределение_Паусона

$Body

Город

Convert_event

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди + 1

Всего_клиентов set

Город.Всего_клиентов + 1

$End

Образец Перерыв окна 1

$Pattern Образец_Перерыв_окна_1 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 3

$Body

Город

Convert_event

Состояние_окна_1 set Перерыв

$End
14
Образец Перерыв окна 2

$Pattern Образец_Перерыв_окна_2 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 5

$Body

Город

Convert_event

Состояние_окна_2 set Перерыв

$End

Образец Перерыв окна 3

$Pattern Образец_Перерыв_окна_3 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 7

$Body

Город

Convert_event

Состояние_окна_3 set Перерыв

$End

Образец Возвращение окна 1

$Pattern Образец_Возвращения_окна_1 : operation trace

$Relevant_resources

15
Город:Библиотека Keep Keep

$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_1 = Перерыв

first

Convert_begin

Состояние_окна_1 set Возвращается

Convert_end

Состояние_окна_1 set Работает

$End

Образец Возвращение окна 2

$Pattern Образец_Возвращения_окна_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_2 = Перерыв

16
first

Convert_begin

Состояние_окна_2 set Возвращается

Convert_end

Состояние_окна_2 set Работает

$End

Образец Возвращение окна 3

$Pattern Образец_Возвращения_окна_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_3 = Перерыв

first

Convert_begin

Состояние_окна_3 set Возвращается

Convert_end

Состояние_окна_3 set Работает

$End

17
Образец смещения очереди 1

$Pattern Образец_Смещение_очереди_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди > 0 and

Город.Занятость_окна_1 = Свободен

and Город.Состояние_окна_1 = Работает

first

Convert_begin

Смещение_очереди_1 set Да

Convert_end

Смещение_очереди_1 set Нет

$End

Образец смещения очереди 2

$Pattern Образец_Смещение_очереди_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

18
$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди > 0 and

Город.Занятость_окна_2 = Свободен

and Город.Состояние_окна_2 = Работает

first

Convert_begin

Смещение_очереди_2 set Да

Convert_end

Смещение_очереди_2 set Нет

$End

Образец смещения очереди 3

$Pattern Образец_Смещение_очереди_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

19
Choice from Город.Количество_клиентов_в_очереди > 0 and

Город.Занятость_окна_3 = Свободен

and Город.Состояние_окна_3 = Работает

first

Convert_begin

Смещение_очереди_3 set Да

Convert_end

Смещение_очереди_3 set Нет

$End

Образец Оплата 1

$Pattern Образец_Оплата_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

Choice from Город.Смещение_очереди_1 = Да

first

Convert_begin

Состояние_оплаты_1 set Оплачивает

20
Convert_end

Состояние_оплаты_1 set Оплатил

$End

Образец Оплата 2

$Pattern Образец_Оплата_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

Choice from Город.Смещение_очереди_2 = Да

first

Convert_begin

Состояние_оплаты_2 set Оплачивает

Convert_end

Состояние_оплаты_2 set Оплатил

$End

Образец Оплата 3

$Pattern Образец_Оплата_3 : operation trace

21
$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

Choice from Город.Смещение_очереди_3 = Да

first

Convert_begin

Состояние_оплаты_3 set Оплачивает

Convert_end

Состояние_оплаты_3 set Оплатил

$End

Образец Освобождение места 1

$Pattern Образец_Осовобождение_места_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

22
Choice from Город.Состояние_оплаты_1 = Оплатил

first

Convert_begin

Место_свободно_1 set Нет

Convert_end

Место_свободно_1 set Да

$End

Образец Освобождение места 2

$Pattern Образец_Осовобождение_места_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

Choice from Город.Состояние_оплаты_2 = Оплатил

first

Convert_begin

Место_свободно_2 set Нет

Convert_end

Место_свободно_2 set Да

23
$End

Образец Освобождение места 3

$Pattern Образец_Осовобождение_места_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

Choice from Город.Состояние_оплаты_3 = Оплатил

first

Convert_begin

Место_свободно_3 set Нет

Convert_end

Место_свободно_3 set Да

$End

Образец Обслуживание клиента 1

$Pattern Образец_обслуживание_клиента_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = экспоненциальное_распределение(0.1)

24
$Body

Город

Choice from Город.Количество_клиентов_в_очереди>0 and

Город.Занятость_окна_1 = Свободен

first

Convert_begin

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди - 1

Занятость_окна_1 set Занят

Convert_end

Занятость_окна_1 set Свободен

Обслужено_клиентов set Город.Обслужено_клиентов + 1

$End

Образец Обслуживание клиента 2

$Pattern Образец_обслуживание_клиента_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = экспоненциальное_распределение(0.1)

$Body

25
Город

Choice from Город.Количество_клиентов_в_очереди>0 and

Город.Занятость_окна_2 = Свободен

first

Convert_begin

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди - 1

Занятость_окна_2 set Занят

Convert_end

Занятость_окна_2 set Свободен

Обслужено_клиентов set Город.Обслужено_клиентов + 1

$End

Образец Обслуживание клиента 3

$Pattern Образец_обслуживание_клиента_3 : operation trace


$Relevant_resources
Город:Библиотека Keep Keep
$Time = экспоненциальное_распределение(0.1)
$Body
Город
Choice from Город.Количество_клиентов_в_очереди>0 and
Город.Занятость_окна_3 = Свободен
first
Convert_begin
Количество_клиентов_в_очереди set
Город.Количество_клиентов_в_очереди - 1

26
Занятость_окна_3 set Занят
Convert_end
Занятость_окна_3 set Свободен
Обслужено_клиентов set Город.Обслужено_клиентов + 1
$End

27
4.Описание кадров анимации
Описание кадров производится в отдельном объекте, который является
исходным для системы отображения. Этот объект имеет расширение .frm.
Кадр представляет собой прямоугольную область экрана, в которой
производится отображение. Он состоит из фоновой картинки и переменных
элементов (элементов отображения или спрайтов), состав, форма, размеры и
расположение которых определяются состоянием системы и, следовательно,
могут изменяться во время просмотра кадра.

Описание кадра имеет следующий формат:

$Frame <имя_кадра>

[ Show_if <условие_показа_кадра> ]

$Back_picture = <описание_фоновой_картинки>

[ <описание_элементов_отображения> ]

$End

Описание фоновой картинки имеет следующий формат:

[ <цвет_фона> ] (<размеры_кадра> | <имя_файла_фона>)

Цвет фона является необязательным параметром. Цвет фона задаёт


цвет части кадра, которая находится за пределами фоновой картинки. Цвет за
даётся тремя численными константами целого типа, каждое число должно
находится в диапазоне 0…255, оно задаёт интенсивность одной из трёх
состовляющих: первое – красной, второе – зелёной и третье - синей.

28
В курсовой работе цвет фона выбран жёлтым:
$Back_picture = <255 255 0 > fon

Для описания элементов отображения (спрайтов), необходимо


сделать запись в формате:

описания безусловного множества:


Show

<элемент_отображения> { <элемент_отображения> }

Элемент отображения (спрайт) имеет следующий формат:

<тип_элемента> [ <свойства_элемента> ]

Тип элемента задают зарезервированным словом, в данной


работе использовалось два типа:

Текстовый элемент (text) имеет формат:

text [ <X-координата>, <Y-координата>, <ширина>, <высота>,

<цвет_фона>, <цвет>, [<способ_размещения>] <содержимое> ]

Битовая карта (bitmap) имеет формат:

bitmap [ <X-координата>, <Y-координата>,

<имя_файла_битовой_карты> [ , <имя_файла_маски> ] ]

Для создания элемента отображения в виде битового образа


произвольной формы необходимы два файла: файл изображения и файл
маски. Оба этих файла должны иметь формат аппаратно независимой
битовой карты (BMP-формат). Расширение файлов должно быть .bmp.

29
Рис.3. Общий вид ИМ в процессе прогона в начале.

Рис.4. Общий вид ИМ в процессе прогона в середине.

30
Рис.5. Общий вид ИМ в процессе прогона в конце.

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

Описание последовательности следует за описанием констант в


объекте символьных констант, функций и последовательностей (с
расширением .fun) и в общем случае имеет вид:

$Sequence <имя_последовательности> :

<тип_значения_последовательности>

$Type = <тип_последовательности>

<значение_базы_генератора>

$Body <тело_последовательности> $End


Для данной системы закон функционирования принят тип
последовательности - by_hist, экспоненциальное- последовательность
псевдослучайных чисел, распределенных по Пауссону и экспоненте.

$Sequence Распределение_Паусона: real


$Type = by_hist 123456789
$Body
0 0.02 0.025
0.02 0.04 0.055
0.04 0.06 0.091
0.06 0.08 0.055
0.08 0.1 0.01
$End
32
$Sequence Равномерный_интервал: real
$Type = uniform 987654321
$End

$Sequence экспоненциальное_распределение: real


$Type = exponential 987654321
$End

33
6. Описание объекта прогона
В объекте прогона (с расширением .smr) указывают ряд необходимых
для управления прогоном данных и режимов. Этот объект состоит из двух
частей. Первая часть содержит имена файлов, содержащих необходимые
объекты и режимы прогона.

Далее в первой части объекта в произвольном порядке записываются


дескрипторы, описывающие имена объектов и режимы. Формат дескриптора
следующий:

<зарезервированное_слово> = <значение>

Model_name = library
Resource_file = library
OprIev_file = library
Statistic_file = library
Results_file = library
Trace_file = library
Frame_file = library
Frame_number = 1
Show_mode = Animation
Show_rate = 10000.0
Terminate_if Time_now >= 16

34
7. Результаты трассировки
Статистика (с расширением .pmd) имитационной модели:

$Results

Длина_очереди :trace watch_par

Библиотека.Количество_клиентов_в_очереди

Занятость_окна1 :trace watch_state

Библиотека.Занятость_окна_1 = Занят

Занятость_окна2 :trace watch_state

Библиотека.Занятость_окна_2 = Занят

Занятость_окна3 :trace watch_state

Библиотека.Занятость_окна_3 = Занят

Всего_клиентов: get_value

Библиотека.Всего_клиентов

Всего_обслужено :get_value

Библиотека.Обслужено_клиентов

Средняя_скорость_прихода_клиентов: get_value

Библиотека.Всего_клиентов/Time_now

Пропускная_способность :get_value

Библиотека.Обслужено_клиентов/Time_now

$End

Полученные результаты:

35
Трассировка состояния ресурсов.

Информация о событии располагается на отдельной строке, которая


имеет следующий формат:

E<тип_события> <время> <информация_о_событии>

Строка трассировки события начинается символом "E".

Второй символ строки определяет тип события.

Трассировка состояния ресурсов включает в себя информацию обо всех


изменениях состояния ресурсов.

36
Показатели трассировки в начале прогона:

Показатели трассировки в конце прогона:

NORMAL_TERMINATION – нормальное завершение моделирования


при выполнении условия окончания;

16 - модельное время окончания

37
Вывод:
Наша система представлена в виде одноканальной СМО с буферным
накопителем.

Проведем сравнение характеристик нашей системы, полученных


аналитическим и экспериментальным способами.

К таким характеристикам относится:

ρ - загрузка обслуживающего аппарата

L - длина очереди

Pn − Функция распределения Пуассона

λ - интенсивность поступления заявок

μ - интенсивность обработки заявок

Аналитический способ:

На вход системы поступает простейший Пуассоновский поток , т.е.


F(t)= 1. 5∗t , а время обслуживания распределяется по экспоненциальному

закону F*(t)=1-exp(-2,2*t),

ρ≤1 (т.е. обслуживающий прибор справляется с загрузкой).


а также

Тогда справедливо следующее выражение:



−μt −μt λ
ρ=∫ λ∗t∗μ∗¿ e dt= λμ∫ te dt= ¿
0 μ
Так как, λ=22,5 , а μ=33
22.5
Следовательно ρ= 33 =0,681

38
ρ2
А длина очереди L равна , откуда L =1,454
1−ρ
(22,5)1 −22,5
Функция распределения Пуассона. P1= ∗e = 0,38 *E^-8
1!
.

Экспериментальный метод:

На момент окончания прогона было получено ряд значений


параметров, а именно:

Из результатов видно, что λ=21,47 , а μ=31,32 .


21.47
Следовательно : ρ= 31,35 = 0,687

А длина очереди равна : L = 1,48

(21,47)1 −21,47
Функция распределения Пуассона P1= ∗e = 1,017*E^-8
1!

Сравнивая результаты эксперимента с результатами полученными


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

±5 % , что позволяет нам судить о том, что система с потоком


приходящих заявок справляется. Имитационная модель оптимизирована.

39
Код программы:

PAT

$Pattern Образец_приход_клиента : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = Распределение_Паусона

$Body

Город

Convert_event

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди + 1

Всего_клиентов set

Город.Всего_клиентов + 1

$End

$Pattern Образец_Перерыв_окна_1 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 3

$Body

Город

Convert_event

Состояние_окна_1 set Перерыв

$End

40
$Pattern Образец_Перерыв_окна_2 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 5

$Body

Город

Convert_event

Состояние_окна_2 set Перерыв

$End

$Pattern Образец_Перерыв_окна_3 : irregular_event trace

$Relevant_resources

Город:Библиотека Keep

$Time = 7

$Body

Город

Convert_event

Состояние_окна_3 set Перерыв

$End

$Pattern Образец_Возвращения_окна_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep


41
$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_1 = Перерыв

first

Convert_begin

Состояние_окна_1 set Возвращается

Convert_end

Состояние_окна_1 set Работает

$End

$Pattern Образец_Возвращения_окна_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_2 = Перерыв

first

Convert_begin

Состояние_окна_2 set Возвращается

Convert_end

Состояние_окна_2 set Работает

$End

42
$Pattern Образец_Возвращения_окна_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(1.9,0.3)

$Body

Город

Choice from Город.Состояние_окна_3 = Перерыв

first

Convert_begin

Состояние_окна_3 set Возвращается

Convert_end

Состояние_окна_3 set Работает

$End

$Pattern Образец_Смещение_очереди_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди > 0 and


Город.Занятость_окна_1 = Свободен

43
and Город.Состояние_окна_1 = Работает

first

Convert_begin

Смещение_очереди_1 set Да

Convert_end

Смещение_очереди_1 set Нет

$End

$Pattern Образец_Смещение_очереди_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди > 0 and


Город.Занятость_окна_2 = Свободен

and Город.Состояние_окна_2 = Работает

first

Convert_begin

Смещение_очереди_2 set Да

Convert_end

Смещение_очереди_2 set Нет

$End

$Pattern Образец_Смещение_очереди_3 : operation trace

$Relevant_resources

44
Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.004,0.003)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди > 0 and


Город.Занятость_окна_3 = Свободен

and Город.Состояние_окна_3 = Работает

first

Convert_begin

Смещение_очереди_3 set Да

Convert_end

Смещение_очереди_3 set Нет

$End

$Pattern Образец_Оплата_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

Choice from Город.Смещение_очереди_1 = Да

first

Convert_begin

Состояние_оплаты_1 set Оплачивает

Convert_end

45
Состояние_оплаты_1 set Оплатил

$End

$Pattern Образец_Оплата_2 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

Choice from Город.Смещение_очереди_2 = Да

first

Convert_begin

Состояние_оплаты_2 set Оплачивает

Convert_end

Состояние_оплаты_2 set Оплатил

$End

$Pattern Образец_Оплата_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.007,0.005)

$Body

Город

46
Choice from Город.Смещение_очереди_3 = Да

first

Convert_begin

Состояние_оплаты_3 set Оплачивает

Convert_end

Состояние_оплаты_3 set Оплатил

$End

$Pattern Образец_Осовобождение_места_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

Choice from Город.Состояние_оплаты_1 = Оплатил

first

Convert_begin

Место_свободно_1 set Нет

Convert_end

Место_свободно_1 set Да

$End

$Pattern Образец_Осовобождение_места_2 : operation trace

$Relevant_resources

47
Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

Choice from Город.Состояние_оплаты_2 = Оплатил

first

Convert_begin

Место_свободно_2 set Нет

Convert_end

Место_свободно_2 set Да

$End

$Pattern Образец_Осовобождение_места_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = Равномерный_интервал(0.0010,0.003)

$Body

Город

Choice from Город.Состояние_оплаты_3 = Оплатил

first

Convert_begin

Место_свободно_3 set Нет

Convert_end

Место_свободно_3 set Да

48
$End

$Pattern Образец_обслуживание_клиента_1 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = экспоненциальное_распределение(0.9)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди>0 and

Город.Занятость_окна_1 = Свободен

first

Convert_begin

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди - 1

Занятость_окна_1 set Занят

Convert_end

Занятость_окна_1 set Свободен

Обслужено_клиентов set Город.Обслужено_клиентов + 1

$End

$Pattern Образец_обслуживание_клиента_2 : operation trace

$Relevant_resources
49
Город:Библиотека Keep Keep

$Time = экспоненциальное_распределение(0.7)

$Body

Город

Choice from Город.Количество_клиентов_в_очереди>0 and

Город.Занятость_окна_2 = Свободен

first

Convert_begin

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди - 1

Занятость_окна_2 set Занят

Convert_end

Занятость_окна_2 set Свободен

Обслужено_клиентов set Город.Обслужено_клиентов + 1

$End

$Pattern Образец_обслуживание_клиента_3 : operation trace

$Relevant_resources

Город:Библиотека Keep Keep

$Time = экспоненциальное_распределение(0.7)

$Body

Город
50
Choice from Город.Количество_клиентов_в_очереди>0 and

Город.Занятость_окна_3 = Свободен

first

Convert_begin

Количество_клиентов_в_очереди set

Город.Количество_клиентов_в_очереди - 1

Занятость_окна_3 set Занят

Convert_end

Занятость_окна_3 set Свободен

Обслужено_клиентов set Город.Обслужено_клиентов + 1

$End

RTP

$Resource_type Библиотеки : permanent

$Parameters

Количество_клиентов_в_очереди:integer

Всего_клиентов:integer

Занятость_окна_1:(Свободен,Занят,Сломан)= Свободен

Занятость_окна_2:(Свободен,Занят)= Свободен

Занятость_окна_3:(Свободен,Занят)= Свободен

Состояние_оплаты_1:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Состояние_оплаты_2:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Состояние_оплаты_3:(Оплачивает,Оплатил,Не_Оплатил) = Не_Оплатил

Место_свободно_1:(Да,Нет) = Да

Место_свободно_2:(Да,Нет) = Да

Место_свободно_3:(Да,Нет) = Да

Смещение_очереди_1:(Да,Нет) = Нет
51
Смещение_очереди_2:(Да,Нет) = Нет

Смещение_очереди_3:(Да,Нет) = Нет

Состояние_окна_1:(Работает,Перерыв,Возвращается) = Работает

Состояние_окна_2:(Работает,Перерыв,Возвращается) = Работает

Состояние_окна_3:(Работает,Перерыв,Возвращается) = Работает

Обслужено_клиентов:integer

$End

RSS

$Resources

Библиотека:Библиотеки trace 0 0 * * * * * * * * * * * * * * * 0

$End

OPR

$Operations

Приход_клиента:Образец_приход_клиента

Обслуживание_клиента_1 :Образец_обслуживание_клиента_1

Обслуживание_клиента_2 :Образец_обслуживание_клиента_2

Обслуживание_клиента_3 :Образец_обслуживание_клиента_3

Оплата_1:Образец_Оплата_1

Оплата_2:Образец_Оплата_2

Оплата_3:Образец_Оплата_3
52
Осовобождение_места_1:Образец_Осовобождение_места_1

Осовобождение_места_2:Образец_Осовобождение_места_2

Осовобождение_места_3:Образец_Осовобождение_места_3

Смещение_очереди_1:Образец_Смещение_очереди_1

Смещение_очереди_2:Образец_Смещение_очереди_2

Смещение_очереди_3:Образец_Смещение_очереди_3

Перерыв_окна_1:Образец_Перерыв_окна_1

Перерыв_окна_2:Образец_Перерыв_окна_2

Перерыв_окна_3:Образец_Перерыв_окна_3

Возвращение_окна_1:Образец_Возвращения_окна_1

Возвращение_окна_2:Образец_Возвращения_окна_2

Возвращение_окна_3:Образец_Возвращения_окна_3

$End

FRM

$Frame Кадр_1

$Back_picture = <255 255 255> Fon1

Show
53
text[2,2,250,30, transparent, <0 0 0>, ='Клиентов в очереди:']

text[250,0,70,30,transparent, <0 0 0>,


Библиотека.Количество_клиентов_в_очереди]

text[0,30,250,30, transparent, <0 0 0>, ='Всего обслуженных клиентов:']

text[250,30,70,30,transparent, <0 0 0>,


Библиотека.Обслужено_клиентов]

text[0,60,250,30, transparent, <0 0 0>, ='Время моделирования:']

text[250,60,70,30,<255 255 255>, <0 0 0>, Time_now]

Show_if Библиотека.Количество_клиентов_в_очереди >0

bitmap [450,270, ppl1, ppl1m]

Show_if Библиотека.Количество_клиентов_в_очереди >1

bitmap [350,270, ppl3, ppl3m]

Show_if Библиотека.Количество_клиентов_в_очереди >2

bitmap [250,270, ppl3, ppl3m]

Show_if Библиотека.Количество_клиентов_в_очереди >3

bitmap [150,270, ppl1, ppl1m]

Show_if Библиотека.Количество_клиентов_в_очереди >4

bitmap [50,270, ppl1, ppl1m]

54
Show_if Библиотека.Состояние_окна_1 = Перерыв

text[400,165,550,200, transparent, <0 0 255>, ='Out Of Order']

Show_if Библиотека.Состояние_окна_2 = Перерыв

text[400,265,550,300, transparent, <0 0 255>, ='Out Of Order']

Show_if Библиотека.Состояние_окна_3 = Перерыв

text[400,365,550,400, transparent, <0 0 255>, ='Out Of Order']

Show_if Библиотека.Занятость_окна_1 = Занят and


Библиотека.Состояние_окна_1 = Работает

bitmap [600,150, ppl1, ppl1m]

Show_if Библиотека.Занятость_окна_2 = Занят and


Библиотека.Состояние_окна_2 = Работает

bitmap [600,300, ppl3, ppl3m]

Show_if Библиотека.Занятость_окна_3 = Занят and


Библиотека.Состояние_окна_3 = Работает

bitmap [600,450, ppl1, ppl1m]

$End

FUN

$Sequence Распределение_Паусона: real

55
$Type = by_hist 123456789

$Body

0.1 0.2 0.05

0.2 0.3 0.12

0.3 0.4 0.19

0.4 0.5 0.18

0.5 0.6 0.15

0.6 0.7 0.14

0.7 0.8 0.1

0.8 0.9 0.06

$End

$Sequence Равномерный_интервал: real

$Type = uniform 987654321

$End

$Sequence экспоненциальное_распределение: real

$Type = exponential 987654321

$End

SMR

Model_name = library
56
Resource_file = library

OprIev_file = library

Statistic_file = library

Results_file = library

Trace_file = library

Frame_file = library

Frame_number = 1

Show_mode = Animation

Show_rate = 10000.0

Terminate_if Time_now >= 16

PMD

$Results

Длина_очереди :trace watch_par

Библиотека.Количество_клиентов_в_очереди

Занятость_окна1 :trace watch_state

Библиотека.Занятость_окна_1 = Занят

Занятость_окна2 :trace watch_state

Библиотека.Занятость_окна_2 = Занят

Занятость_окна3 :trace watch_state

Библиотека.Занятость_окна_3 = Занят

Всего_клиентов: get_value

Библиотека.Всего_клиентов

Всего_обслужено :get_value
57
Библиотека.Обслужено_клиентов

Средняя_скорость_прихода_клиентов: get_value

Библиотека.Всего_клиентов/Time_now

Пропускная_способность :get_value

Библиотека.Обслужено_клиентов/Time_now

$End

58