close

Вход

Забыли?

вход по аккаунту

?

444.Авдеев В.П., Белоусов В.Е. Имитационное моделирование экономических процессов

код для вставкиСкачать
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Воронежский государственный архитектурно-строительный
университет
В.П. Авдеев, В.Е. Белоусов
ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ
ЭКОНОМИЧЕСКИХ ПРОЦЕССОВ
Лабораторный практикум
Рекомендовано в качестве учебного пособия редакционно-издательским
советом Воронежского государственного архитектурно-строительного
университета для студентов, обучающихся по специальности 080801
«Прикладная информатика (в экономике)» направления подготовки
дипломированных специалистов 080800 «Прикладная информатика»
Воронеж 2005
УДК 69.003:658.012.22 (07)
ББК 65.050 я 7
Авдеев, В.П. Имитационное моделирование экономических процессов
[Текст]: лабораторный практикум / В.П. Авдеев, В.Е. Белоусов; Воронеж.
гос. арх. - строит. ун-т. Воронеж, 2005.- 64 с.
Изложены основные принципы построения и реализации на ЭВМ
имитационных моделей экономических процессов в системах массового
обслуживания, применяемых при выполнении лабораторных работ с помощью системы имитационного моделирования Pilgrim -5.0 и графического конструктора Gem -1.0.
Пособие предназначено для студентов, обучающихся по специальности 080801 «Прикладная информатика (в экономике)» направления подготовки дипломированных специалистов 080800 «Прикладная информатика».
Ил.25. Табл.14. Библиогр.: 6 назв.
Рецензенты: кафедра автоматизированных систем управления
Воронежского военного института радиоэлектроники;
А.Ю. Кузьмин, к.т.н., доц. кафедры прикладных исследований
инновационных проектов и единой документации ЦФ Российской
академии права
© Авдеев В.П.,
Белоусов В.Е.
© ВГАСУ, 2005
3
ВВЕДЕНИЕ
В процессе управления постоянно возникает необходимость прогнозирования результатов в тех или иных условиях. Для ускорения принятия решения о
выборе оптимального варианта управления и экономии средств на эксперимент
используются модели процессов. Особенно это важно при прогнозировании
экономических и социальных процессов, происходящих в сложных структурных подразделениях, так как несвоевременное и неграмотное применение
управляющих воздействий к системе приводит к результатам, существенно отличающимся от требуемых.
Подготовка квалифицированных специалистов требует развития у них
навыков структурного анализа сложных экономических систем. Эти навыки
нужны не только будущим профессиональным ученым. В неменьшей степени
они необходимы и производственникам для принятия обоснованных управленческих решений.
В лабораторном практикуме решение этих задач продемонстрировано с
помощью системы имитационного моделирования (ИМ) Pilgrim-5.0 и графического конструктора Gem-1.0, которые позволяют прогнозировать поведение как
самих сложных систем, так и их параметров. Пакет Pilgrim обладает широким спектром возможностей имитации временной, пространственной и финансовой динамики моделируемых объектов. С его помощью можно создавать
дискретно-непрерывные модели. Разрабатываемые модели имеют свойство
коллективного управления процессом моделирования. В текст модели можно вставлять любые блоки с помощью стандартного языка C. Pilgrim обладает
свойством мобильности, т.е. позволяет переносить текст модели на любую
другую платформу при наличии ОС Unix и компилятора C++. Модели в системе Pilgrim компилируются и поэтому имеют высокое быстродействие, что
очень важно для отработки управленческих решений и адаптивного выбора вариантов в сверхускоренном масштабе времени. Полученный после компиляции
объектный код можно встраивать в разрабатываемые программные комплексы,
так как при эксплуатации моделей инструментальные средства пакета Pilgrim
не используются.
Перечисленные шесть инструментальных средств имеют общее свойство возможность графического конструирования модели. В процессе такой инженерной работы удается связать в графическом представлении на одной графической схеме моделируемые процессы, имеющие административные, экономические, геоинформационные или конструктивные особенности.
Задача учебного пособия – помочь в освоении приемов и методов имитационного моделирования сложных экономических систем. Не нужно думать,
что овладение этими приемами сразу же сделает обучающегося специалистом
по моделированию систем. Учебное пособие рассчитано на средний уровень
математической подготовки обучающегося. Этот уровень принят не слишком
высоким, поэтому любой студент практически может без каких – либо затруднений освоить весь предлагаемый здесь материал. Более того, пособие построено таким образом, что все лабораторные работы могут выполняться независимо
4
друг от друга и, значит, изучаться и выполняться в любой последовательности,
удобной преподавателю и студенту.
Опыт показывает, что материал, изложенный по структуре “теоретические
положения – пример решения – решение на ЭВМ – обработка результатов
моделирования” усваивается намного лучше. Поэтому авторами принята следующая структура лабораторного практикума: введение, пять лабораторных
работ, заключение, три приложения.
В первой лабораторной работе исследуется эффективность использования
компьютеров в автоматизированной бухгалтерии на основе методов анализа и
принятия управленческих решений в разомкнутых моделях обслуживания с
разными приоритетами.
Во второй лабораторной работе рассмотрены вопросы моделирования с истем массового обслуживания на основе принципа тележки. В качестве примера решается задача оптимизации графика движения маршрутного такси.
В третьей лабораторной работе изучается работа станции метрополитена
на основе схемы зарядки. Моделирование вышеуказанной задачи производится
с использованием клапана с таймером.
В четвертой лабораторной работе анализируется функционирование замкнутой корпоративной системы, работающей под управлением операционной
системы Unix. Моделирование системы производится с использованием схемы
зарядки, имитирующей работу пользователей компьютерной сети.
В пятой лабораторной работе изучаются способы минимизации производственных затрат предприятия с использованием метода перебора, когда полученные в ходе имитационного эксперимента данные обрабатываются по специальному алгоритму.
В первом приложении приводится пример технологического процесса создания модели в системе Pilgrim на примере обслуживания физических лиц в
банке.
Во втором приложении представлен образец титульного листа для офор мления отчетов по лабораторным работам.
В третьем приложении приводятся примеры построения объектных кодов
имитационных моделей на языке С++, рассмотренных в данном пособии для
самоконтроля обучающихся, т. к. при генерации кода конструктором Gem – 1.0
возможны системные ошибки.
Лабораторный практикум, написанный в соответствии с программой УМО
специальности, утвержденной Министерством образования РФ от 14.03.2000 г,
предназначен для студентов четвертого курса, изучающих дисциплину “Имитационное моделирование экономических процессов” специальности 080801
“Прикладная информатика (в экономике)”.
При подготовке учебного пособия использовались известные труды ряда
авторов по теории массового обслуживания, основам имитационного моделирования, специальным разделам математики, указанные в библиографии.
5
ЛАБОРАТОРНАЯ РАБОТА №1
ИССЛЕДОВАНИЕ ЭФФЕКТИВНОСТИ ИСПОЛЬЗОВАНИЯ
КОМПЬЮТЕРОВ В АВТОМАТИЗИРОВАННОЙ БУХГАЛТЕРИИ
1.1. Цель работы
Изучить основные методы анализа и принятия управленческих решений в
разомкнутых моделях обслуживания с разными приоритетами.
Время выполнения: 6 часов.
1.2. Описание моделируемого процесса
В бухгалтерии некоторой фирмы работает один бухгалтер, который использует персональный компьютер, на котором установлено автоматизированное рабочее место (АРМ) бухгалтера. АРМ - это программно-технический комплекс специалиста. Работа бухгалтера связана с обработкой поступивших документов с помощью АРМ. Документы обрабатываются в порядке поступления
в бухгалтерию. Обработанные документы подшиваются в специальную папку.
В работе компьютера периодически возникают неполадки (неисправность
в аппаратной части, сбой в программе, нарушение питания и т.п.). В этом случае обработка документов прекращается и вызывают специалиста, который
устраняет неисправность, после чего бухгалтер продолжает свою работу. Считается, что устранение неполадок начинается мгновенно после их возникновения. Документы поступают для обработки, в том числе и во время ремонта
АРМ. Курьер продолжает приносить документы и во время ремонта компьютера.
Требуется построить модель, имитирующую обработку потоков документов и неполадок в работе АРМ.
1.3. Пример решения
Рассмотрим модель АРМ бухгалтерии (рис.1.1). Формирование схемы модели производится с помощью конструктора Gem-1.0. Описание каждого узла,
а также операторов moodbeg и moodend выполняется в соответствии с алгоритмом, изложенным в прил. 1.
В модели имеются транзакты двух типов:
- бухгалтерские документы;
- неполадки в работе компьютера.
Транзакты - документы создаются генератором 5. Они попадают в очередь
1 (имитация документов, лежащих на столе в ожидании обработки) и далее в
сервер 2, имитирующий компьютер бухгалтера. Из сервера транзакты - документы переходят в терминатор 3, имитирующий папку, куда подшиваются документы. Транзакты - неполадки создаются генератором 6. Они также проходят
по узлам 1 и 2 и попадают в терминатор 4, имитирующий журнал учета неполадок.
6
Обслуживание транзакта - документа состоит во вводе информации в
компьютер с установленным АРМ и требует времени ( t ) ввода. Обслуживание
транзакта - неполадки состоит в ее устранении и требует времени ( t ) ремонта.
Таким образом, сервер, моделирующий компьютер, будет менять время обслуживания транзакта в зависимости от типа пришедшего транзакта.
Документы
Архивная папка
3
5
AG
T
1
Q
2
S
4
6
Компьютер
AG
Неисправности
T
Журнал учета неисправностей
Рис.1.1. Модель АРМ бухгалтерии
Различать транзакты будем по их приоритетам, которые зададим при описании соответствующих генераторов. Транзакты - неполадки будут иметь более
высокий приоритет - 1, а транзакты - документы - 0. Приоритет будет использоваться также для того, чтобы заблокировать обработку документов на время
ремонта компьютера. Для этого зададим в параметрах сервера и очереди к нему
флажки, учитывающие приоритеты транзактов (значения “abs” и ”prty”). Тогда
очередь будет ставить транзакты - неполадки впереди транзактов - документов,
а сервер будет работать в режиме прерывания обслуживания менее приоритетных транзактов.
Если в сервере находится транзакт - документ (то есть происходит ввод
информации), и в это время появляется транзакт - неполадка, она автоматически становится первой в очереди. Сервер “видит” в начале очереди более пр иоритетный транзакт и вытесняет транзакт - документ в специальный стек (ввод
информации прекращается по причине сбоя в работе компьютера). Транзакт неполадка занимает сервер (начинается процесс устранения неполадки) и находится там до истечения заданного времени ремонта. После этого продолжается
обслуживание вытесненного транзакта - документа (ввод оставшейся информации по прерванному документу).
Если мы зададим учет приоритетов транзактов только для очереди, то
сервер не будет работать в режиме прерывания обслуживания транзактов, что
соответствует условию “компьютер никогда не ломается во время обработки
документа”. Такая схема подходит, например, для моделирования работы про-
7
давца, который обслуживает некоторую категорию покупателей вне очереди,
но не бросает обслуживание текущего покупателя при появлении “более приоритетного”.
Разберем выбор законов распределения случайных параметров модели интервалов генерации транзактов и времени обслуживания сервера. В таблице
1.1 заданы средние значения этих параметров, а реальные значения для каждого
нового транзакта будут иметь некоторый разброс около этих средних.
Интервал генерации транзактов - документов имеет нормальный закон
распределения (norm), так как случайные значения промежутка времени между
приходами курьера группируются около известного среднего. Если бы в условии было сказано, что бухгалтерию обслуживают несколько курьеров, то каждый из них имел бы свой собственный график посещений бухгалтерии со случайными (совершенно неизвестными нам) промежутками между приходами. В
этом случае, на основании теоремы о суперпозиции случайных потоков событий (в нашем случае - приходов курьера), интервал генератора транзактов - документов имел бы экспоненциальный закон распределения (expo). Время обслуживания сервером транзакта - документа (время ввода информации в компьютер) имеет нормальный закон распределения, так как поступающие на обработку документы имеют один и тот же тип, и отклонение во времени ввода
информации связано только с тем, что бухгалтер не может работать так же точно, как автомат.
Интервал генерации транзактов - неполадок имеет экспоненциальный закон распределения. Компьютер имеет очень большое число деталей, каждая из
которых имеет свой срок наработки на отказ (интервал между отказами). Время
обслуживания транзакта - неполадки распределено по равномерному закону
(unif) в пределах от 0,5 часа до 1,5 часа, так как устранение неисправности может с равной вероятностью занять любой промежуток времени от получаса до
полутора часов.
Перед тем как очередной транзакт войдет в сервер, должны быть соответствующим образом настроены параметры сервера. Это делается с помощью
условного оператора ( if ) и операторов присваивания. В описании сервера его
меняющие значение параметры заданы с помощью переменных пользователя.
Закон распределения времени обслуживания (Dist) и номер терминатора, в который должен перейти транзакт после выхода из сервера (Forw) являются константами целого типа (int). Математическое ожидание (среднее) времени обслуживания (Tobs) и среднеквадратическое отклонение (Pogr) являются переменными с плавающей точкой (float). Для равномерного закона распределения
принимаются среднее значение (разброс относительно среднего) допустимого
интервала случайной величины. Для нормального закона среднеквадратическое
отклонение можно всегда задавать как одну треть от математического ожидания. Для экспоненциального закона отклонение всегда равно математическому
ожиданию, поэтому в моделях можно писать вместо него константу (zero), а
Pilgrim сам подставит нужное значение.
При настройке параметров проверяется условие равенства приоритета
транзакта (t->pr) единице, что соответствует приходу транзакта - неполадки. По
8
первой ветке параметры сервера настраиваются на обработку транзакта - неполадки, а по второй - документа.
Формирование схемы модели и компиляции кода С++ (файл arm.cpp) заканчивается построением проекта, проверкой на ошибки и проведением экстремального эксперимента (не менее 5-10 испытаний) в соответствии с прил. 1.
В результате испытаний выводятся графические результаты по динамике
задержек в очереди и табличные результаты (рис. 1.2).
*----------------------------------------------------------------------- ----------------------*
| НАЗВАНИЕ МОДЕЛИ:
АРМ бухгалтера
|
| ВРЕМЯ МОДЕЛИРОВАНИЯ: 1200.07
Лист: 1
|
|--------------------------------------- ------------------------------------------------------|
|
|
|
|
|Загруз -|
|
2
|
|
|
|
|
| No | Наименование | Тип |Точ-| ка, %=| M [t] | C [t] |Счeтчик|Кол.|Оcт.|Состояние узла|
|узла|
узла
| узла | ка |Путь,км| среднее | вариация| входов|кан.| тр.| в этот момент|
|---------------------------------------------------------------------------------------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 Столик-очередь queue
0.37
2.02
12094
1
1
открыт |
|
2 АРМ бухгалтерии serv
- %= 87.4
0.09
1.90
12093
1
0
открыт |
|
3 Архивные папки term
0.45
1.38
12044
0
0
открыт |
|
4 Неиспр. устр-на term
1.00
0.16
49
0
0
открыт |
|
5 Бухгалтерия
ag
0.10
0.24
12045
1
1
открыт |
|
6 Неисправности
ag
23.68
1.05
50
1
1
открыт |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*---------------------------------------------------------------------------------------------*
Рис.1.2. Результаты испытаний модели
В таблице результатов испытаний модели (рис. 1.2) приведены статистические данные о работе бухгалтера за период, равный 1200 часов. За это
время средняя загруженность бухгалтера составила почти 90% (загрузка узла
2), что довольно много. Среднее время ожидания документом обработки составило примерно 0,4 часа (математическое ожидание в узле 1), что также довольно много. Это происходит потому, что интервал поступления документов
почти совпадает с временем их обработки. При этом из-за отклонений в значениях времен образуются очереди. По значению квадрата коэффициента вариации (вариация узла 1) можно сказать, что это время имело разбро с значений,
чуть больший, чем математическое ожидание (корень из коэффициента вариации чуть больше 1). При анализе состояния очередей особое внимание следует
обратить на значение квадрата коэффициента вариации времени задержки. Если оно близко к нулю, время задержки не имело существенного разброса, то
есть длина очереди была практически постоянной. Если же значение квадрата
коэффициента вариации велико, это значит, что транзакты приходили в очередь
группами. Средний размер группы равен корню из квадрата коэффициента вариации. В этом случае нужно установить причину образования групп транзактов на входе очереди. Это может быть, например, ключ или многоканальный
сервер, стоящий перед очередью. Всего было обработано 12044 документа
(счетчик входов узла 3) и устранено 49 неполадок (счетчик входов узла 4).
Один документ остался необработанным (остаток транзактов узла 1). Все возникшие неполадки устранены.
9
Оставшийся в очереди транзакт является документом, а не неполадкой,
так как всего было сгенерировано 49 транзактов - неполадок (последний,
оставшийся в генераторе, не считается), и все они перешли в свой терминатор.
Вариант объектного кода модели представлен в прил. 3 (пункт 1).
1.4. Задание и алгоритм выполнения лабораторной работы
Выполнение лабораторной работы производится в соответствии с приведенным ниже алгоритмом:
1. На основании индивидуального задания (табл. 1.1) разработать схему модели с помощью графического редактора Gem-1.0.
2. Создать на жестком диске рабочую папку для будущего проекта (в папке
Modeli pilgrim\arm45/46).
3. Перенести в рабочую папку файл модели в формате *.*.cpp (Modeli pilgrim\arm45/46\**.cpp).
4. Открыть приложение Microsoft Visual C++ (Меню ПУСК, ПРОГРАММЫ,
Visual C++).
5. Выполнить следующую последовательность пунктов меню:
5.1. File,
5.2. New,
5.3. Project,
5.4. Win32 Application:
5.4.1. В строке Locaion указать (через кнопку Browse) путь к файлу модели.
5.4.2. Нажать кнопку OK.
6.
К проекту присоединить файлы, необходимые для построения объектного
кода модели.
6.1. Непосредственно к модели:
- стандартную библиотеку С++ Comctl32.lib (C:\Visual Stu
dio\VC98\MFC\ Lib\Comctlb32.lib),
- библиотеку системы PILGRIM Pilgrim.lib (C:\Visual Studio\VC98\
MFC\Lib\Pilgrim.lib).
6.2. В папку Resource Files:
- файл ресурсов Windows для моделей PILGRIM Pilgrim.res (папка
Pilgrim5.0\Projects\),
- файл значка Pilgrim – Pilgrim.ico (папка Pilgrim5.0\Projects\),
- файл результатов моделирования Pilgrim – Userres.rc (папка
Pilgrim5.0\Projects\).
6.3. В папку Source.files - файл модели <модель>.cpp (адрес расположения
файла модели должен совпадать с указанным в окне Location перед
вводом имени проекта в окне Name).
10
Таблица 1.1
Номер
варианта
Модельное
время,
ч
Точность
Переменные
моделирования
Интервал
поступления документов
Время
обработки
документов
Интервал
возникновения
неполадок
Время
устранения
неполадок
t,ч s
t e ,ч
t r ,ч
0.1
0.08
24.0
1.0
0.12
0.06
22.0
1.2
0.09
0.07
21.0
1.1
0.13
0.09
18.0
0.9
0.11
0.1
19.0
0.8
0.14
0.11
23.0
0.95
0.08
0.12
20.5
1.15
0.09
0.16
23.6
1.19
0.14
0.18
23.7
1.23
0.13
0.17
21.2
1.18
0.07
0.2
18.8
0.85
0.11
0.12
23.6
0.97
0.08
0.16
23.5
1.14
t,ч
1200
2
2
900
3
3
1000
4
1
4
1100
2
5
800
3
6
1300
4
7
1400
2
8
1500
3
9
1230
4
10
1180
2
11
1540
3
12
1610
4
13
1430
1
Dist=norm
(Вычисленный закон
обслуживания)
Tobs
(Вычисленное
среднее время
обслуживания)
Pogr = Tobs/3.0
(Вычисленное
среднеквадратичное
отклонение)
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.0
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
11
Окончание табл. 1.1
Номер
варианта
Модельное
время,
ч
Точность
14
1250
2
15
1980
3
16
1421
4
17
1325
1
18
1600
2
19
1620
3
20
1590
4
Переменные
моделирования
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Dist=norm
Tobs
Pogr = Tobs/3.
Интервал
поступления документов
Время
обработки
документов
Интервал
возникновения
неполадок
Время
устранения
неполадок
t a ,ч
t s ,ч
t e ,ч
t r ,ч
0.12
0.24
22.8
1.17
0.13
0.25
23.4
1.12
0.08
0.15
19.2
1.11
0.06
0.22
20.4
1.13
0.11
0.23
24.0
1.15
0.09
0.16
22.8
1.14
0.12
0.21
23.3
1.21
6.4. В папку Header.files - файлы:
- userhid.h (папка Pilgrim5.0\Projects\),
- pilgrim.h (папка Pilgrim5.0\Include \),
- simulate.h (папка Pilgrim5.0\ Include \).
Примечание: Вставка файлов в проект осуществляется с помощью меню Insert,
пункт Files into Project.
7. Построить исполняемый файл модели. Это делается с помощью меню Build,
пункт Build <модель>.exe. Если в окне отчета о процессе построения появится
сообщение «0 errors», можно запустить модель, выбрав в меню Build пункт Execute <модель>.exe.
8. Запустить процесс имитации, используя меню Запуск модели системы Pilgrim-5.0, выбрав в меню Результаты, пункт Динамика задержки. Получить графики задержек транзактов в разных узлах модели с помощью выпадающего или
графического меню системы Pilgrim-5.0. Вариант графика полученных результатов задержек транзактов приведен на рис.П. 1.16.
После выполнения указанных действий необходимо просмотреть:
- график динамики задержек в узле Queue (очередь заявок) на входе и выходе,
- график изменения параметров обслуживания в сервере (автоматизированное рабочее место бухгалтера) на входе и выходе,
12
- графики терминаторов (архив и журнал неисправностей) и генераторов (документы и неисправности).
Указанные графики необходимо скопировать с помощью клавиши PrtSc
клавиатуры в буфер обмена и затем сохранить средствами Microsoft Word в
папке модели под именами graf1(2).doc.
9. Выйти из среды Pilgrim. Открыть папку модели и найти в ней файл результатов моделирования в формате Word.
10.Распечатать графические файлы и файл результатов моделирования на принтере.
1.5. Отчет о выполнении работы
Отчет о выполнении лабораторной работы №1 необходимо оформить на
листах формата А4 (титульный лист оформить по прил. 2). Отчет должен с одержать описание и результаты работы, представляемые в следующей последовательности:
- описание моделируемой задачи в соответствии с номером варианта;
- процесс формализации (описание констант, переменных, узлов, транзактов, старта и финиша модели);
- распечатки графиков и результатов с оценкой полученных данных (не
менее 4-8 страниц);
- рекомендации по изменению режима работы бухгалтерии с целью повышения эффективности обслуживания клиентов.
Контрольные вопросы
Дайте определение узла Age и перечислите его основные характеристики.
Зачем нужна имитационная модель?
Для чего применяется имитационное моделирование экономических пр оцессов?
4. Дайте определение узла Queue и перечислите его основные характеристики.
5. Дайте определение узла Serv и перечислите его основные характеристики.
6. Действительно ли при моделировании экономических процессов программные датчики дают случайные числа? Если нет, то почему?
7. Дайте определение узла Term и перечислите его основные характеристики.
8. Перечислите принципы структурного анализа экономической системы.
9. Каковы основные этапы построения имитационной модели экономической
системы?
10. Как получается на практике экспоненциальное распределение (дать интерпретацию применительно к экономическим процессам)?
1.
2.
3.
Литература
[1, 2, 6]
13
ЛАБОРАТОРНАЯ РАБОТА № 2
МОДЕЛИРОВАНИЕ СИСТЕМЫ МАССОВОГО ОБСЛУЖИВАНИЯ С
ИСПОЛЬЗОВАНИЕМ УЗЛА “DELET”
2.1. Цель работы
Изучить принципы работы узла delet (“тележки”) в транспортной задаче,
получить навыки расчета сетевых графиков движения городского пассажирского транспорта.
Время: 2 часа.
2.2. Описание моделируемого процесса
Имеется остановка маршрутного такси. С определенными интервалами
времени на остановку приходят пассажиры и подъезжают такси. Такси уезжает,
когда в него сядет 10 пассажиров. Если пришедший пассажир не обнаруживает
стоящего такси, он встает в очередь на посадку. Если такси подъехало на пустую остановку, оно ждет пассажиров. Если такси подъехало, а на остановке
уже стоит такси, оно встает в очередь такси.
Имитационную модель приведенной выше задачи целесообразно формировать с использованием узла delet ( первый вошедший в него транзакт становится как бы тележкой, в которую собираются транзакты, входящие следом и как
только в узле наберется заданное количество транзактов, они уничтожаются, а
первый переходит в следующий узел: тележка уезжает, а предметы, собранные
в нее, перестают существовать как заявки на обслуживание в системе).
2.3. Пример решения
В качестве примера рассмотрим модель, имитирующую работу остановки
маршрутного такси (рис.2.1). Формирование схемы модели производится с помощью конструктора Gem-1.0. Описание каждого узла, а также операторов
moodbeg и moodend выполняется в соответствии с алгоритмом, изложенным в
прил.1.
Интервал генерации транзактов, имитирующих такси, имеет нормальное
распределение, так как остановку обслуживают такси из одного парка, а не нескольких. Использование в описании генератора 6 нормального закона распр еделения интервала генерации означает, что время между приездами такси на
остановку чаще оказывается ближе к своему среднему значению и реже –
дальше от него (чем больше отклонение интервала от среднего, тем реже это
бывает).
Узлы 2 и 7 имитируют соответственно очереди пассажиров и такси. Ключ
8 в начале работы модели находится в открытом состоянии (по умолч анию), а
ключ 3 закрывается при приходе в очередь 2 первого транзакта. Это делается
14
для того, чтобы в узел delet первым вошел транзакт - такси, а не пассажир (иначе пассажир станет “тележкой”).
Как только в delet войдет первый транзакт – такси, ключ 8 закрывается, а
ключ 3 открывается. Теперь выходящие из генератора 6 транзакты - такси стоят
в очереди 7, а транзакты - пассажиры заходят в узел delet (идет заполнение такси). Когда в узле накопится 10 транзактов - пассажиров, транзакт - такси перейдет в терминатор (заполненное такси уедет). Ключ 8 открывается, чтобы в delet
мог зайти следующий транзакт - такси. Ключ 3 закрывается, чтобы транзакты пассажиры стояли в очереди 2 до прихода в delet транзакта -такси.
Пассажиры
6
1
AG
AG
2
7
Q
Q
3
hold
rels
Такси
8
K
hold
K
4
DEL
rels
5
Такси уехало
T
Посадка в такси
Рис. 2.1. Модель имитации работы остановки маршрутного такси
Таким образом, в модели ключи 3 и 8 всегда находятся в противоположных состояниях – если один открыт, то другой закрыт. Тем самым чередуется
доступ к узлу delet разных типов транзактов – такси и пассажиров.
После формирования схемы модели и компиляции кода С++ (файл
arm.cpp) построить проект, проверить на ошибки и провести экстремальный
эксперимент (не менее 5-10 испытаний) в соответствии с прил. 1.
15
В результате испытаний получить графические результаты по динамике
задержек в очереди и табличные результаты.
Вариант объектного кода модели представлен в прил. 3 (пункт 2).
2.4. Задание и алгоритм выполнения лабораторной работы
Для выполнения лабораторной работы необходимо использовать следующий алгоритм:
1. На основании индивидуального задания (табл. 2.1) построить схему модели
в графическом редакторе Gem-1.0.
2. Создать на жестком диске рабочую папку для будущего проекта (в папке
Modeli pilgrim\taxi45/46).
3. Перенести в рабочую папку файл модели в формате *.*.cpp (Modeli pilgrim\taxi45/46\**.cpp).
4. Открыть приложение Microsoft Visual C++ (Меню ПУСК, ПРОГРАММЫ,
Visual C++).
5. Выполнить следующую последовательность пунктов меню:
5.1. File,
5.2. New,
5.3. Project,
5.4. Win32 Application:
5.4.1. В строке Locaion указать (через кнопку Browse) путь к файлу
модели.
5.4.2. Нажать кнопку OK.
6. Вставить в проект файлы, необходимые для построения объектного кода модели.
6.1. Непосредственно к модели:
- стандартную библиотеку С++ Comctl32.lib (папка Pilgrim5.0\Libnt),
- библиотеку системы PILGRIM Pilgrim.lib (папка Pilgrim5.0\Libnt).
6.2. В папку Resource Files:
- файл ресурсов Windows для моделей PILGRIM Pilgrim.res (папка
Pilgrim5.0\Projects\),
- файл значка Pilgrim – Pilgrim.ico (папка Pilgrim5.0\Projects\),
- файл результатов моделирования Pilgrim – Userres.rc (папка
Pilgrim5.0\Projects\).
6.3. В папку Source.files - файл модели <модель>.cpp (адрес расположения файла модели должен совпадать с указанным в окне Location перед
вводом имени проекта в окне Name).
6.4. В папку Header.files - файлы:
- userhid.h (папка Pilgrim5.0\Projects\),
- pilgrim.h (папка Pilgrim5.0\Include \),
- simulate.h (папка Pilgrim5.0\ Include \).
Примечание: Вставка файлов в проект осуществляется с помощью меню Insert,
пункт Files into Project.
16
7. Построить исполняемый файл модели. Это делается с помощью меню Build,
пункт Build <модель>.exe. Если в окне отчета о процессе построения появится
сообщение «0 errors», можно запустить модель, выбрав в меню Build пункт Execute <модель>.exe.
Таблица 2.1
Номер
варианта
Модельное
время,
мин
Точность
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
360
320
342
354
333
312
344
319
341
322
328
337
318
324
357
327
336
359
348
329
2
3
4
2
3
4
2
3
2
4
4
3
3
2
3
4
3
3
2
2
Интервал
прихода пассажиров
Pass,
мин
1.0
1.8
1.9
1.6
1.7
2.0
1.1
1.2
1.3
1.4
1.5
2.1
2.2
3.0
3.5
2.6
1.9
0.9
2.4
3.2
Интервал
приезда такси
Tax,
мин
10.0
10.4
11.1
10.9
11.2
10.3
14.2
13.0
12.2
14.5
14.2
12.3
11.6
13.4
10.9
11.1
14.2
10.8
12.7
15.0
8. Запустить процесс имитации, используя меню Запуск модели системы Pilgrim-5.0, выбрав в меню Результаты, пункт Динамика задержки. Получить графики задержек транзактов в разных узлах модели с помощью выпадающего или
графического меню системы Pilgrim-5.0. Вариант графика полученных результатов задержек транзактов приведен на рис.П. 1.16.
После выполнения указанных действий необходимо просмотреть:
- график динамики задержек в узле Queue 2 и 7 (очереди пассажиров и
маршрутных такси) на входе и выходе,
- графики изменения состояний узлов Key 3 и 8 (двери открыты и посадка в такси),
- графики задержек в узле Term (такси уехало).
Указанные графики скопировать с помощью клавиши PrtSc клавиатуры в
буфер обмена и затем сохранить средствами Microsoft Word в папке модели
под именами graf1(2).doc.
17
9. Выйти из среды Pilgrim. Открыть папку модели и найти в ней файл результатов моделирования в формате Word.
10. Распечатать графические файлы и файл результатов моделирования на
принтере.
2.5. Отчет о выполнении работы
Отчет о выполнении лабораторной работы №2 необходимо оформить на
листах формата А4 (титульный лист оформить по прил. 2). Отчет должен с одержать описание и результаты работы, представляемые в следующей последовательности:
- описание моделируемой задачи на основе принципа тележки (в соответствии с номером варианта);
- процесс формализации организации работы остановки маршрутного такси (описание констант, переменных, узлов, транзактов, старта и финиша
работы модели);
- распечатки графиков и результатов с оценкой полученных данных (не
менее 2-4 страниц);
- рекомендации по улучшению организации работы остановки маршрутного такси с целью оптимизации временных затрат ожидания пассажиров и
графика движения машин.
Контрольные вопросы
В чем заключается моделирование принципа тележки?
Перечислите основные атрибуты узла Delet.
Как работает узел Key, и с помощью каких команд он управляется?
В каких моделях применяется нормальное распределение случайной величины?
5. В каких моделях применяется экспоненциальное распределение случайной величины?
6. В каких моделях применяется распределение Эрланга для случайной
величины?
7. Является ли метод Монте-Карло в сочетании с проверкой статистических гипотез имитационным моделированием?
8. Чем отличается генератор транзактов с бесконечной емкостью от узлов
других типов?
9. Чем принципиально отличается модельное время от астрономического в
имитационных моделях?
10. Почему для анализа временных параметров сложного процесса трудно
применить теорию стохастических сетей?
1.
2.
3.
4.
ЛИТЕРАТУРА
[1, 4, 6 ]
18
ЛАБОРАТОРНАЯ РАБОТА №3
МОДЕЛИРОВАНИЕ КЛАПАНА С ТАЙМЕРОМ
3.1. Цель работы
Закрепить теоретические знания, полученные при прослушивании лекций; научится применять изученные комбинации узлов и их параметров для оптимизации временных параметров.
Время: 2 часа.
3.2. Описание моделируемого процесса
На платформу станции метро приходят пассажиры. Если поезда нет, они
ждут на перроне. Когда поезд приходит, начинается посадка. Когда время посадки заканчивается, поезд уезжает. Рассматривается посадка в поезда только в
одном направлении. Поездка пассажира в поезде не включается в моделируемый процесс.
Параметры для формирования модели задаются по табл. 3.1.
Таблица 3.1
Параметр
Интервал прихода пассажиров
Интервал прихода поездов
Время стоянки поезда
Среднее
значение
15 секунд
1,5 минуты
30 секунд
3.3. Пример решения
Рассмотрим схему, имитирующую работу станции метрополитена
(рис.3.2). Формирование схемы модели производится с помощью конструктора
Gem-1.0. Описание каждого узла, а также операторов moodbeg и moodend выполняется в соответствии с алгоритмом, изложенным в прил. 1.
Терминатор 1 создает транзакты, имитирующие приходящих на станцию
пассажиров. Интервал генерации распределен по экспоненциальному закону по
теореме о суперпозиции потоков событий.
Очередь 2 имитирует перрон. Ключ 3 имитирует двери поезда. Если он
открыт (поезд стоит на платформе), транзакты переходят в терминатор 4 (пассажиры входят в вагон). Если ключ 3 закрыт (поезда нет), транзакты остаются в
очереди 2 (пассажиры ждут поезда).
19
5
Пассажиры
1
Поезда
AG
AG
6
2
rels
Перрон
Q
Поезд
стоит на
перроне
S
hold
7
3
Двери поезда
Поезд
ушел
K
Пассажир
сел в поезд
T
4
T
Рис. 3.2. Схема модели, имитирующей работу станции метрополитена
Как и в модели остановки маршрутного такси (лабораторная работа № 2),
здесь нужно произвести начальное закрытие ключа 3. Это делается в момент
прихода первого транзакта – пассажира в очередь 2.
Рассмотрим принцип работы клапана под управлением таймера, на котором основана данная модель (рис.3.3). Через определенные промежутки времени ключ замыкается (ключ закрыт) и снова размыкается (ключ открыт) по прошествии некоторого заданного времени.
Ключ закрыт
время
Ключ открыт
Рис. 3.3. Временные диаграммы работы клапана под управлением таймера
Цепочка узлов Ag – Serv – Term играет роль таймера, подающего сигналы
открытия и закрытия ключа. Сигналами являются вход транзакта в сервер и в
20
терминатор. Интервал генерации транзактов равен сумме периодов между
нахождением ключа в открытом и закрытом состоянии (время от одного открытия до другого). Время задержки в сервере равно периоду нахождения ключа в
открытом состоянии (времянахождения узла Key в открытом состоянии).
Генератор 5 формирует транзакты через интервал прихода поездов. Время
задержки транзакта в сервере 6 – это время стоянки поезда. Эти времена описаны как точные величины (на месте вида закона распределения стоит значение
“none” – “никакое”). Считается, что поезда приходят и отправляются строго по
расписанию, без отклонений.
Команда открытия ключа выдается после входа транзакта в сервер 6. Это
событие соответствует приходу поезда. Команда закрытия ключа выдается из
терминатора 7. Это событие соответствует окончанию посадки и отправлению
поезда.
После формирования схемы модели и компиляции кода С++ (файл
train.cpp) следует построить проект, проверить на ошибки и провести экстремальный эксперимент (не менее 5-10 испытаний) в соответствии с прил. 1.
В результате испытаний необходимо получить графические результаты по
динамике задержек в очереди и табличные результаты.
Вариант объектного кода модели представлен в прил. 3 (пункт 3).
3.4. Задание и алгоритм выполнения лабораторной работы
В качестве алгоритма выполнения лабораторной работы можно принять
следующую последовательность действий:
1. На основании индивидуального задания (табл. 3.2) построить схему модели
в графическом редакторе Gem-1.0.
2. Создать на жестком диске рабочую папку для будущего проекта (в папке
Modeli pilgrim\train45/46).
3. Перенести в рабочую папку файл модели в формате .cpp (Modeli
pilgrim\train45/46\**.cpp).
4. Открыть приложение Microsoft Visual C++ (Меню ПУСК, ПРОГРАММЫ,
Visual C++).
5. Пройти следующую последовательность пунктов меню:
5.1. File,
5.2. New,
5.3. Project,
5.4. Win32 Application:
5.4.1. В строке Locaion указать (через кнопку Browse) путь к файлу
модели.
5.4.2. Нажать кнопку OK.
6. Вставить в проект файлы, необходимы для построения объектного кода модели.
6.1. Непосредственно к модели:
- cтандартную библиотеку С++ Comctl32.lib (папка Pilgrim5.0\Libnt),
- библиотеку системы PILGRIM Pilgrim.lib (папка Pilgrim5.0\Libnt).
21
Таблица 3.2
Номер
варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Модельное Точность
время, ч
360
320
340
330
335
325
315
355
350
356
320
314
345
313
342
305
312
344
321
333
1
3
3
2
1
1
2
3
3
3
2
1
1
3
2
2
1
1
2
3
Интервал
прихода пассажиров
T_Pass, с
Интервал
приездапоезда
T_Poezd,
мин
15
12
13
11
16
14
18
21
12
19
22
31
26
14
17
26
31
16
14
20
1.5
1.12
1.4
1.23
1.42
1.56
1.6
1.19
1.67
1.24
1.51
1.87
1.43
1.32
1.9
1.71
1.68
1.88
1.35
1.2
Время
Стоянки поезда
T_Poezd_Stand,
с
30
24
43
35
39
29
31
28
33
35
29
30
24
38
41
35
31
38
33
34
6.2. В папку Resource. Files:
- файл ресурсов Windows для моделей PILGRIM Pilgrim.res (папка
Pilgrim5.0\Projects\),
- файл значка Pilgrim – Pilgrim.ico (папка Pilgrim5.0\Projects\),
- файл результатов моделирования Pilgrim – Userres.rc (папка
Pilgrim5.0\Projects\).
6.3. В папку Source.files - файл модели <модель>.cpp (адрес расположения
файла модели должен совпадать с указанным в окне Location перед вводом
имени проекта в окне Name).
6.4. В папку Header.files файлы:
- userhid.h (папка Pilgrim5.0\Projects\),
- pilgrim.h (папка Pilgrim5.0\Include \),
- simulate.h (папка Pilgrim5.0\ Include \).
Примечание: Вставка файлов в проект осуществляется с помощью меню Insert,
пункт Files into Project.
7. Построить исполняемый файл модели. Это делается с помощью меню Build,
пункт Build <модель>.exe. Если в окне отчета о процессе построения появится
сообщение «0 errors», можно запустить модель, выбрав в меню Build пункт Execute <модель>.exe.
22
8. Запустить процесс имитации, используя меню Запуск модели системы Pilgrim-5.0, выбрав в меню Результаты, пункт Динамика задержки. Получить графики задержек транзактов в разных узлах модели с помощью выпадающего или
графического меню системы Pilgrim-5.0. Вариант графика полученных результатов задержек транзактов приведен на рис.П. 1.16.
После выполнения указанных действий необходимо просмотреть:
- график динамики задержек в узле Queue 2 (перрон),
- графики изменения состояний узла Key 3 (двери поезда),
- графики задержек в узле Term (пассажир сел в поезд и поезд ушел),
- график загрузки узла Serv (поезд стоит на перроне).
Указанные графики скопировать с помощью клавиши PrtSc клавиатуры и
затем сохранить средствами Word в папке модели под именами graf1(2).doc.
9. Выйти из среды Pilgrim. Открыть папку модели и найти в ней файл результатов моделирования в формате Word.
10. Распечатать графические файлы и файл результатов моделирования на
принтере.
3.5. Отчет о проделанной работе
Отчет о выполнении лабораторной работы №3 необходимо оформить на
листах формата А4 (титульный лист оформить по прил. 2). Отчет должен с одержать описание и результаты работы, представляемые в следующей последовательности:
- описание моделируемой задачи на основе принципа клапана с таймером
(в соответствии с номером варианта);
- процесс формализации организации работы станции метрополитена (описание констант, переменных, узлов, транзактов, старта и финиша работы
модели);
- распечатки графиков и результатов с оценкой полученных данных (не
менее 2-4 страниц);
- рекомендации по улучшению организации работы станции метрополитена с целью эффективного обслуживания пассажиров и движения поездов
Контрольные вопросы
1. Как производится управление модельным временем?
2. С помощью, каких узлов производится моделирование клапана с таймером?
3. Какие модели относятся к разомкнутым?
4. Какой оператор является первым оператором модели?
5. Можно ли освободить уничтожающий транзакт из “зависшего” узла delet?
6. Каким образом можно включить блок операторов С++ в состав узла модели?
7. Какие две основные функции выполняет терминатор, убирающий транзакты
из модели?
Литература
23
[1, 3, 4]
ЛАБОРАТОРНАЯ РАБОТА №4
МОДЕЛИРОВАНИЕ ЗАМКНУТОЙ КОРПОРАТИВНОЙ
ИНФОРМАЦИОННОЙ СИСТЕМЫ
4.1. Цель работы
Изучить принципы построения и анализа замкнутых систем с использованием схемы зарядки.
Время: 2 часа.
4.2. Описание моделируемого процесса
Рассмотрим локальную вычислительную сеть (ЛВС), имеющую один
процессор, один винчестер и несколько пользовательских терминалов. Польз ователи посылают операционной системе OS UNIX запросы на выполнение своих прикладных задач, которые содержат некоторое количество операций вводавывода (I/O). Посланный запрос поступает на обработку процессором (CPU).
По каждому запросу создается процесс, который начинает работать в ЛВС. Созданному процессу OS UNIX выделяет участок памяти (RAM) и затем несколько буферов I/O (ресурсы ЛВС). Процессы, требующие меньший объем ресурса,
имеют больший приоритет при его выделении. Если ресурсов ЛВС недостаточно для очередного процесса, он ожидает освобождения ресурса другими процессами. После этого процесс получает доступ к винчестеру (HDD) для выполнения одной операции I/O. Процесс, завершивший свою работу, освобождает
занимаемые им ресурсы, возвращая их операционной системе.
После выделения ресурса и выполнения каждой операции ввода-вывода
CPU определяет очередной этап обработки процесса. Если при очередной проверке состояния процесса необходимое количество операций I/O окажется выполненным, пользователю направляется сигнал о выполнении его запроса. Получив сигнал, пользователь обдумывает и посылает следующий запрос.
4.3. Пример решения
Проанализируем схему, имитирующую работу ЛВС под управлением OS
UNIX (рис.4.1). Формирование схемы модели производится с помощью конструктора Gem-1.0. Описание каждого узла, а также операторов moodbeg и
moodend выполняется в соответствии с алгоритмом, изложенным в прил. 1.
В модели транзакт имеет несколько состояний:
- обдумываемый пользователем запрос;
- посланный пользователем запрос на организацию процесса вводавывода;
- созданный OS UNIX-V процесс I/O;
- процесс, получивший RAM;
24
detach( MEMORY,RAM_AMOUNT)
detach( IO_BUFFERS,BUF_AMOUNT)
Генерация
пользователей
8
схема зарядки
замкнутой
модели
S
2
1
CPU
Q
S
Очередь к
CPU
Терминалы
пользователей
4
S
3
Q
Очередь к
HDD
HDD
5
Att
6
Диспетчер
ресурсов
Выделить
RAM
Man
7
Att
Выделить
буферы I/O
Рис. 4.1. Схема модели работы ЛВС под OS UNIX
- процесс, получивший буферы I/O;
- процесс, выполнивший хотя бы одну операцию I/O;
-сигнал пользователю о выполнении запроса.
Текущее состояние транзакта заносится в его параметр и является критерием перехода из сервера, имитирующего работу процессора. Изменение с о-
25
стояния транзакта осуществляется в узлах, имитирующих терминалы пользователей, работу CPU, обращение к HDD, выделение RAM и буферов I/O.
Имена используемых параметров транзактов переопределены оператор ами #define.
Модель является замкнутой. С помощью схемы зарядки (узлы 9, 10 и 11)
генерируется семейство транзактов количеством USERS (число терминалов
пользователей). Сгенерированные транзакты поступают в сервер (узел 8), имитирующий пользовательские терминалы. Число каналов сервера равно константе USERS. Время обслуживания есть время обдумывания пользователем запроса к OS UNIX.
Перед входом в узел состояние транзакта (параметр PROCESS_STATUS)
получает значение RAM. Транзакт, выйдя из сервера, будет играть роль запроса
на создание процесса I/O, и ему нужно будет выделить память.
Из сервера транзакт переходит в очередь (узел 1), имитирующую очередь
к процессору, и далее в сервер (узел 2), имитирующий процессор. Перед входом в узел на основании значения параметра PROCESS_STATUS принимается
решение о дальнейшей обработке транзакта. Если состояние транзакта имеет
значение HDD, это значит, что данный транзакт имитирует уже созданный пр оцесс I/O.
Если при этом установлен флажок доступа к винчестеру (параметр транзакта HDD_ACCESS равен 1), значит, процесс выполнил хотя бы одну опер ацию ввода-вывода и с вероятностью 0,2 является завершенным (значение генератора rundum больше 0,8).
В этом случае транзакт отправляется в сервер (8) - OS UNIX посылает
пользователю сигнал о выполнении его запроса. Если же либо значение
HDD_ACCESS равно 0 (процесс не выполнил еще ни одной операции вводавывода), либо значение генератора rundum не превосходит 0,8 (процесс не завершен), то транзакт отправляется в очередь (узел 3), имитирующую очередь к
винчестеру на совершение операций I/O (процесс должен выполнить очередную операцию ввода-вывода).
Если состояние транзакта имеет значение BUFF, значит, процесс получил
память и теперь должен получить буферы I/O. В этом случае транзакт отправляется на склад ресурсов (узел 7), имитирующий выделение процессу буферов
I/O. Если состояние транзакта имеет значение RAM, значит, транзакт имитирует только что пришедший запрос на создание процесса I/O. В этом случае транзакт отправляется на склад ресурсов (узел 5), имитирующий выделение процессу памяти.
Число каналов сервера равно 1 - процессор одновременно обрабатывает
один процесс (запрос). Время обслуживания есть время обработки процесса
(запроса) процессором и имеет равномерный закон распределения.
Если вошедший в узел транзакт будет отправлен в сервер (узел 8), сбрасывается флажок доступа к винчестеру HDD_ACCESS ( он получает значение 0),
и транзакт возвращает полученные им ресурсы (выполняются операции detach).
В очереди (узел 3) устанавливается флажок доступа к винчестеру
HDD_ACCESS, и транзакт переходит в сервер (узел 4), имитирующий обраще-
26
ние к винчестеру - операцию I/O. Число каналов сервера равно 1 - одновременно выполняется одна операция I/O. Время обслуживания в сервере есть время
доступа к винчестеру и задано с помощью beta-распределения с минимальным
временем доступа 0,05 секунды, максимальным – 0,15 секунды и наиболее вероятным – 0,1 секунды. Из сервера транзакт переходит в очередь (узел 1).
На складе ресурсов (узел 5) транзакту выделяется ресурс “RAM”. Перед
входом в узел определяется объем запрашиваемой памяти (параметр транзакта
RAM_AMOUNT) как случайная доля от максимального выделяемого объема
памяти.
Состояние транзакта PROCESS_STATUS получит значение BUFF - процесс помечается как ожидающий выделения буферов I/O. В описании узла параметр RAM_AMOUNT указывает количество запрашиваемого ресурса. Флажок учета приоритета запроса установлен (см. п. 4.2). Далее транзакт переходит
к управляющему складом (узел 6), и оттуда - в очередь (узел 1).
На складе ресурсов (узел 7) транзакту выделяется требуемое количество
буферов I/O (параметр транзакта BUF_AMOUNT). Состояние транзакта получает значение HDD (процесс готов к выполнению операций I/O - доступ к винчестеру разрешен). В остальном узел (7) аналогичен узлу (5).
После формирования схемы модели и компиляции кода С++ (файл lvs.cpp)
построить проект, проверить на ошибки и провести экстремальный экспер имент (не менее 5-10 испытаний) в соответствии с прил.1.
В результате испытаний получить графические результаты по динамике
задержек в очереди и табличные результаты (рис. 4.2).
*--------------------------------------------------------------------------------------------------------- *
| НАЗВАНИЕ МОДЕЛИ:
Лок.ВС / UNIX-V
|
| ВРЕМЯ МОДЕЛИРОВАНИЯ: 28800.00
Лист: 1
|
|---------------------------------------------------------------------------------------------|
|
|
|
|
|Загруз-|
|
2
|
|
|
|
|
| No | Наименование | Тип |Точ-| ка, %=| M [t] | C [t] |Счeтчик|Кол.|Оcт.|Состояние узла|
|узла|
узла
| узла | ка |Путь,км| среднее | вариация| входов|кан.| тр.| в этот момент|
|----------------------------------------------------------------------- ----------------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 Очередь к CPU
queue
0.05
2.34 205831
1
0
открыт |
|
2 CPU
serv
- %= 71.3
0.10
0.33 205831
1
1
открыт |
|
3 Очередь к HDD
queue
0.01
10.55 128517
1
0
открыт |
|
4 HDD
serv
- %= 44.6
0.10
0.04 128517
1
1
открыт |
|
5 Выделить RAM
attach
- %= 73.8
42.33
51.75
25799
1
41
9 S
|
2495 D
|
6 Диспет.ресурсов manage
0.00
1.00
51516
1
0
открыт |
|
7 Выделить буферы attach
- %= 55.5
0.38
7.37
25758
1
0
1 S
|
0 D
|
8 Терминалы п-лей serv
- %= 17.9
10.01
0.06
25806
50
7
открыт |
|
9 Вспом. транзакт ag
0.00
1.00
2
1
1
открыт |
| 10 Генерация п-лей creat
0.00
1.00
50
1
0
открыт |
| 11 Выключение Ag 9 term
0.00
1.00
2
0
1
закрыт |
|
|
|
|
|
|
|
|
|
|
|
|
-------------*---------------------------------------------------------------------------------------------*
Рис.4.2. Результаты моделирования
За период моделирования к OS UNIX поступило 25799 запросов на создание процесса ввода-вывода (счетчик входов узла 5). Каждый пользователь послал в среднем по 500 запросов, и 7 пользователей на момент окончания моде-
27
лирования обдумывают очередной запрос. В среднем пользователи потратили
на обдумывание запросов 18 % времени работы с ЛВС.
25 758 процессов было обеспечено ресурсами (счетчик входов узла 7 показывает число процессов, получивших ресурс, так как все транзакты покинули
узел). 41 запрос ожидает выделения ресурса RAM. Было совершено 128 516
операций ввода-вывода, и одна операция осталась незаконченной. Было произведено 205831 обращений к процессору, и на момент окончания моделирования
процессор находился в состоянии работы. Всего процессор находился в состоянии работы 71 % времени работы ЛВС, операции ввода-вывода заняли 42 %
времени. Среднее время ожидания доступа к процессору составило 0,05 секунды, среднее время ожидания операции ввода-вывода – 0,01 секунды.
Средняя загруженность ресурса RAM составляет 73 %. На момент окончания моделирования остаток ресурса RAM составляет 9 Мб, а стоящие в очереди процессы требуют в общей сложности 2495 Мб памяти. Средняя загруженность ресурса буферов I/O составляет 55 %. На момент окончания моделирования свободен один буфер, и потребности в ресурсе нет. Среднее время
ожидания выделения RAM составляет 42 секунды, буферов – 0,38 секунды.
Различия в результатах связаны с тем, что процесс вначале требует выделения
RAM, а затем - буферов ввода-вывода.
Вариант объектного кода модели представлен в прил. 3 (пункт 4).
4.4. Задание и алгоритм выполнения лабораторной работы
В качестве алгоритма выполнения лабораторной работы можно принять
следующую последовательность действий:
1. На основании индивидуального задания (табл. 4.1) построить схему модели
в графическом редакторе Gem-1.0.
2. Создать на жестком диске рабочую папку для будущего проекта (в папке
Modeli pilgrim\lvs45/46).
3. Перенести в рабочую папку файл модели в формате *.*.cpp (Modeli pilgrim\lvs45/46\**.cpp).
4. Открыть приложение Microsoft Visual C++ (Меню ПУСК, ПРОГРАММЫ,
Visual C++).
5. Пройти следующую последовательность пунктов меню:
5.1. File,
5.2. New,
5.3. Project,
5.4. Win32 Application:
5.4.1. В строке Locaion указать (через кнопку Browse) путь к файлу
модели.
5.4.2. Нажать кнопку OK.
6. Вставить в проект файлы, необходимы для построения объектного кода модели.
6.1. Непосредственно к модели:
- cтандартную библиотеку С++ Comctl32.lib (папка Pilgrim5.0\Libnt),
- библиотеку системы PILGRIM Pilgrim.lib (папка Pilgrim5.0\Libnt).
28
6.2. В папку Resource. Files:
- файл ресурсов Windows для моделей PILGRIM Pilgrim.res (папка
Pilgrim5.0\Projects\),
- файл значка Pilgrim – Pilgrim.ico (папка Pilgrim5.0\Projects\),
- файл результатов моделирования Pilgrim – Userres.rc (папка
Pilgrim5.0\Projects\).
6.3. В папку Source.files - файл модели <модель>.cpp (адрес расположения
файла модели должен совпадать с указанным в окне Location перед
вводом имени проекта в окне Name).
6.4.В папку Header files:
- userhid.h (папка Pilgrim5.0\Projects\),
- pilgrim.h (папка Pilgrim5.0\Include \),
- simulate.h (папка Pilgrim5.0\ Include \).
Таблица 4.1
Параметры
Коли- Время Время Опера- Опера- Опера- Max
Max
ВероятВремя
чество запроса обработки ция
ция
ция Объем число
ность
моделировапользо- пользо- докуI/O
I/O
I/O
MAX буферов завершения
ния
Номер вателей вателей, мента, (min), (max), (вероят- RAM,
I/O,
процесса MOD_TIME,
вари- Users,
с
с
с
с
ность), Мб
шт.
I/O
ч
анта чел.
с
MAX_
BUFFERS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
50
45
55
60
35
87
46
89
65
76
84
57
83
52
48
40
50
60
39
56
10
11
9
8
12
14
7
13
10
6
18
20
16
19
9
12
11
15
13
11
0,1
0,09
0,07
0,12
0,2
0,11
0,09
0,07
0,13
0,17
0,15
0,08
0,11
0,09
0,13
0,07
0,15
0,19
0,2
0,14
0,05
0,04
0,06
0,05
0,03
0,07
0,04
0,03
0,05
0,06
0,04
0,03
0,04
0,07
0,06
0,05
0,03
0,06
0,04
0,05
0,15
0,16
0,14
0,16
0,17
0,15
0,18
0,16
0,12
0,17
0,15
0,17
0,15
0,16
0,12
0,17
0,14
0,18
0,15
0,19
0,1
0,12
0,08
0,11
0,14
0,08
0,14
0,13
0,07
0,11
0,11
0,14
0,11
0,09
0,06
0,12
0,11
0,12
0,11
0,14
64
128
96
256
96
512
128
64
256
256
64
512
64
96
96
128
256
512
128
256
10
9
11
15
13
8
17
8
13
11
10
7
16
11
18
9
12
17
10
9
0,2
0,1
0,4
0,3
0,5
0,4
0,2
0,3
0,3
0,2
0,1
0,1
0,4
0,3
0,2
0,2
0,1
0,5
0,3
0,2
8
7,5
6,8
8,2
9,0
8,1
7,9
7,2
7
7,6
8,7
7,7
8,4
7,6
6,9
7,5
8,2
9,0
6,8
7
29
В табл. 4.1 применяются следующие сокращения, для обозначения переменных и транзактов используемых в модели ЛВС:
- RAM – флаг создания процесса;
- BUFF – флаг захвата буферов ввода-вывода;
- HDD - флаг операции ввода-вывода;
- PROCESS_STATUS t -> i u o – состояние транзакта;
- RAM_AMOUNT t -> i u 1 - выделяемый объем памяти;
- BUF_AMOUNT t -> i u 2 - число выделяемых буферов;
- HDD_ACCESS t -> i u 3 - флаг получения доступа и HDD;
- MEMORY -5 – узел выделения ;
- IO BUFFERS - 7 - узел выделения буферов ввода-вывода.
7. Построить исполняемый файл модели. Это делается с помощью меню Build,
пункт Build <модель>.exe. Если в окне отчета о процессе построения появится
сообщение «0 errors», можно запустить модель, выбрав в меню Build пункт Execute <модель>.exe.
8. Запустить процесс имитации, используя меню Запуск модели системы Pilgrim-5.0, выбрав в меню Результаты, пункт Динамика задержки. Получить графики задержек транзактов в разных узлах модели с помощью выпадающего или
графического меню системы Pilgrim-5.0. Вариант графика полученных результатов задержек транзактов приведен на рис.П. 1.16.
После выполнения указанных действий необходимо просмотреть:
- графики динамики задержек в узле Queue 1 и 3 (очередь к процессору и
очередь к жесткому диску),
- графики задержек в схеме зарядки замкнутой модели,
- графики задержек на складе ресурсов (диспетчер ресурсов и буферы
обмена),
- графики загрузки узлов Serv 4 и 8 (жесткий диск и терминалы пользователей).
Указанные графики скопировать с помощью клавиши PrtSc клавиатуры и
затем сохранить средствами Word в папке модели под именами graf1(2).doc.
9. Выйти из среды Pilgrim. Открыть папку модели и найти в ней файл результатов моделирования в формате Word.
10. Распечатать графические файлы и файл результатов моделирования на
принтере.
4.5. Отчет о проделанной работе
Отчет о выполнении лабораторной работы №4 необходимо оформить на
листах формата А4 (титульный лист оформить по прил. 2). Отчет должен содержать описание и результаты работы, представляемые в следующей последовательности:
- описание моделируемой задачи на основе принципа зарядки замкнутой
системы (в соответствии с номером варианта);
30
- процесс формализации схемы ЛВС под управлением операционной системы Unix (описание констант, переменных, узлов, транзактов, старта и
финиша работы модели);
- распечатки графиков и результатов с оценкой полученных данных (не
менее 8-10 страниц);
- рекомендации по улучшению конфигурирования и администрирования
ЛВС для минимизации временных параметров работы.
Контрольные вопросы
1. Для чего нужен конструктор имитационных моделей?
2. Какие могут быть переменные в модели? Как они определяются?
3. В чем состоит основное достоинство конструктора Pilgrim?
4. Почему появляется многослойная конструкция модели и что она дает разр аботчику?
5. В чем польза контрольных точек?
6. Какие основные технологические окна имеет конструктор Pilgrim?
7. Можно ли освободить уничтожающий транзакт из “зависшего узла” типа
delet?
8. Каким образом можно включить блок операторов С++ в состав узла имитационной модели?
9. Как задать схему выбора дальнейшего пути продвижения транзакта в зависимости от значения некоторых его параметров?
10. Какие параметры транзактов имитационной модели всегда доступны для
разработчика?
Литература
[ 1, 3, 6 ]
ЛАБОРАТОРНАЯ РАБОТА № 5
МОДЕЛИРОВАНИЕ МИНИМИЗАЦИИ ПРОИЗВОДСТВЕННЫХ ЗАТРАТ
5.1. Цель работы
Закрепить теоретический материал и получить навыки распределения ресурсов производственной фирмы для минимизации дневных затрат в замкнутых имитационных моделях.
Время: 6 часов.
31
5.2. Описание моделируемого процесса
Рассмотрим модель фабрики, имеющей швейный цех на 50 рабочих мест
со швейными машинами, которые выходят из строя и требуют ремонта. Поэтому на фабрике есть ремонтный цех, в котором работают специалисты наладчики машин. Среднее время безотказной работы одной машины (случайная величина, распределенная по экспоненциальному закону) составляет 157,0
ч. Среднее время ремонта машины равно 7,0 ч, а среднеквадратичное отклонение 3,0 ч ( распределено по нормальному закону).
Сформулируем следующую задачу: сколько нужно арендовать резервных
машин j (дополнительно к 50 собственным) и сколько необходимо нанять
наладчиков i, чтобы сделать минимальными затраты на производство, связанные с ремонтом и наладкой машин? Все исходные данные для решения поставленной задачи сведены в табл. 5.1. В качестве денежной единицы выберем американский доллар.
Таблица 5.1
Параметры швейной фабрики
Параметр швейного производства
1. Название швейной фабрики
2. Заработная плата одного наладчика (в час), $
3. Оплата за аренду одной швейной машины (в день), $
4. Убыток из-за простоя одного рабочего места по
причине неисправности швейной машины (в час), $
5. Время безотказной работы одной машины, ч
6. Среднее время ремонта (наладки) одной машины, ч
7. Среднеквадратичное отклонение времени ремонта
(наладки) одной машины, ч
8. Продолжительность одного рабочего дня, ч
9. Число рабочих часов в одну неделю, ч
10. Число рабочих недель в одном году
Значение
параметра
«Мануфактура»
3,75
30,0
20,0
157,0
7,0
3,0
8,0
40,0
52
5.3. Пример решения
Рассмотрим структурную схему модели организации производства
(рис.5.1). Формирование схемы модели производится с помощью конструктора
Gem-1.0. Описание каждого узла, а также операторов moodbeg и moodend выполняется в соответствии с алгоритмом, изложенным в прил. 1.
32
Рис. 5.1. Структурная схема модели для решения задачи
минимизации производственных затрат
Машины в производственном цехе находятся в четырех состояниях,
перечисленных в табл. 5.2.
Таблица 5.2
Состояния машин
Номер
фазы
1
2
3
4
Практический смысл фазы
Помещение, где находятся исправные швейные машины
(их начальное число Arend=j)
Швейный цех, в котором имеется Nowon рабочих мест для
=50 швейных машин
Помещение, где находятся неисправные швейные машины,
ожидающие ремонта
Ремонтный цех, в котором работают специалистыналадчики, число которых Men=i
Тип узла
в модели
Число
каналов
queue
-
serv
Nowon
queue
-
serv
Men
Введем в рассмотрение следующие переменные, которые далее будут
использоваться в модели:
• Nowon - количество рабочих мест в швейном цехе и соответственно
количество собственных швейных машин;
• Arend - число арендуемых дополнительных машин для замены вышедших из строя;
33
• Men - количество наладчиков, производящих ремонт (наладку) швейных машин.
В начальный момент решено арендовать Arend машин. Эти машины должны
некоторое время находиться в каком-то помещении и «ждать», пока не выйдет из
строя машина в цехе. Далее в случае выхода из строя и ремонта машин в этом помещении будут находиться машины, число которых - случайная величина. Пребывание машин в этом помещении является состоянием 1. Вышедшая из строя машина поступит в ремонт при условии, что наладчик свободен. Вероятность такого события, естественно, не равна единице. Поэтому неисправные машины в ожидании
ремонта направляются в другое помещение. Пребывание в этом помещении является состоянием 3. Если подходит очередь ремонта неисправной машины, она поступает в ремонтный цех. Ремонт - состояние 4 каждой машины.
Далее начнем строить имитационную модель. Наиболее рациональное решение заключается в том, чтобы выбрать машины в качестве транзактов. В табл. 5.2
приведены типы узлов, имитирующих соответствующие состояния. Количество
каналов узла serv в состоянии 2 равно Nowon, а число каналов узла serv в состоянии 4 - это значение Men.
Для решения проблемы отсутствия транзактов в модели введем специальную
часть, которая называется схемой зарядки.
Узлы с номерами 1 (queue), 2 (serv), 3 (queue) и 4 (serv) имитируют пребывание машин в состояниях с соответствующими номерами. Эта замкнутая схема не
требует дальнейших комментариев.
Далее рассмотрим схему зарядки, которая состоит из трех узлов: узел 5 (генератор ag), узел 6 (транзактно-управляемый генератор creat) и узел 7 (терминатор term со вспомогательным оператором cheg). Модельное время, в течение которого будем осуществлять эксперимент, задается переменной Protime. Если мы хотим, чтобы это время составляло 3 года, а единицей измерения установим 1 ч, то
это время равно 6240,0 ч. Узел ag генерирует первый транзакт через какой-либо заданный или случайный интервал времени tbeg.. Этот интервал можно назвать временем подготовки производства. Сгенерированный первый транзакт (назовем его
прародителем) войдет в узел creat. В результате из этого узла выйдут
Nowon + Arend транзактов, которые поступят в узел 1. Первые Nowon транзактов без задержки пройдут этот узел и поступят в узел 2; причем каждый
транзакт - машина займет свой канал, т.е. рабочее место. Остальные Arend
транзактов останутся в узле 1.
Что касается транзакта - прародителя, то он выйдет из узла creat и войдет в узел term. В этом узле перед уничтожением транзакт - прародитель выполнит операцию cheg для перенастройки генератора ag. Эта операция установит время генерации второго транзакта, равное Protime. Учитывая, что с
начала запуска модели уже прошло время tbeg, момент генерации второго
транзакта будет равен Protime + tbeg (т.е. после выполнения модели). Это означает, что второй транзакт не выйдет из генератора во время моделирования.
Далее перейдем к планированию имитационного эксперимента для
определения рационального количества резервных машин и числа специали-
34
стов-наладчиков. Возможность существования оптимального решения вытекает из следующих предпосылок.
Если число наладчиков мало или равно нулю, то машины в основном
будут неисправны, а затраты на производство - велики из-за простоя рабочих
мест. Если же число наладчиков очень велико, то будут большими затраты
на заработную плату. Но при отсутствии наладчиков машины постепенно
выйдут из строя, а затраты из-за простоя рабочих мест будут велики. Что касается резервных машин, то, если их число мало или равно нулю, затраты на
производство будут велики из-за простоя рабочих мест. Если же число арендуемых машин очень велико, то будут большими затраты на их аренду.
Необходимо найти минимальное значение на поверхности затрат Еij и
соответственно значения координат iopt (переменная Men) и jорt (переменная Arend). Задача решается методом перебора, так как число возможных вариантов, которые необходимо сравнить, невелико.
Первое, что нужно сделать при проведении имитационного экс перимента, - это привести все времена и темпы затрат к одним единицам измерения. С помощью табл. 5.1 получим статьи ежедневных расходов на производство, представленные в табл. 5.3. Обозначим значения, указанные в каждой
строке, как Аk ,k = 1,2,3.
Таблица 5.3
Статьи ежедневных расходов Ak (k=1,2,3)
Номер
строки
1
2
3
Стоимость
расходов, $
30
30
160
Вид ежедневных расходов
Дневная заработная плата одного наладчика
Дневная аренда одной машины
Убыток из-за простоя рабочего места
С помощью имитационной модели необходимо получить значения загрузки рабочих мест.
Построим матрицу загрузок для различных значений числа наладчиков i и количества швейных машину. Элементы такой матрицы, полученные в ходе имитационного эксперимента, обозначим Bij (табл. 5.4). Поиск оптимальных значений i
и j можно начать со значений i = 3 и j = 3, пропустив меньшие значения (i - число
наладчиков, i = 3, 4, 5; j - число арендуемых швейных машин, j = 3,4, 5).
Таблица 5.4
Загрузка рабочих мест Вij
Число
наладчиков
3
4
5
3
0,951
0,986
0,978
Число арендуемых резервных машин
4
0,974
0,979
0,984
5
0,964
0,978
0,979
35
Далее определим ежедневные затраты на оплату труда наладчиков и аренду
резервных машин. Для этого создадим еще одну матрицу (табл. 5.5) элементов Сij с
той же размерностью, какая существует в табл. 5.4. Элементы этой матрицы определяются с помощью табл. 5.3 из соотношения
Сij
A1i
A2 j, i
3,4,5, j
3,4,5.
Таблица 5.5
Затраты на оплату труда наладчиков и аренду резервных машин Сij
Число
наладчиков
3
4
5
Число арендуемых резервных машин
4
210
240
270
3
180
210
240
5
240
270
300
Перейдем к определению потерь из-за снижения объемов производства по
причине простоя рабочих мест. Для этого построим матрицу (табл. 5.6) элементов
Dij с той же размерностью. Элементы этой матрицы определяются с помощью табл.
5.3 и 5.4. Элементы Bij, представленные в табл. 5.4 - это загрузка оборудования ρ
при конкретных значениях i и j. Поэтому справедливо следующее соотношение:
Dij Nowon(1 Bij ) A3 , i 3,4,5, j 3,4,5.
Таблица 5.6
Потери из-за снижения объемов производства Dij
Число
наладчиков
3
4
5
Число арендуемых резервных машин
4
208
168
128
3
392
112
176
5
288
176
168
Последнее, что нужно сделать, - это определить суммарные ежедневные затраты на производство. Для этого построим матрицу с той же размерностью (табл.
5.7). Элементы матрицы обозначаются Еij и определяются поэлементным суммированием данных табл. 5.5 и 5.6:
Eij
Сij
Dij , i 3,4,5, j 3,4,5.
Таблица 5.7
Суммарные ежедневные затраты на производство Еij
Число
наладчиков
3
4
5
3
571
322
416
Число арендуемых резервных машин
4
418
408
398
5
528
446
468
36
Из полученных значений табл. 5.7 определяются следующие оптимальные
значения:
1) количество нанимаемых наладчиков iopt= 4;
2) число арендуемых резервных швейных машин.
Если бы мы выбрали ранее ошибочно рассчитанные значения iopt = 3
jорt = 3, то затраты ежедневно составляли бы не 322, а 571 долл. Различие в результатах в данном случае весьма значительно.
В табл.5.8 представлен стандартный набор выходных данных, автоматически полученных во время прогона варианта имитационной модели с
конкретными значениями исходных данных.
Таблица 5.8
Результаты моделирования
НАЗВАНИЕ МОДЕЛИ: Мануфактура Ко Лист:1
ВРЕМЯ МОДЕЛИРОВАНИЯ: 6241.0
Но- Наименова- Тип
Точка
Загрузка, %
мер
ние узла
узла
Путь,км
узла
1
Резерв машин queue
2
Машины в раsert
%=98,6
боте
3
Ожидание реqueue
_
монта
4
Машины в реsert
%=69,7
монте
5
Подготовка
ag
_
производства
6
Подготовка
creat
_
_
машин
7
Производство
term
_
_
подготовлено
M(t)
среднее
С2 (t) квадрат
коэфф. вариации
Счетчик
входов
2,6
154,9
2,63
1,03
1973
1971
2,9
2,9
1921
7,1
0,17
1921
1,0
0,00
2
0,0
1,00
53
0,0
1,00
2
Вариант объектного кода модели представлен в прил. 3 (пункт 5).
5.4. Задание и алгоритм выполнения лабораторной работы
В качестве алгоритма выполнения лабораторной работы можно принять
следующую последовательность действий:
1. На основании индивидуального задания (табл. 5.9) построить схему модели
в графическом редакторе Gem-1.0.
2. Создать на жестком диске рабочую папку для будущего проекта
(в папке Modeli pilgrim\factory45/46).
3. Перенести в рабочую папку файл модели в формате .cpp (Modeli pilgrim\factory45/46\**.cpp).
4. Открыть приложение Microsoft Visual C++ (Меню ПУСК, ПРОГРАММЫ,
Visual C++).
37
Таблица 5.9
Номе р
варианта
Число собственных
машин
Nown
Число
наладчиков
Men
Число
арендуемых
машин
Arend
Время
моде лирования,
год
Зарплата
одного
наладчика
в час,
$
О плата
аре нды
одной
машины
в день ,
$
Убыток
из-за
простоя
рабочего
ме ста
в час,
$
Сре днее
время
работы
машины,
ч
Сре днее
вре мя
ре монта,
ч
О тклонение
вре ме ни
ре монта,
ч
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
50
45
47
48
52
55
49
48
51
55
44
56
52
50
49
45
51
44
52
55
3
2
4
4
3
3
2
3
2
2
4
4
3
2
3
3
2
2
4
4
3
4
5
2
2
3
4
4
5
2
3
5
4
2
3
3
2
4
3
5
3,0
2,5
2,8
2,1
2,4
2,8
2,2
2,6
2,2
2,2
2,9
3,0
2,4
2,6
2,8
2,7
2,7
2,2
3,0
2,4
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
3,75
30,0
28,0
27,0
34,0
33,0
29,0
29,6
25,4
28,8
31,3
33,2
29,4
27,6
32,2
29,1
25,8
31,4
26,8
29,2
32,2
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
20,0
157,0
150,0
159,0
153,0
155,0
145,0
164,0
156,0
128,0
110,0
157,0
152,0
145,0
156,0
129,0
111,0
154,0
151,0
115,0
120,0
7,0
8,0
6,8
7,1
7,4
6,2
8,4
7,2
8,3
6,9
6,8
8,0
6,8
7,1
6,2
8,3
6,9
8,4
8,0
7,2
3,0
4,0
2,9
3,2
2,8
2,4
4,1
3,1
2,9
3,3
2,9
3,0
3,3
2,9
3,1
4,2
2,9
4,3
3,9
2,8
5. Пройти следующую последовательность пунктов меню:
5.1 File,
5.2 New,
5.3 Project,
5.4 Win32 Application:
5.4.1 В строке Locaion указать (через кнопку Browse) путь к файлу модели.
5.4.2 Нажать кнопку OK.
6. Вставить в проект файлы, необходимы для построения объектного кода модели.
6.1. Непосредственно к модели:
- cтандартную библиотеку С++ Comctl32.lib (папка Pilgrim5.0\Libnt),
- библиотеку системы PILGRIM Pilgrim.lib (папка Pilgrim5.0\Libnt).
6.2. В папку Resource. Files:
- файл ресурсов Windows для моделей PILGRIM Pilgrim.res (папка
Pilgrim5.0\Projects\),
- файл значка Pilgrim – Pilgrim.ico (папка Pilgrim5.0\Projects\),
- файл результатов моделирования Pilgrim – Userres.rc (папка
38
Pilgrim5.0\Projects\).
6.3. В папку Source.files - файл модели <модель>.cpp (адрес расположения
файла модели должен совпадать с указанным в окне Location перед
вводом имени проекта в окне Name).
6.4. В папку Header.files:
- userhid.h (папка Pilgrim5.0\Projects\),
- pilgrim.h (папка Pilgrim5.0\Include \),
- simulate.h (папка Pilgrim5.0\ Include \).
Примечание: Вставка файлов в проект осуществляется с помощью меню Insert,
пункт Files into Project.
7. Построить исполняемый файл модели. Это делается с помощью меню Build,
пункт Build <модель>.exe. Если в окне отчета о процессе построения появится
сообщение «0 errors», можно запустить модель, выбрав в меню Build пункт Execute <модель>.exe.
8. Запустить процесс имитации, используя меню Запуск модели системы Pilgrim-5.0, выбрав в меню Результаты, пункт Динамика задержки. Получить графики задержек транзактов в разных узлах модели с помощью выпадающего или
графического меню системы Pilgrim-5.0. Вариант графика полученных результатов задержек транзактов приведен на рис.П. 1.16.
После выполнения указанных действий необходимо просмотреть:
- графики динамики загрузки рабочих мест Serv – 2,
- графики интенсивности простоя машин Serv – 4.
Указанные графики скопировать с помощью клавиши PrtSc клавиатуры и
затем сохранить средствами Word в папке модели под именами graf1(2).doc.
9. Выйти из среды Pilgrim. Открыть папку модели и найти в ней файл результатов моделирования в формате Word.
10. Распечатать графические файлы и файл результатов моделирования на
принтере.
11. Используя данные динамики загрузки и простоя рабочих мест, построить
таблицы 5.3 и 5.4 по соответствующей методике.
12. На основе соответствующих методик построить таблицы 5.5, 5.6 и 5.7.
13. На основе данных таблицы 5.7 сделать выводы об оптимальном количестве
нанимаемых наладчиков и резервных машин.
5.5. Отчет о проделанной работе
Отчет о выполнении лабораторной работы №4 необходимо оформить на
листах формата А4 (титульный лист оформить по прил. 2). Отчет должен содержать описание и результаты работы, представляемые в следующей последовательности:
- описание моделируемой задачи (в соответствии с номером варианта);
- процесс формализации схемы работы предприятия (описание констант,
переменных, узлов, транзактов, старта и финиша работы модели);
- распечатки графиков и результатов с оценкой полученных данных (не
менее 12-15 страниц);
39
- рекомендации по минимизации производственных затрат предприятия на
основе анализа полученных и рассчитанных в ходе лабораторной работы
данных.
Контрольные вопросы
1. Почему аналитическое решение в модели “Минимизация производственных
затрат” неправильное?
2. Какие две основные тенденции указывают на возможность существования
оптимального решения в этой модели?
3. Для чего нужна схема зарядки в этой модели?
4. Почему поиск оптимального решения методом перебора начинается со значений i=3, j=3 с последующим увеличением i и j?
5. Каков алгоритм нахождения оптимального значения дневных затрат производственной фирмы?
6. Какие ограничения можно выделить в рассматриваемой модели?
Литература
[ 2, 4, 5]
ЗАКЛЮЧЕНИЕ
Непрерывно совершенствующийся процесс проектирования экономических систем с помощью информационных технологий сегодня привел к появлению специалистов нового уровня, использующих элементы прикладной информатики в экономике. При этом актуальность имитационных моделей экономических систем возрастает из–за их гибкости, адекватности реальным процессам, невысокой стоимости реализации на базе современных ЭВМ. Особенно
эффективно применение имитационного моделирования для исследования
сильных и слабых сторон производственных процессов предприятий. Проектирование имитационной модели бизнес – процессов предприятия, обработка результатов моделирования с последующим анализом могут помочь выявить проблемы в функционировании как всего предприятия, так и его структурных подразделений. Управленческие решения руководства предприятия в этом случае
становятся максимально достоверными, оперативными и адекватными возникшим проблемам и позволят сохранить большие оборотные средства.
В учебном пособии сделана попытка системного подхода к изложению
научных основ моделирования экономических систем для специалистов, занятых внедрением информационных технологий на предприятиях.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
40
1. Емельянов А.А. Структурный анализ и динамические имитационные модели
в экономике.- М.: Финансы и статистика, 1998. – с. 24-31.
2. Емельянов А.А., Власова Е.А. Структурный анализ и имитационное моделирование в системе PILGRIM: учеб. пособие.- М.: МЭСИ, 2000. – c. 128-141.
3. Калянов Г.Н. CASE структурный системный анализ (автоматизация и применение). – М.: Лори, 1996. – с. 14-16.
4. Кофман А., Крюон Р. Массовое обслуживание. Теория и приложения. – М.:
Мир, 1965. – с. 31-34, 51-55.
5. Марка Д. А., МакГоуэн К.Л. Методология структурного анализа и проектирования. – М.: Метатехнология, 1993. – с. 64-66.
6. Шеннон Р. Имитационное моделирование систем: наука и искусство. – М.:
Мир,1978. – с. 19-21.
ПРИЛОЖЕНИЕ 1
41
ТЕХНОЛОГИЧЕСКИЙ ПРОЦЕСС ПОСТРОЕНИЯ
ИМИТАЦИОННОЙ МОДЕЛИ
1.1. Вербальное описание моделируемого процесса
Рассмотрим технологический процесс создания модели в системе
Pilgrim на примере системы массового обслуживания с отказами.
Построим модель обслуживания физических лиц в банке. Если все операционисты заняты обслуживанием клиентов, то новые приходящие клиенты
встают в общую очередь. Первый, стоящий в очереди клиент, переходит на обслуживание к освободившемуся операционисту. Если время ожидания обслуживания клиента превышает некоторый максимум, клиент уходит в другой
банк.
Известны следующие параметры этого процесса:
- средний интервал между приходами клиентов;
- среднее время обслуживания клиента операционистом.
Необходимо определить, сколько требуется операционистов, чтобы в течение заданного промежутка времени (например, рабочего дня) не происходило
значительных задержек в обслуживании клиентов, но в то же время не было
значительного простоя сотрудников.
При построении данной модели необходимо задать следующие параметры:
- интервал между приходами клиентов;
- интервал для обслуживания клиентов;
- максимально допустимое время ожидания обслуживания;
- количество операционистов;
- длительность моделирования.
В результате испытаний модели будет представлена следующая информация:
- количество клиентов, пришедших в банк в течение контрольного периода времени;
- количество обслуженных клиентов;
- количество клиентов, ушедших без обслуживания;
-время ожидания обслуживания (минимальное, максимальное и среднее
за весь контрольный период);
- процент загрузки сотрудников банка.
Результаты моделирования будут представлены в файле в виде таблицы
(рис. П. 1.1).
Анализируя результаты моделирования можно сделать вывод, что загрузка операционистов составила 96,5%. Это приводит к отказам в обслуживании
клиентов (узел 106), увеличению времени ожидания клиентов в очереди (узел
102). Поэтому параметры исходных данных использованных при моделировании не могут устроить ни руководство банка, ни клиентов.
Среднее время
ожидания
обслуживания
Средний интервал
обслуживания
*---------------------------------------------------------------------------------------------*
клиента
| НАЗВАНИЕ МОДЕЛИ:
Тест1
|
| ВРЕМЯ МОДЕЛИРОВАНИЯ: 24.00
Лист: 1
|
|---------------------------------------------------------------------------------------------|
|
|
|
|
|
|
|
2
|
|
|
|
|
| No | Наименование | Тип |Точ-|Загруз-| M [t] | C [t] |Счетчик|Кол.|Оcт.|Состояние узла|
|узла|
узла
| узла | ка |ка(%=),| среднее |квадрат |входов |кан.|тр. |в этот момент |
42
Этапы построения модели.
1.2. Построение графа модели
С учетом приведенного вербального описания моделируемого процесса и
ожидаемых результатов моделирования для построения графа модели необходимо выполнить следующие действия:
● Найти на диске папку Gem и запустить файл Gem.exe. При запуске gem.exe
на выполнение перед пользователем появляется основное окно, содержащее
меню, панель “горячих кнопок”, панель инструментов, информационную
строку (рис. П. 1.2). Область редактирования графа модели пуста, для редактирования необходимо создать новую модель либо загрузить ранее сохраненную.
● В меню «Файл» выбрать пункт «Создать» и развернуть рабочую плоскость
на весь экран (рис. П. 1.2). С помощью меню “Настройки” задайте необходимый цвет рабочей плоскости, а в меню “Помощь” просмотрите необходимую
справочную информацию о данной версии графического конструктора и клавиши – подсказки.
43
Рис.П.1.2. Создание рабочей плоскости
● С помощью палитры объектов построить граф модели на рабочей
плоскости (рис.П. 1.3).
Изображения узлов перетаскиваются при нажатой левой кнопки мыши.
Нумеруются узлы автоматически, причем первая цифра номера – это номер
плоскости, так как в системе PILGRIM есть возможность иерархического
построения графов моделей. Имена узлов прописываются в диалоговых окнах
описания узлов, вход в которые осуществляется с помощью двойного щелчка
мыши на изображении узла графа.
Для удаления узла нужно поместить на узел кнопку с красным косым
крестом и подтвердить необходимость удаления.
Стрелки проводятся следующим образом:
- захватить стрелку (кнопка с синим крестом в круге) левой кнопкой мыши;
- не отпуская кнопку, поместить указатель мыши на узел-источник
стрелки;
- отпустить кнопку - теперь левый конец стрелки «привязан» к узлуисточнику;
- поместить указатель мыши на узел-приемник стрелки и щелкнуть левой
кнопкой мыши.
Удаляются стрелки как Выходы из узла. Для этого нужно войти в окно
описания узла-источника стрелки, пометить мышкой соответствующий выход и
затем удалить его с помощью кнопки «Удалить».
44
Построив граф, убедитесь в том, что у вас нет «зацикливаний», то есть
стрелок, протянутых в тот же узел, из которого они выходят. Для этого
просмотрите все Выходы, принадлежащие узлам графа, и удалите ошибочные.
Рис. П.1.3. Граф модели на рабочей плоскости
1.3.
Инициализация модели (рис. П 1.4)
Нажмите кнопку ModBeg (Model Begin) под палитрой объектов.
В строке «Название» введите имя модели, которое будет указано в
таблице результатов моделирования. Расширение .pgf следует убрать, так как
это имя не является именем какого-либо файла, как ошибочно решили
разработчики Gem.
В стороке «Узлы» автоматически показывается номер последнего узла
модели.
В строке «Время» следует указать длительность периода моделирования.
В модели время «течет» в условных единицах, поэтому указывается только
количество необходимых отрезков времени, которое должна «прожить» ваша
модель. В качестве единичного отрезка разумно принять минимальный отрезок
времени, который будет использоваться при задании параметров модели.
В строке «ПСЧ» указывается начальное значение для генератора
псевдослучайных чисел, необходимых для имитации случайных процесов.
Автоматически для этого используется показание компьютерного таймера.
45
Рис. П.1.4. Инициализация узлов модели
В строке «Пространство» пользователю предлагается выбрать тип
пространства, если модель будет работать с координатной плоскостью. В
данной задаче это не требуется.
Строки «Задержка» и «Поток» предназначены для задания номеров
контролируемых узлов: очереди (узел «Queue») и терминатора (узел «Term»)
соответственно. Для указанных узлов в процессе моделирования будут
строиться графики времени задержки (очередь) и динамики выходного потока
(терминатор). График времени задержки показывает среднее значение времени
ожидания транзакта в очереди в каждый единичный отрезок модельного
времени. График динамики потока показывает число транзактов, попавших в
терминатор в единицу модельного времени (то есть интенсивность выходного
потока заявок в моделируемой системе).
В строке «Точность» можно выбрать необходимое число знаков после
десятичной точки в таблице результатов моделирования.
В окне «Начальный С++ текст» при необходимости переопределяются
имена параметров транзактов и задаются числовые константы. В данной задаче определены имена T_wait (параметр транзакта, в который будет запис ываться его время ожидания в очереди) и T_start (параметр, в который будет
занесено время входа в очередь), а также описана константа T_max, задающая
максимально допустимое время ожидания.
Окно инициализации ресурсов предназначено для задания начального
состояния узлов, которые в данной модели не используются.
46
Кнопка «ModEnd» служит для задания параметров файла результатов
моделирования (имя файла, число строк на странице и флаг разбивки на страницы). Можно оставить вариант, предлагаемый по умолчанию.
Кнопка «Переменные» служит для определения рабочих переменных (в
данной задаче не нужно).
1.4.
Описание узлов модели
Для описания узлов, как было сказано выше, необходимо дважды
щелкнуть с помощью мыши по изображению узла графа. Номера узла и
соответствующей рабочей плоскости проставляются автоматически. Имя узла
вводится пользователем в соответствии с логической ролью узла в модели.
Класс узла позволяет изменить тип узла на другой, имеющий ту же форму
графического значка.
Кнопка «Определить параметры» предназначена для задания
настроечных параметров узла.
Окна «Общий С++ текст» позволяют описать необходимые
дополнительные действия, которые должны выполняться всякий раз, когда в
узел входит очередной транзакт. Эти действия (записанные по синтаксическим
правилам языка программирования С++) могут быть выполнены либо перед
входом транзакта в узел (закладка «Перед входом в узел»), либо сразу после
входа перед началом обслуживания в узле (закладка «После входа в узел»).
Разница между этими позициями состоит в следующем. Действия,
указанные перед прохождением узла, могут, вообще говоря, быть выполнены
моделью более одного раза – при неудачных попытках входа в узел (например,
в занятый сервер или в закрытый ключ). Модель реально несколько раз
пытается «протолкнуть» очередной транзакт на шаг вперед, и каждый раз
выполняются действия «Перед прохождением узла». Таким образом, в этом
месте не должно быть указано никаких операций, повторное выполнение
которых приведет к ошибке (например, операции типа «х=х+1»). Однако,
определение значений переменных параметров настройки узла (если таковые
имеются) должно быть сделано именно перед прохождением узла.
Окна «Входы» и «Выходы» показывают маршрут следования транзактов.
Если из узла имеется более одного выхода, то необходимо задать правила
выбора пути транзакта. Для этого нужно последовательно пометить мышкой
каждый из вариантов перехода транзакта и в строке «Условие перехода»
записать логическое условие, при выполнении которого выбирается
сответствующий выход. Важно помнить, что проверка условий осуществляется
в порядке следования вариатов в окне, то есть в том порядке, в каком были
протянуты стрелки на графе. Условия записываются по правилам постро ения
логических выражений языка С++.
Если выполнение какого-либо из условий перехода влечет за собой
необходимость некоторых дополнительных операций, они должны быть
записаны в окне «С++ текст». Проверка условий перехода и выполнение
47
соответствующих операций осуществляется
транзактом.
1.5.
перед
прохождением узла
Установление очереди заявок (рис. П. 1.5)
Здесь, помимо логического имени узла, после прохождения узла указана
операция определения времени входа транзакта в очередь. Для этого в параметр
транзакта T_start заносится показание модельного таймера (текущее значение
модельного времени).
Рис. П.1.5. Описание узла Queue 102
С помощью кнопки «Определить параметры» можно было бы задать флаг
учета приоритета транзактов, но в данной задаче это не нужно.
1.6. Использование узла «Ключ» (рис. П. 1.6, П. 1.7)
В данной модели узел «Ключ» используется в качестве зоны принятия
решения о дальнейшем маршруте транзакта. В качестве операции перед прохождением узла здесь выступает определение разницы между текущим показанием модельного времени (timer) и моментом входа транзакта в очередь
(T_start). На основании полученного значения времени ожидания, попавшего в
параметр транзакта T_wait, определяется дальнейший путь транзакта – либо на
обслуживание в узел 101 (сервер), либо на уничтожение в узел 106 (термина-
48
тор).
Рис. П. 1.6. Описание узла Key 104, выход в Serv 101
Рис. П. 1.7. Описание узла Key 104
49
Заметим, что нумерация узлов графа производится в порядке их помещения на рабочую плоскость и не оказывает никакого влияния на порядок движения транзактов.
1.5.3.Терминаторы
Для описания терминаторов необходимо задать только логическое имя
узла. Никаких дополнительных действий в данной модели с ними не связано.
1.5.4.Генератор заявок (рис. П. 1.8)
Рис. П. 1.8. Описание узла типа Ag
Для генератора здесь необходимо задать интервал генерации заявок как
случайную величину. Закон распределения выбирается из списка. Дополнительный параметр нужен в том случае, если выбран бета-закон, который задается с помощью трех чисел – минимального, наиболее вероятного и максимального значений случайной величины.
Приоритет порождаемых генератором заявок в данном случае не задается, так как в модели имеется только один генератор и заявки не будут отличаться по приоритетам.
50
Заметим, что генератору не может быть приписано никаких дополнительных действий, так как все действия выполняются только при входе заявки в
узел, а в генератор входов нет.
1.5.5.Сервер (обслуживающий прибор) (рис. П 1.9)
Описание сервера похоже на описание генератора. Здесь также необходимо задать интервал времени, представляющий собой поставить число обслуживающих каналов (по умолчанию их нулевое количество, и модель работать
не будет).
Флаг учета приоритетов заявок здесь также устанавливать не нужно, так
как приоритетов в данной модели заявки не имеют.
Рис. П. 1.9. Описание узла Serv 101
1.5.6. Сохранение модели в графическом формате
После того, как граф модели построен, и все узлы полностью описаны,
модель необходимо сохранить в графическом формате. Для этого в меню
«Файл» нужно выбрать пункт «Сохранить», затем выбрать адрес сохранения на
диске и ввести имя файла. Расширение .pgf (pilgrim graphic file) будет подставлено автоматически.
1.6.
Генерация PILGRIM-программы
51
Если сохранение модели в графическом формате было успешно выполнено, нужно в меню «Выполнить» выбрать пункт «Генерировать С++ файл». В
указанной пользователем папке будет создан файл PILGRIM-программы с расширением .cpp (имя также вводится пользователем).
2.
Создание выполняемого файла модели
2.1. Создать на жестком диске рабочую папку для будущего проекта
( по адресу D:\Имитационное моделирование\Modeli pilgrim\(название папки).
2.2. Перенести в рабочую папку файл модели (сгенерированный в пункте 1.7) в
формате .cpp.
2.3. Открыть приложение Microsoft Visual C++ (через меню “Пуск”).
2.4. Пройти следующую последовательность пунктов меню Microsoft Visual
C++ (рис. П. 1.10):
2.4.1. File,
2.4.2. New,
2.4.3. Project Workspace,
2.4.4. Application:
2.4.5. В окне Application в строке Locaion указать (через кнопку Browse)
путь к файлу модели <модель>.cpp.
2.4.6. В окне Name указать имя проекта (латинскими буквами).
2.4.7. Нажать кнопку Create.
2.5. Теперь в проект нужно вставить файлы, необходимы для построения об ъектного кода модели в папки, указанные на рис.П.1.10:
52
Рис. П. 1.10. Формирование проекта модели
2.5.1.
Стандартную
библиотеку С++
Comctl32.lib (адрес
–
С:\VisualStudio\VC98\MFC\Lib\Comctl32.lib).
2.5.2.
Библиотека
системы
PILGRIM
Pilgrim.lib
(адресС:\VisualStudio\VC98\MFC\Lib\ Pilgrim.lib ).
2.5.3. Файл ресурсов Windows для моделей PILGRIM Pilgrim.res
(адрес- С:\VisualStudio\VC98\MFC\ SRC\ pilgrim.res ).
2.5.4. Также к проекту присоединяются файлы указанные по следующим
адресам:
- C:\Visual Studio\VC98\MFC\SRC\pilgrim.ico;
- C:\Visual Studio\VC98\MFC\ SRC\ userres.rc;
- C:\Visual Studio\VC98\MFC\ Include\ simulate.h;
- C:\Visual Studio\VC98\MFC\Include\pilgrim.h;
- C:\Visual Studio\VC98\MFC\Include\ userhid.h.
2.6. Файл модели <модель>.cpp (адрес расположения файла модели должен
совпадать с указанным в окне Location перед вводом имени проекта в окне
Name) (рис. П. 1.11).
Вставка файлов в проект осуществляется с помощью меню Insert, пункт
Files into Project.
Рис. П. 1.11. Вставка в проект модели файлов Pilgrim
2.7. Запуск модели и получение результатов моделирования:
53
2.7.1. Сформированный проект проверяется с помощью меню “Bild”.
При отсутствии ошибок проекта появится сообщение
“0 errors”
(рис. П. 1.12).
Рис. П.1.12. Проверка правильности построенного проекта
2.7.2. Теперь можно приступать к эксперименту (рис. П. 1.13).
54
Рис. П. 1.13. Запуск программы Pilgrim
Для этого выбирается меню “Execute” или сочетание клавиш. Пользователь попадает в программу имитационного моделирования Pilgrim .
2.7.3. Перед началом работы необходимо ознакомится с меню “Help”
программы Pilgrim (рис. П. 1.14).
Рис. П. 1.14. Знакомство с меню “Help” программы Pilgrim
2.7.4. Графические результаты моделирования выбираются в различных
узлах (меню “Лупа”) и индицируются на экране (рис. П. 1.15) в виде
55
Рис. П. 1.15. Работа с командной строкой в Pilgrim
графиков задержек исследуемых параметров, а также в виде конкретных цифровых обозначений для каждого узла (значения его исследуемых параметров) в правой части экрана.
2.7.5. Перед запуском процесса
имитации целесообразно выбрать
в меню Результаты пункт Динамика задержки. После этого в меню Моделирование выбрать пункт Запуск модели. Тогда график задержки по
выбранной при построении графа модели очереди будет изображаться
динамически. Можно также выбрать динамическое построение графика
динамики потока в терминаторе (рис. П. 1.16).
56
Рис. П. 1.16. Результаты испытаний для узла Term №4
2.7.6. После окончания процесса моделирования можно посмотреть другие графики, а также просмотреть выходные параметры всех узлов модели (с помощью меню “Результаты”).
2.8. Закрыв окно модели, можно открыть в папке модели файл результатов,
где сведены в таблицу (рис. П. 1.17) выходные параметры всех узлов модели (файл результатов находится по адресу D:\Имитационное моделирование\ Modeli pilgrim\(название модели)\*.*.doc, то есть в папке созданного проекта).
2.9. Повторить действия указанные в пунктах 2.7 - 2.8 не менее 10 -15 раз.
Для обработки результатов эксперимента используется кибернетический
подход к организации экспериментальных исследований сложных объектов и процессов с помощью ортогонального планирования второго порядка. Сначала отыскивается область, где существует экстремальная точка.
Затем в районе существования экстремальной точки проводится эксперимент для получения уравнения регрессии 2 – го порядка.
*---------------------------------------------------------------------------------------------*
| НАЗВАНИЕ МОДЕЛИ:
Лок.ВС / UNIX -V
|
| ВРЕМЯ МОДЕЛИРОВАНИЯ: 28800.00
Лист: 1
|
|---------------------------------------------------------------------------------------------|
|
|
|
|
|Загруз -|
|
2
|
|
|
|
|
| No | Наименование | Тип |Точ-| ка, %=| M [t] | C [t] |Счeтчик|Кол.|Оcт.|Состояние узла|
|узла|
узла
| узла | ка |Путь,км| среднее | вариация| входов|кан.| тр.| в этот момент|
|---------------------------------------------------------------------------------------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 Очередь к CPU
queue
0.05
2.34 205831
1
0
открыт |
|
2 CPU
serv
- %= 71.3
0.10
0.33 205831
1
1
открыт |
|
3 Очередь к HDD
queue
0.01
10.55 128517
1
0
открыт |
|
4 HDD
serv
- %= 44.6
0.10
0.04 128517
1
1
открыт |
|
5 Выделить RAM
attach
- %= 73.8
42.33
51.75
25799
1
41
9 S
|
2495 D
|
6 Диспет.ресурсов manage
0.00
1.00
51516
1
0
открыт |
|
7 Выделить буферы attach
- %= 55.5
0.38
7.37
25758
1
0
1 S
|
0 D
|
8 Терминалы п-лей serv
- %= 17.9
10.01
0.06
25806
50
7
открыт |
57
|
9 Вспом. транзакт ag
0.00
1.00
2
1
1
открыт |
| 10 Генерация п-лей creat
0.00
1.00
50
1
0
открыт |
| 11 Выключение Ag 9 term
0.00
1.00
2
0
1
закрыт |
|
|
|
|
|
|
|
|
|
|
|
|
*---------------------------------------------------------------------------------------------*
Рис. П. 1.17. Результаты моделирования
Если после запуска модели требуется внести в нее какие-либо изменения,
то перед новым построением исполняемого файла необходимо закрыть окно
модели. Изменения можно вносить и в файл формата .cpp, минуя стадию .pgf,
однако, эти изменения не будут отражены в модели формата .pgf.
58
ПРИЛОЖЕНИЕ 2
ОБРАЗЕЦ ТИТУЛЬНОГО ЛИСТА ДЛЯ ВЫПОЛНЕНИЯ
ЛАБОРАТОРНОЙ РАБОТЫ
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Воронежский государственный архитектурно-строительный
университет
Кафедра математического моделирования и вычислительной техники
по дисциплине
Название работы:_____________________________________
______________________________________________
Вариант №_____
Выполнил:
Проверил:
Воронеж
200 г.
59
ПРИЛОЖЕНИЕ 3
ВАРИАНТЫ ПОСТРОЕНИЯ ОБЪЕКТНЫХ КОДОВ
ИМИТАЦИОННЫХ МОДЕЛЕЙ
1. Вариант объектного кода модели для выполнения лабораторной
работы № 1
Текст модели
#include <pilgrim.h>
int Forw; /* Номер следующего узла */
int Dist; /* Закон распределения времени обслуживания */
float Tobs; /* Среднее время обслуживания */
float Pogr; /* Среднеквадратическое отклонение */
/* Время измеряется в часах */
forward
{
modbeg(“Компьютер”, 6, 1200.0, (long)time(NULL), none,
1, none, 3, 2);
ag(“Бухгалтерия”, 5, none, expo, 0.1, 0.1/3, zero, 1);
ag(“Неисправности”, 6, 1, expo, 24.0, zero, zero, 1);
network(dummy, dummy)
{
top(1): queue(“Столик-очередь”, prty, 2);
place;
top(2): if (t->pr == 1) /* Неполадка */
{
Forw=4;
Dist=unif;
Tobs=1.0;
Pogr=0.5;
}
else
/* Документ */
{
Forw=3;
Dist=norm;
Tobs=0.08;
Pogr=0.08/3;
}
serv(“АРМ бухгалтерии”, 1, abs, norm, Tobs,
Pogr, zero, Forw);
place;
top(3): term(“Архивные папки”);
place;
top(4): term(“Неиспр. устр-на”);
place;
fault(123);
}
modend(“pilgrim.rep”, 1, 12, page);
return 0;
}
60
2. Вариант объектного кода модели для выполнения лабораторной
работы № 2
Текст модели
#include <pilgrim.h>
float Pas=1.0; /* интервал прихода пассажиров */
float Tax=10.0; /* интервал прихода такси */
float Mod_time=360.0;
forward
{
modbeg(“Маршр. такси”, 5, Mod_time, (long)time(NULL),
none,2, none, 5, 2);
ag(“Пассажиры”, 1, none, expo, Pas, zero, zero, 2);
ag(“Такси”, 6, none, norm, Tax, Tax/3, zero, 2);
network(dummy, dummy)
{
top(2): queue(“Пассажиры”, none, 3);
clcode
if (addr[2]->na == 1)
hold(3); /* начальное размыкание ключа */
place;
top(3): key(“Есть такси?”, 4);
place;
top(4): delet(“Посадка в такси”, 0, 10, 5);
rels(3);
hold(8);
place;
top(5): term(“Такси уехало”);
hold(3);
rels(8);
place;
top(7): queue(“Такси”, none, 4);
place;
top(8): key(“Остановка свободна?”, 4);
place;
fault(123);
}
modend(“pilgrim.rep”, 1, 12, page);
return 0;
}
3. Вариант объектного кода модели для выполнения лабораторной
работы № 3
Обратите внимание, что в данном примере параметры модели заданы с
помощью констант пользователя (операторы #define), а не переменных. Это
значит, что их значения нельзя менять в процессе работы PILGRIM-программы.
Текст модели
/* Модель работы станции метрополитена */
61
/* Единица измерения времени - 1 секунда */
/* Врем моделирования - 8 часов */
#include <pilgrim.h>
#define T_PASS 15.0 /* Интервал прихода пассажиров */
#define T_POEZD 90.0 /* Интервал прихода поездов */
#define T_POEZD_STAND 30.0 /* Время стоянки поезда */
forward
{
modbeg("Станция метро”,7,60.0*60*8,(long)time(NULL),
none,2,none,4,2);
ag("Пассажиры",1,none,expo,T_PASS,zero,zero,2);
ag("Поезда",5,none,none,T_POEZD,T_POEZD/3,zero,6);
network(dummy,dummy)
{
top(2):queue("Перрон",none,3);
clcode
if (addr[2]->na == 1)
hold(3);
place;
top(3):key("Двери поезда",4);
place;
top(4):term("Пассажир сел в поезд");
place;
top(6):serv("Поезд стоит",1,none,none,T_POEZD_STAND,
T_POEZD_STAND/3,zero,17);
rels(3);
place;
top(7):term("Поезд ушел");
hold(3);
place;
fault(123);
}
modend("Metro.rep",1,12,page);
return 0;
}
4. Вариант объектного кода модели для выполнения лабораторной
работы № 4
Текст модели
/* Модель управления ресурсами в ЛВС под UNIX/System-V */
/* Время измеряется в секундах */
#include <Pilgrim.h>
#define USERS
50
/* Количество пользователей */
#define RAM
0
/* Флаг создания процесса
*/
#define BUFF
1
/* Флаг захвата буферов I/O */
#define HDD
2
/* Флаг операции I/O
*/
#define
MAX_RAM 64
/* Максимальный объем RAM
*/
#define MAX_BUFFERS 10 /* Максимальное число буферов */
#define PROCESS_STATUS t->iu0 /* Состояние транзакта */
#define RAM_AMOUNT t->iu1 /* Выделяемый объем RAM */
#define BUF_AMOUNT t->iu2 /*Число выделяемых буферов */
#define HDD_ACCESS t->iu3/*Флаг получения доступа к HDD*/
#define MEMORY
5
/* Узел выделения RAM */
#define IO_BUFFERS 7 /* Узел выделения буферов I/O */
62
#define MOD_TIME 28800.0 /*Время моделирования 8 часов */
int Next_top;
/* Номер следующего узла */
forward
{
modbeg("Лок.ВС / UNIX-V", 1,MOD_TIME,(long)time(NULL),
none,5,none,none,2 );
ag("Вспом. транзакт",9,none,none,0.0,zero,zero,10);
supply(MEMORY,add,MAX_RAM);
/*Максимально возможный объем памяти */
supply(IO_BUFFERS,add,MAX_BUFFERS);
/*Максимальное число буферов */
network(dummy,dummy)
{
top(1):queue("Очередь к CPU",none,2);
place;
top(2):switch(PROCESS_STATUS)
{
case HDD:
/* Процесс создан и работает
*/
if (rundum()>0.8 && HDD_ACCESS)
Next_top=8;
/* Управление возвращается пользователю */
else
Next_top=3; /* Очередная операция I/O */
break;
case BUFF:
/* Отвести процессу буферы I/O */
Next_top=7;
break;
case RAM:
/* Создать процесс
*/
Next_top=5;
break;
}
serv("CPU",1,none,unif,0.1,0.1,zero,Next_top);
if (Next_top==8)
{
clcode
HDD_ACCESS=0;
/* Доступ к HDD прекращен*/
detach(MEMORY,RAM_AMOUNT);
/* Освободить память */
detach(IO_BUFFERS,BUF_AMOUNT);
/* Освободить буферы */
}
place;
top(3):HDD_ACCESS=1;
/*Получение доступа к HDD */
queue("Очередь к HDD", none,4);
place;
top(4):serv("HDD",1,none,beta,0.05,0.1,0.15,1 );
place;
top(5):RAM_AMOUNT=1+rundum()*(MAX_RAM-1);
PROCESS_STATUS=BUFF; /* Запросить буферы I/O */
attach("Выделить RAM",RAM_AMOUNT,prty,6);
place;
top(6):manage("Диспетчер ресурсов",1);
place;
top(7):BUF_AMOUNT=1+rundum()*(MAX_BUFFERS-1);
PROCESS_STATUS=HDD; /* Начать операции I-O */
attach("Выделить буферы I/O",BUF_AMOUNT,prty,6);
63
place;
top(8):PROCESS_STATUS=RAM; /* Создание процесса */
serv("Терминалы п-лей",USERS,none,
norm,10.0,2.5,zero,1);
place;
/* Схема зарядки */
top(10):creat("Генерация п-лей",none,USERS,copy,8,11);
place;
top(11):term("Выключение Ag 9");
cheg(9,none,none,MOD_TIME,zero,zero,11);
place;
fault(123);
}
modend("Unix5.rep", 1, 13, page );
return 0;
}
5. Вариант объектного кода модели для выполнения лабораторной
работы № 5
Текст модели
# include <Pilgrim.h>
// Число собственных машин
int Nowon = 50;
// Число наладчиков
int Men = 3;
int Arend = 3;
// Число арендуемых машин
float Protime = 6240.0;
// Время прогноза 3 года
forward
{
modbeg («Завод», 7, Protime,
(long) 1234567890, none, 1, none, 1);
ag («Подг.произв.», 5, none, none, 1.0, zero, zero, 6);
network (dummy, dummy)
{
top (1): queue («Резервн. машины», none, 2);
place;
top(2): serv(“Машины в работе”б, None, none,
expo, 157.0, zero, zero, 3);
place;
top (3): queue («Ожид. ремонта», none, 4);
place;
top (4): serv («Машины в ремонте», Men, none, norm,
7.0, 3.0, zero, 1);
place;
64
top (6): creat («Подг. машин», none, Nown + Arrend,
copy, 1,7);
place;
top (7): term («Пр-во готово»);
cheg (5, none, none, Protime, zero, zero, 7);
place;
fault (123);
}
modend («Factory. doc», 1, 24, page);
return 0;
}
65
ОГЛАВЛЕНИЕ
Введение…………………………………………………………………..............................……....3
Лабораторная работа № 1. Исследование эффективности использования
компьютеров в автоматизированной бухгалтерии………………………….................................5
Лабораторная работа № 2. Моделирование системы массового
обслуживания с использованием узла “delet”…………….……………………...................…..13
Лабораторная работа № 3. Моделирование клапана с таймером………....................................18
Лабораторная работа № 4. Моделирование замкнутой корпоративной
информационной системы……………………………………………………...............................23
Лабораторная работа № 5. Моделирование минимизации
производственных затрат……….....………………………………………………........................30
Заключение……………………………….....……………………………………...........................39
Библиографический список рекомендуемой литературы…………….....……….......................40
Приложение 1. Технологический процесс построения имитационной
модели ……………….……………………………………………………............................……41
Приложение 2. Образец титульного листа для выполнения лабораторной
работы ……………………………………………….......................................................................57
Приложение 3. Варианты построения объектных кодов имитационных
моделей…………………...……………………………………………………...........................…58
Учебное издание
Виктор Петрович Авдеев
Вадим Евгеньевич Белоусов
ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ
ЭКОНОМИЧЕСКИХ ПРОЦЕССОВ
Лабораторный практикум
для студентов, обучающихся по специальности 080801
«Прикладная информатика»
Редактор Лантюхова Н.Н.
Подписано в печать 12.07.2005. Формат 60 х 84 1/16.
Уч.-изд. л. 4,0.
Усл.-печ. л. 4,1.
Бумага писчая. Тираж 200 экз.
Заказ № ________.
Отпечатано: отдел оперативной полиграфии Воронежского государственного
архитектурно-строительного университета
394006 г. Воронеж, ул. 20-летия Октября, 84
Документ
Категория
Без категории
Просмотров
15
Размер файла
1 314 Кб
Теги
авдеева, 444, экономическая, процессов, моделирование, белоусов, имитационных
1/--страниц
Пожаловаться на содержимое документа