Вариант
|
Категория запроса
|
Параметры экспоненциального
распределения вероятностей
|
Параметры нормального
распределения вероятностей
|
Время контроля операции,
мин
|
Вероятность брака
|
Вероятность возврата
изделия на повторную обработку
|
4
|
1 2
|
0 25
|
25 3
|
2 3
|
7% 15%;
|
35% 62%
|
8
|
1 2
|
0 21
|
20 2
|
4 7
|
10% 5%;
|
78% 42%
|
12
|
1 2
|
0 30
|
28 5
|
6 4
|
12% 10%;
|
45% 82%
|
.4 Разработка и написание методических указаний, контрольных
вопросов
В данной квалификационной работе в соответствии с ее целью как описано
ранее было решено разбить задание на две лабораторные работы, то методические
указания и контрольные вопросы так же разобьем на две части.
В первой лабораторной работе так как задания относятся к изучению
основных приемов создания имитационных моделей, то в методических указаниях
укажем назначения языка GPSS World, его основные операторы, описание работы со
средой моделирования и краткую расшифровку стандартной распечатки результатов
моделирования. Соответственно в контрольных вопросах так же рассмотрим вопросы
связанные с рассмотренными темами.
Далее приведены методические указания и контрольные вопросы какими их
увидит студент.
Теоретическая часть
Пакет моделирования дискретных систем GPSS World предназначен для
имитационного моделирования сложных производственных, вычислительных и
информационных систем. Имитационное моделирование обеспечивает возможность
испытания, оценки и проведения экспериментов с проектируемой системой без
каких-либо воздействий на нее. Эксперимент при имитационном моделировании
проводится с программой, которая является моделью системы. Длительные периоды
функционирования (дни, часы) исследуемой системы могут быть промоделированы на
ЭВМ за несколько минут.
Имитационное моделирование представляет собой один из видов анализа
сложных технических систем. Первым шагом при анализе любой конкретной системы
являются выделение элементов системы и формулирование логических правил,
определяющих порядок взаимодействия этих элементов. Для GPSS World исходным
является формальное описание объекта проектирования в виде системы массового
обслуживания (СМО). Входным языком является язык GPSS. Необходимо отметить, что
средства системы GPSS World ориентированы на построение моделей вычислительных
систем и проведение машинного эксперимента с целью их анализа только на самом
верхнем (системном) этапе проектирования. Транслятор языка GPSS является транслятором
интерпретирующего типа.
Основные операторы
Оператор языка GPSS содержит 4 поля: метка (необязательное поле),
операция, операнды, комментарий (необязательное поле). Комментарием считаются
все символы, следующие после символа «;». Количество операндов может достигать
9, операнды обозначаются буквами A, B, C, D, E, F, G, H, I. Часть операндов
может быть опущена (берутся по умолчанию), если опускаются не последние
операнды (A, B, D, E), запятые сохраняются.
Ниже приведены основные операторы и выполняемые ими действия.
Обязательные операнды подчеркнуты.A (занять). A - имя устройства. Занять можно
только свободное устройство. Уже занятое устройство не впускает транзакты,
перед ним организуется очередь на основе относительных приоритетов.A
(освободить). A - имя устройства. Устройство должно быть освобождено тем же
транзактом, который его занял.A, B, C, D, E (захватить). A - имя устройства. B
- возможность захвата занятого устройства. Если B=PR, возможна любая глубина
прерываний на основе абсолютных приоритетов. По умолчанию приоритеты не
учитываются, прерывать обслуживание прерывающего транзакта нельзя. C - метка
оператора, к которому переходит прерванный транзакт, D - номер параметра, в
который запишется остаток времени, оставшегося до конца обслуживания, E -
признак снятия с обслуживания прерванного транзакта. Если E=RE, транзакт
снимается. По умолчанию прерванный транзакт дообслуживается после обслуживания
прерывающего.A ( вернуть ). A - имя захваченного устройства. Освобождать
устройство должен тот же транзакт, который его захватил.A1, B1/A2, B2/…/AN, BN
(объявление многоканальных устройств). Ai - имя i-го устройства, Bi - объем
i-го устройства.A, B (войти в многоканальное устройство A, занять в нем B
ячеек). По умолчанию B=1. Если в многоканальном устройстве нет требуемого
количества ячеек, транзакт задерживается на входе оператора.A, B (выйти, т.е.
освободить в многоканальном устройстве A и B ячеек). Освобождать можно любым
транзактом, не обязательно тем, который занимал!A, B, C, D, E, F, G, H, I
(генерировать транзакты).
A
- среднее значение интервала; B - модификатор разброса или модификатор функции
(GENE 10, 5 - интервал от 5 до 15 единиц равновероятен, GENE 10, 1 - средний
интервал 10 единиц, распределение интервалов - по функции FN 1); C - время
появления первого транзакта (по умолчанию 1); D - число выработанных транзактов
(по умолчанию ); E - приоритет (по умолчанию 0); FчI - число и тип
параметров (10PF, 7PH, ...) (по умолчанию 12 PH). При генерации транзактов
значения всех параметров нулевые.A (завершить). Оператор ликвидирует вошедший в
него транзакт, вычитает A единиц из счетчика завершений. По умолчанию A=0.A, B
(задержать). A - среднее время задержки; B - модификатор разброса или модификатор
функции. Оператор может впускать сколько угодно транзактов.A, B, C (передать).
A - режим выбора; B и C - метки операторов, к которым происходит переход.
Основные варианты использования оператора следующие:=BOTH - транзакт повторяет
попытки войти сначала в оператор B, а в случае неудачи - в оператор C и т.д. до
тех пор, пока какой-либо из операторов его не впустит.=.XXX - транзакт
случайным образом, с вероятностью 0.XXX передается в оператор C, с вероятностью
1-0.XXX - в оператор B (или в следующий за TRANSFER по порядку оператор, если
операнд B опущен).
Если
опущены операнды A и C, транзакт безусловно передается в оператор, метка
которого задана операндом B.X A, B, C (проверить).X - оператор отношения.
Транзакт переходит в следующий по порядку оператор, если выполняется условие A
X B, в противном случае пересылается на оператор C (по умолчанию остается на
входе оператора TEST).
Вспомогательный
оператор отношения X(E, G, L, GE, LE, NE) имеет соответственно смысл
"равно", "больше", "меньше", "больше или
равно", "меньше или равно", "не равно". X можно писать
после TEST без пробела.X A,B (впустить). Транзакт переходит в следующий блок,
если для оборудования с именем A выполняется логическое условие X, в противном
случае пересылается на оператор B (по умолчанию остается на входе оператора
GATE). Возможные виды условий:
Для устройств
|
Для памяти
|
Для переключателей
|
NU - свободно U - занято I
- обслуживает прерывания NI - работает без прерываний
|
SE - пуста SNE - не пуста
SF - полна SNF - не полна
|
LS - включен LR - выключен
|
QUEUE A, B (отметить вход в очередь).A - имя очереди, B - количество
занимаемых единиц (по умолчанию B=1).A, B (отметить выход из очереди). Смысл
операндов тот же, что для QUEUE. Оператор ставится после операторов SEIZE,
PREEMT, ENTER.A, B (назначить приоритет). A - назначаемый транзакту приоритет.
B=BUFFER означает, что транзакт должен остановиться после изменения приоритета.
ИМЯ FUNCTION RNj, CK,Y1/X2,Y2/…/XK,YK
Описание непрерывной случайной функции .
Здесь j - номер используемого датчика случайных чисел генерирующий числа
с плавающей точкой в диапазоне [0,1], K - количество точек, по которым
выполняется кусочно-линейная аппроксимация функции.
ИМЯ FUNCTION RNj, DK
X1,Y1/X2,Y2/…/XK,YK
Описание дискретной случайной функции.
Значения X должны лежать в пределах (0,1) и быть записаны в порядке
увеличения.
Пример. Случайная дискретная функция RAND, описанная следующим
образом:FUNCTION RN1, D3
.5,2/.8,1/1,4
принимает значение 2 с вероятностью 0.5, 1 - с вероятностью 0.3, 4 - c
вероятностью 0, 2.
Основные управляющие операторы (карты)A, B, C, D (старт). Оператор
уведомляет интерпретатор, что ввод программы закончен, можно начинать
моделирование. A - начальное значение кода в счетчике завершений ( TG1); B=NP -
признак подавления стандартной печати (по умолчанию распечатывается статистика
в конце счета); C - счетчик снимков, показывающий, через какой интервал
уменьшения TG1 надо распечатывать промежуточные результаты (по умолчанию не печатать);
D=1 - признак распечатки списков в конце моделирования.XLj, XFj, XHj, HBj, MXj,
MLj, MBj (очистить). Обнуляет все переменные модели, кроме указанных в нем
ячеек и матриц ячеек, перед следующим прогоном модели с другими параметрами.Fj,
Qj, Sj, CHj, TBj (сбросить). Сбрасываются вся статистика, кроме собранной для
указанных в операторе устройств, очередей, памяти, списков пользователя,
таблиц, и относительное время C1. Абсолютное время AC1 , ячейки, переключатели
на этот оператор не реагируют, транзакты из модели не удаляются. Оператор
служит для сброса искаженной переходным процеcсом статистики.
Краткое описание среды моделирования GPSS World
Для запуска приложения необходимо в меню установленных программ выбрать
GPSS World Student Version.
После запуска приложения из строки меню выбрать File->New, из
открывшегося списка выбрать Model и нажать Ok, при этом создастся новая модель
и откроется поле ввода текста программы «Untitled Model 1.gps».
Для создания выполняемой модели необходимо из строки меню выбрать
Command->Create Simulation, после этого если нет ошибок то сформируется
журнал «Untitled Model 1.1.sim».
Если же в программе найдены ошибки, то они отображаются в данном журнале.
Для запуска программы необходимо из строки меню выбрать
Command->START, в открывшемся диалоговом окне Start Command команде START
задаются аргументы, после нажатия на Ok происходит выполнение программы и
формирование отчета «Untitled Model 1.1.1.gpr».
Описание других команд в меню Command:(Перетранслировать) или нажатие
комбинации клавиш Ctrl+Alt+R обеспечивает перетранслирование модели;Last
Command (Повторить последнюю команду) или нажатие комбинации клавиш Ctrl+Alt+L
обеспечивает повторение выполнения последней команды;(Управление) дает
возможность проведения эксперимента;(Шаг 1) или нажатие комбинации клавиш
Ctrl+Alt+1 обеспечивает пошаговое выполнение оттранслированной
программы;(Останов) прерывает процесс моделирования;(Продолжить) обеспечивает
продолжение процесса моделирования;(Очистить) - возвращение моделирования в
первоначальное состояние;(Сброс) - сброс статистики в начальное состояние;…
(Показать) вызывает диалоговое окно Show Command (Показать команду), которое
обеспечивает возможность просмотра искомых параметров в окне JOURNAL;…
(Пользователь) вызывает диалоговое окно Simulation Command
(Команда моделирования) для ввода команд управления пользователем во
время моделирования.
Содержание стандартной распечатки результатов моделирования GPSS World
Распечатка результатов работы системы GPSS World (отчет) включает в себя
листинг исходной программы, таблицу перекрестных ссылок и стандартный набор
статистических результатов.
Листинг исходной программы содержит текст модели на языке GPSS,
составленный пользователем и дополненный номерами операторов и блоков. В случае
наличия ошибок в листинг включаются диагностические сообщения о них.
Таблица перекрестных ссылок формируется в случае использования в модели
символических имен объектов GPSS PC, для которых определяются числовые
значения.
В конец распечатки результатов работы включается листинг стандартной
статистики по работе моделируемой системы, который содержит:
) показания модельного (относительного и абсолютного) времени на момент
завершения процесса моделирования;
) статистику по использованию блоков;
) статистику по всем видам аппаратных объектов модели.
Стандартный набор информации об использовании блоков модели состоит из
трех колонок: номера блока, его текущего содержимого и общего числа входов в
него.
Стандартный набор статистической информации о приборах включает следующие
данные (по колонкам):
) Имя (номер) прибора (FACILITY);
) Общее число входов в прибор за время моделирования (ENTRIES);
) Коэффициент использования в течение всего времени моделирования
(UTIL.);
) Среднее время пребывания транзакта в приборе (AVE._TIME);
) Номер транзакта, занявшего прибор (AVAIL.);
) Номер транзакта, захватившего прибор (OWNER).
Стандартный набор статистической информации об очередях включает
следующие данные (по колонкам):
) Имя (номер) очереди (QUEUE);
) Максимальное содержимое очереди за время моделирования (MAX);
) Текущее содержимое очереди (CONT.).
) Общее число входов в очередь (ENTRIES);
) Количество "нулевых" входов в очередь (ENTRIES 0);
) Среднее содержимое очереди (AVE.CONT.);
) Среднее время пребывания транзакта в очереди (AVE.TIME);
) Среднее время пребывания без учета "нулевых" входов
(AVE.(-0)).
Содержание стандартной распечатки для приборов, многоканальных устройств
и очередей приведено в табл.2.
Таблица. 2. Содержание стандартной распечатки для приборов,
многоканальных устройств и очередей
|
Распечатка для приборов
|
FACILITY
|
Имя (номер) прибора
|
|
|
ENTRIES
|
Общее число входов в прибор
за время моделирования
|
|
|
UTIL.
|
Коэффициент использования в
течение всего времени моделирования
|
|
|
AVE_TIME
|
Среднее время пребывания
транзакта в приборе
|
|
|
AVAIL
|
Номер транзакта, занявшего
прибор
|
|
|
OWNER
|
Номер транзакта,
захватившего прибор
|
|
|
PEND
|
Количество прерванных в
устройстве транзактов
|
|
|
INTER
|
Количество прерывающих
устройство транзактов
|
|
|
RETRY
|
Количество транзактов,
ожидающих специальных условий
|
|
|
DELAY
|
Количество транзактов,
ожидающих занятия устройства
|
|
Распечатка для
многоканальных устройств
|
STORAGE
|
Имя (номер) прибора
|
|
|
CAP.
|
Емкость многоканального
устройства
|
|
|
REMAIN.
|
Текущее содержимое(в момент
остановки моделирования)
|
|
|
MIN
|
Минимальное содержимое
|
|
|
MAX
|
Максимальное содержимое
|
|
|
ENTRIES
|
Общее число занятий
приборов
|
|
|
AVL.
|
|
|
|
AVE.C.
|
Среднее содержимое
|
|
|
UTIL.
|
Средняя загрузка
|
|
|
RETRY
|
Количество транзактов,
ожидающих специальных условий
|
|
|
DELAY
|
Количество транзактов,
ожидающих занятия устройства
|
Распечатка для очередей
|
QUEUE
|
Имя (номер) очереди
|
|
MAX
|
Максимальное содержимое
очереди за время моделирования
|
|
CONT.
|
Текущее содержимое очереди
|
|
ENTRIES
|
Общее число входов в
очередь
|
|
ENTRIES(0)
|
Количество
"нулевых" входов в очередь
|
|
AVE.CONT.
|
Среднее содержимое очереди
|
|
AVE.TIME
|
Среднее время пребывания
транзакта в очереди
|
|
AVE.(-0)
|
Среднее время пребывания
без учета "нулевых" входов
|
|
RETRY
|
Количество повторных входов
|
|
|
|
|
|
|
Контрольные вопросы
1. Назовите основные отличия GPSS World от его предыдущей версии
GPSS PC.
2. Дайте краткую характеристику операторам GENERATE, TERMINATE и
START, поясните назначение их операндов.
. Перечислите команды в меню Command и опишите их назначение.
. Расскажите о назначении операторов GATE и TEST, задании условий
в приведенных операторах.
. Опишите операторы, связанные с представленим модели аппаратного
объекта типа «многоканальное устройство».
. Расскажите о назначении и особенностях применения оператора
TRANSFER.
. Опишите работу управляющих карт RESET и CLEAR.
. Расскажите о назначении оператора STORAGE.
. Раскройте назначение операторов сбора статистической информации
об очередях и особенности их применения.
. Объясните значение полей в файле отчета.
Во второй лабораторной работе так как задания относятся к изучению
специальных приемов создания имитационных моделей, то в методических указаниях
разместим необходимые в ходе выполнения данной лабораторной работы операторы,
типы данных, стандартные числовые атрибуты и вычислительные выражения.
Далее приведены методические указания и контрольные вопросы какими их
увидит студент.
Типы данных
Арифметические целые переменные - VARIABLE
Пример:VARIABLE (P3 + P4)/5
Арифметические переменные с фиксированной точкой - FVARIABLE
Булевы переменные - ВVARIABLE
Вычислительные выражения
Вычислительные выражения представляют собой комбинацию математических
операторов, библиотечных функций, стандартных числовых атрибутов и констант,
которые удовлетворяют правилам элементарной алгебры. Они вычисляются согласно
иерархии операторов, перечисленных выше, и в направлении слева направо. Порядок
вычисления можно изменить с помощью круглых скобок, как это делается в любом алгебраическом
выражении.
^ - Возведение в степень
# - Умножение
/ - Деление
\ - Целочисленное деление. Возвращает результат целочисленного
деления А на B
@ - Целочисленный остаток. Возвращает целочисленный остаток от
деления А на В
- Вычитание
+ - Сложение
Вычисления выражений выполняются в такой последовательности:
^ - возведение в степень;
#, /, \ - умножение, деление, целочисленное деление;
@ - целочисленный остаток;
Некоторые полезные операторыA,B,C - Модифицировать сохраняемое
значениеA,B - Модифицировать параметр требованияA,B - Определить
эквивалентность(Связать)- возвратить копию двух строк, объединенных в одну;A,B
- Инициализировать- Закрыть поток данных- Открыть поток данных- Разместить
текстовую строку в потоке данныхA,B - Собрать табличные данные элемента
<Имя> TABLE A,B,C,D,E - Определить таблицу
Стандартные числовые атрибуты (СЧА) GPSS
· P$ Текущее значение параметра формата полуслово или слово
· PR$1 Приоритет
· M$1 Транзитное время
· MP$ Параметрическое транзактное время
· XN$1 Номер транзакта
· N$ Счетчик входов в блок
· W$ Счетчик текущего содержимого блока
· V$ Арифметическая и логическая переменная
· FN$ Функции
· TB$ Среднее значение аргумента таблицы
· TC$ Счетчик входов в таблицу
· TD$ Среднее квадратическое отклонение аргумента
· XH$, X$ ,XF$ Текущее содержимое ячейки (формата
полуслово-XH$, слово-XF$, X$)
· MH$(a,b) Элемент строки "а", столбца "b".
Полуслово.
· MX$(a,b) Элемент строки "а", столбца "b".
Полное слово.
· CA$ Среднее число элементов в списке
· CH$ Текущее число элементов в списке
· CM$ Максимальное число элементов в списке
· CC$ Общее число входов
· LR$ Ключ сброшен (логическое 1) или ключ установлен
(логическое 0)
· Q$ Текущая длина очереди
· QA$ Средняя длина очереди
· QM$ Максимальная длина очереди
· QC$ Общее число входов
· QZ$ Количество нулевых входов
· QT$ Среднее время пребывания транзакта в очереди
· QX$ Среднее время пребывания транзакта в очереди без учета
нулевых входов
· S$ Текущее содержимое памяти
· R$ Число свободных единиц памяти
· SR$ Коэффициент использования
· SA$ Среднее содержимое памяти
· SM$ Максимальное содержимое памяти
· SC$ Общее число входов
· ST$ Среднее время занятости единицы памяти
· SE$ Память пуста (логические 0 или 1)
· SNE$ Память не пуста (логические 0 или 1)
· SF$ Память заполнена(логические 0 или 1)
· SNF$ Память не заполнена (логические 0 или 1)
· F$ Состояние устройства (логические 0 или 1)
· FI$ Прибор находится в состоянии прерывания (логические 0 или
1)
· FNI$ Прибор не находится в состоянии прерывания (логические 0
или 1)
· FNU$ Прибор не используется (логические 0 или 1)
· FS$ Номер транзакта, занимающего прибор
· FP$ Номер прерывающего транзакта
· FR$ Коэффициент использования устройства
· FT$ Среднее время пребывания транзакта в устройстве
· AC$1 Абсолютное время
· C$1 Относительное время
· TG$1 Содержимое счетчика завершения
· RN$j Случайное число в интервале [0, 1], и используемое как
аргумент функции, и случайное число в интервале [0, 999] в карте f[variable]
Контрольные вопросы
1. Какие типы переменных существую в языке GPSS World. Приведите
описание.
. Опишите последовательность вычисления выражений и их вид в GPSS
World.
. Опишите параметры выдаваемые очередью в отчете и приведите
пример СЧА для их получения.
. Опишите назначение параметра NP в операторе START.
. Опишите назначение третьего параметра в операторах OPEN, WRITE и
CLOSE.
. Назовите хотя бы 5 законов распределения включенных в библиотеку
GPSSW, какие из них вы использовали в лабораторной работе.
.
Алгоритмическая и программная части
.1 Разработка алгоритмов
В данной квалификационной работе необходимо разработать
программно-методические средства включающие в себя задания на написание
программ на языке GPSS World. Для проверки у студентов правильности выполнения
их программ необходимо решить все задания для всех вариантов. В первую очередь
необходимо разработать алгоритмы решения данных задач.
Для этого сначала разработаем графическое представление модели, а потом
ее детальный алгоритм по которому будет составляться программа.
Так как GPSS World является специализированным языком, то есть языком
имитационного моделирования, то для него неприменимы блоки, которые обычно
используют при описании алгоритма в универсальных языках. Далее представим вид
и описание блоков используемых в языке GPSS World (рис 2-6).
Алгоритмы решений представленных в этих работах задач будут нумероваться
«Алгоритм 1.1», «Алгоритм 1.2», и.т.д.; и «Алгоритм 2.1», «Алгоритм 2.2» ,
и.т.д., соответственно. А их графическое представление как «Модель 1.1»,
«Модель 1.2», и.т.д.; и «Модель 2.1», «Модель 2.2» , и.т.д., соответственно.
Где первая цифра номер лабораторной работы, а вторая ее порядковый номер в
каждой из них.
Рисунок 2
Рисунок 3
Рисунок 4
Рисунок 5
Рисунок 6
Модель 1.1 приведен на рис. 7.
В данном задании необходимо разработать модель парикмахерскую с
бесконечной очередью в которую приходят клиенты двух типов: которые хотят
подстричься и которые хотят подстричься и побриться. Источники заявок (клиенты)
обозначим как G1 и G2, соответственно. Общая очередь PARQ и два оборудования
PAR1 и PAR2, то есть стрижка у парикмахера и бритьё у парикмахера.
Рисунок 7. Модель 1.1.
Алгоритм 1.1 приведен на рис. 8.
Далее разработаем детальный алгоритм программы
осуществляющей моделирование. Сначала разработаем часть алгоритма отвечающую за
стрижку клиентов желающих только стричься. Для генерирования заявок (клиентов)
используем блок GENERATE с необходимыми расшифровка которых предложена ниже.
После генерации заявки помещаем ее в очередь PARQ блоком QUEUE. После подхода
очереди заявки помещаем ее в обслуживающее устройство PAR, и освобождаем ее из
очереди PARQ блоком DEPART. В этом устройстве задерживаем заявку на время
необходимое для стрижки, делаем это блоком ADVANCE с соответствующими
параметрами. По истечении времени задержки освобождаем устройство PAR от этой
заявки блоком RELEASE и завершаем эту часть алгоритма блоком TERMINATE с
параметром 0. Часть алгоритма отвечающая за обслуживание клиентов желающих
подстричься и побриться разрабатывается аналогично за исключением того что в
нем будет еще один блок ADVANCE который задержит клиента на время бритья.
Модели и алгоритмы для других заданий разрабатывались
аналогично.
Рисунок 8. Алгоритм 1.1.
Где, X2 - Интервалы времени прихода клиентов для стрижки, X4 - Время
стрижки, X6 - Интервалы времени прихода клиентов для стрижки и бритья, X8 -
Время бритья
Модель 1.2 приведен на рис. 9.
язык моделирование программный имитационный
Рисунок 9. Модель 1.2.
Алгоритм 1.2 приведен на рис.10.
Рисунок 10. Алгоритм 1.2.
Где- количество сборщиков, X3 - время сборки, X5 - время обжига
Модель 1.3 приведен на рис. 11.
Рисунок 11. Модель 1.3.
Алгоритм 1.3 приведен на рис. 12.
Рисунок 12. Алгоритм 1.3.
Где, X2 - Интервал прибытия судов первого типа, X4 - Время буксирования
до причала судов первого типа, X6 - Время погрузки-разгрузки судов первого
типа, X8 - Время буксирования от причала судов первого типа, X10 - Интервал
прибытия судов второго типа, X12 - Время буксирования до причала судов второго
типа, X14 - Время погрузки-разгрузки судов второго типа, X16 - Время
буксирования от причала судов второго типа
Модель 2.1 приведен на рис. 13.
Рисунок 13. Модель 2.1.
Алгоритм 2.1 приведен на рис. 14.
Рисунок 14. Алгоритм 2.1.
Где, X2 - Время поступления деталей на обработку, X4 - Время выполнения
операции 1-м рабочим, X6 - Время выполнения операции 2-м рабочим, X8 - Время
выполнения операции 3-м рабочим
Модель 2.2 приведен на рис. 15.
Рисунок 15. Модель 2.2.
Алгоритм 2.2 приведен на рис. 16 и рис 17.
Рисунок 16. Алгоритм 2.2 часть 1.
Рисунок 17. Алгоритм 2.2 часть 2.
Где, X2 - Интервалы времени между поступлениями изделий первого типа на
обработку, X4 - Время изготовления изделия первого потока первым видом
оборудования, X6 - Время изготовления изделия первого потока вторым видом
оборудования, X8 - Время изготовления изделия первого потока третьим видом
оборудования, X10 - Интервалы времени между поступлениями изделий второго типа
на обработку, X12 - Время изготовления изделия второго потока первым видом
оборудования, X14 - Время изготовления изделия второго потока вторым видом
оборудования, X16 - Время изготовления изделия второго потока третьим видом
оборудования
Модель 2.3 приведен на рис. 18.
Рисунок 18. Модель 2.3.
Алгоритм 2.3 приведен на рис. 19.
Рисунок 19. Алгоритм 2.3.
Где, X2 - Параметры экспоненциального распределения вероятностей (λ
и β)
X3, X4 - Время заправки на первой колонке, X6 - Время заправки на второй
колонке
Модель 2.4 приведен на рис. 20.
Рисунок 20. Модель 2.4.
Алгоритм 2.4 приведен на рис. 21.
Рисунок 21. Алгоритм 2.4.
Где, X2 - Интервалы времени между приходами рабочих- Вероятности взятия
инструментов с первого стеллажа, X5 - Время, необходимое для поиска инструмента
на первом стеллаже- Вероятности взятия инструментов со второго стеллажа, X8 -
Время, необходимое для поиска инструмента на втором стеллаже$T_OBSL - Время
учета взятых инструментов
Модель 2.5 приведен на рис. 22.
Рисунок 22. Модель 2.5.
Алгоритм 2.5 приведен на рис. 23.
Рисунок 23. Алгоритм 2.5.
Где, X2 - Параметры экспоненциального распределения вероятностей (λ
и β)
X3 - Время контроля первой операции- Вероятность брака после первой
операции, X6 - Параметры нормального распределения вероятностей (μ
и σ.)
X7 - Время контроля второй операции- Вероятность брака после второй
операции- Вероятность возврата изделия на повторную обработку после первой
операции- Вероятность возврата изделия на повторную обработку после второй
операции- время выполнения первой операции
.2 Разработка программ
В данной квалификационной работе необходимо разработать
программно-методические средства включающие в себя задания на написание
программ на языке GPSS World. Для проверки у студентов правильности выполнения
их программ необходимо решить все задания для всех вариантов. Алгоритмы
программ разработаны и представлены выше.
Для реализации разработанных ранее алгоритмов будем использовать
операторы языка GPSS World представленные далее с подробным оптсанием их аргументов.
Оператор языка GPSS содержит 4 поля: метка (необязательное поле),
операция, операнды, комментарий (необязательное поле). Комментарием считаются
все символы, следующие после символа «;». Количество операндов может достигать
9, операнды обозначаются буквами A, B, C, D, E, F, G, H, I. Часть операндов
может быть опущена (берутся по умолчанию), если опускаются не последние
операнды (A, B, D, E), запятые сохраняются.A, B, C, D, E, F, G, H, I
(генерировать транзакты).
A
- среднее значение интервала; B - модификатор разброса или модификатор функции
(GENE 10, 5 - интервал от 5 до 15 единиц равновероятен, GENE 10, 1 - средний
интервал 10 единиц, распределение интервалов - по функции FN 1); C - время
появления первого транзакта (по умолчанию 1); D - число выработанных транзактов
(по умолчанию ); E - приоритет (по умолчанию 0); FчI - число и тип
параметров (10PF, 7PH, ...) (по умолчанию 12 PH). При генерации транзактов
значения всех параметров нулевые.
SEIZE A (занять). A - имя устройства. Занять можно только свободное
устройство. Уже занятое устройство не впускает транзакты, перед ним
организуется очередь на основе относительных приоритетов.A (освободить). A -
имя устройства. Устройство должно быть освобождено тем же транзактом, который
его занял.A1, B1/A2, B2/…/AN, BN (объявление многоканальных устройств). Ai -
имя i-го устройства, Bi - объем i-го устройства.A, B (войти в многоканальное
устройство A, занять в нем B ячеек). По умолчанию B=1. Если в многоканальном
устройстве нет требуемого количества ячеек, транзакт задерживается на входе
оператора.A, B (выйти, т.е. освободить в многоканальном устройстве A и B
ячеек). Освобождать можно любым транзактом, не обязательно тем, который
занимал!A, B (задержать). A - среднее время задержки; B - модификатор разброса
или модификатор функции. Оператор может впускать сколько угодно транзактов.A,
B, C (передать). A - режим выбора; B и C - метки операторов, к которым
происходит переход. Основные варианты использования оператора следующие:=BOTH -
транзакт повторяет попытки войти сначала в оператор B, а в случае неудачи - в
оператор C и т.д. до тех пор, пока какой-либо из операторов его не
впустит.=.XXX - транзакт случайным образом, с вероятностью 0.XXX передается в оператор
C, с вероятностью 1-0.XXX - в оператор B (или в следующий за TRANSFER по
порядку оператор, если операнд B опущен).
Если опущены операнды A и C, транзакт безусловно передается в оператор,
метка которого задана операндом B.X A, B, C (проверить).X - оператор отношения.
Транзакт переходит в следующий по порядку оператор, если выполняется условие A
X B, в противном случае пересылается на оператор C (по умолчанию остается на
входе оператора TEST).
Вспомогательный
оператор отношения X(E, G, L, GE, LE, NE) имеет соответственно смысл
"равно", "больше", "меньше", "больше или
равно", "меньше или равно", "не равно". X можно писать
после TEST без пробела.A, B (отметить вход в очередь).A - имя очереди, B -
количество занимаемых единиц (по умолчанию B=1).A, B (отметить выход из
очереди). Смысл операндов тот же, что для QUEUE. Оператор ставится после
операторов SEIZE, PREEMT, ENTER.A (завершить). Оператор ликвидирует вошедший в
него транзакт, вычитает A единиц из счетчика завершений. По умолчанию A=0.
ИМЯ
FUNCTION RNj, CK,Y1/X2,Y2/…/XK,YK
Описание
непрерывной случайной функции .
Здесь
j - номер используемого датчика случайных чисел генерирующий числа с плавающей
точкой в диапазоне [0,1], K - количество точек, по которым выполняется
кусочно-линейная аппроксимация функции.
ИМЯ
FUNCTION RNj, DK
X1,Y1/X2,Y2/…/XK,YK
Описание дискретной случайной функции.
Значения X должны лежать в пределах (0,1) и быть записаны в порядке
увеличения.
А так же управляющую картуA, B, C, D (старт). Оператор уведомляет
интерпретатор, что ввод программы закончен, можно начинать моделирование. A -
начальное значение кода в счетчике завершений ( TG1); B=NP - признак подавления
стандартной печати (по умолчанию распечатывается статистика в конце счета); C -
счетчик снимков, показывающий, через какой интервал уменьшения TG1 надо
распечатывать промежуточные результаты (по умолчанию не печатать); D=1 -
признак распечатки списков в конце моделирования.
В соответствии с этими операторами, разработанными ранее алгоритмами и
исходными данными представленными в задании разработаем программы, листинги
которых представлены ниже и будут нумероваться «Программа 1.1», «Программа
1.2», и.т.д.; и «Программа 2.1», «Программа 2.2» , и.т.д., соответственно. Где
первая цифра номер лабораторной работы, а вторая ее порядковый номер в каждой
из них.
В связи с тем что программы для некоторых вариантов различаются лишь
входными данными для удобства приведем вариант только с одним набором входных
данных.
Программа 1.1
Вариант 1
;Клиенты для стрижки35,10 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди18,6 ;
Стрижка у парикмахераPAR ; Освобождение парикмахера0 ;
Уход из парикмахерской
; Клиенты для стрижки и бритья60,20 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди10,2 ;
Бритье у парикмахера18,6 ; Стрижка у парикмахераPAR ;
Освобождение парикмахера0 ; Уход из парикмахерской
;Моделирование480 ; Время моделирования1 ;
Завершение моделирования1 ; Начало моделирования
Программа 1.2
Вариант 2,,,4 ;Определение количества
сборщиковADVANCE 30,5 ;Сборка следующей деталиOBG ;Занятие
печи8,2 ;Использование печиOBG ;Освобождение
печи,BACK1 ;Переход к сборке следующей детали2400 ;Моделирование
5 дней работы1 ;Завершение работы1 ;Начало
прогона модели
Программа 1.3
Вариант 3STORAGE 6 ;6 причалов для кораблей первого
типаSTORAGE 3 ;2 причала для кораблей второго типаSTORAGE 2 ;2
буксира
;Корабль первого типа130,30 ;Подход к портуTYPE1 ;Занятие
очередиPRCH1 ;Получение причалаBUKS ;Получение
буксираTYPE1 ;Освобождение очереди30,7 ;Буксирование
до причалаBUKS ;Освобождение буксира720,120 ;Погрузка-разгрузкаBUKS ;Получение
буксираPRCH1 ;Освобождение причала20,5 ;Буксирование
(отчаливание)BUKS ;Освобождение буксира ;Завершение
модели
;Корабль второго
типа390,60TYPE2PRCH2BUKS,2TYPE245,12BUKS,21080,240BUKS,2PRCH235,10BUKS,20
;Моделирование48000 ;Моделирование
времени работы1 ;Завершение моделирования1 ;Начало
моделирования
Программа 2.1
**************************************************X1,3 ;Ср.
время поступления деталей на обработкуX2,1.25 ;Отклонение
от ср. времениX3,14 ;Ср. время выполнения операции 1-м рабочимX4,1.5 ;Отклонение
от ср. времениX5,16 ;Ср. время выполнения операции 2-м рабочимX6,2 ;Отклонение
от ср. времениX7,11 ;Ср. время выполнения операции 3-м
рабочимX8,2.5 ;Отклонение от ср.
времени
**************************************************X1,X2 ;Интервал
поступления деталейALL,RAB_1,RAB_3,4 ;Передача деталей
1-му, 2-му или 3-му рабочему_1 SEIZE RAB1 ;Занимаем устройство RAB1 (1-й
рабочий)X3,X4 ;Задерживаем деталь на время обработкиRAB1 ;Освобождение
1-го рабочего ;Завершение
операции
**************************************************RAB2 ;Занимаем
устройство RAB2 (2-й рабочий)X5,X6 ;Задерживаем деталь на время
обработкиRAB2 ;Освобождение 2-го рабочего ;Завершение
операции
**************************************************_3 QUEUE RAB3 ;
Занятие очередиRAB3 ; Занимаем устройство RAB3 (3-й
рабочий)RAB3 ; Освобождение
очередиX7,X8 ; Задерживаем деталь на время обработкиRAB3 ;
Освобождение 3-го рабочего ;
Завершение операции
**************************************************480 ;Время
моделирования системы (8 часов)G TG1,1,Fin ;Если счетчик TG1 > 1, то
запись в файл данных
**************************************************OPEN
("File.txt"),,Met1 ;Открытие файла, в случае ошибки
завершить(Catenate ("Facility= ",FC$RAB1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$RAB1/1000)),,Met(Catenate
("Facility= ",FC$RAB2)),,Met(Catenate ("Util. Facility= ",FR$RAB2/1000)),,Met(Catenate
("Max= ",QM$RAB3)),,Met(Catenate ("CONT.= ",Q$RAB3)),,Met(Catenate
("ENTRY= ",QC$RAB3)),,Met(Catenate ("AVE.TIME= ",QT$RAB3)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1 ;
Завершение операцииTERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11,NP ;Начало
моделирования
**************************************************
Программа 2.2
Вариант 1
**************************************************
;Первый поток40,5 ;Интервал поступления изделий
1-го типаOCHER1 ;Занятие очереди
1OBOR1 ;Занимаем оборудование 1OCHER1 ;Освобождение
очереди 115,2 ;Задерживаем изделие на время обработкиOBOR1 ;Освобождение
оборудования 1OCHER2 ;Занятие
очереди 2OBOR2 ;Занимаем
оборудование 2OCHER2 ;Освобождение очереди 229,1 ;Задерживаем
изделие на время обработкиOBOR2 ;Освобождение оборудования
2OCHER3 ;Занятие очереди 3OBOR3 ;Занимаем
оборудование 3OCHER3 ;Освобождение очереди 324,5 ;Задерживаем
изделие на время обработкиOBOR3 ;Освобождение оборудования
3 ; Завершение операции
**************************************************
;Второй поток23,4.5 ;Интервал поступления изделий 2-го
типаOCHER1 ;Занятие очереди 1OBOR1 ;Занимаем
оборудование 1OCHER1 ;Освобождение очереди
121,2 ;Задерживаем изделие на время обработкиOBOR1 ;Освобождение
оборудования 1OCHER2 ;Занятие очереди
2OBOR2 ;Занимаем оборудование 2OCHER2 ;Освобождение
очереди 219,5.5 ;Задерживаем изделие на время обработкиOBOR2 ;Освобождение
оборудования 2OCHER3 ;Занятие
очереди 3OBOR3 ;Занимаем
оборудование 3OCHER3 ;Освобождение очереди
328,1 ;Задерживаем изделие на время обработкиOBOR3 ;Освобождение
оборудования 3 ; Завершение
операции
**************************************************
;Моделирование960G TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility1= ",FC$OBOR1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$OBOR1/1000)),,Met(Catenate
("Facility2= ",FC$OBOR1)),,Met(Catenate ("Util.
Facility2= ",FR$OBOR1/1000)),,Met(Catenate ("Max1= ",QM$OCHER1)),,Met(Catenate
("AVE.CONT1= ",QA$OCHER1)),,Met(Catenate ("Max2= ",QM$OCHER2)),,Met(Catenate
("AVE.CONT2= ",QA$OCHER2)),,Met(Catenate ("Max3= ",QM$OCHER3)),,Met(Catenate
("AVE.CONT3= ",QA$OCHER3)),,MetProb,,Met2 ; Закрытие файла,
в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Программа 2.3
Вариант 2
**************************************************(Exponential (1,0,6.5)) ;Поступление
автомобилей на заправкуZAPR ;Вход авто в
очередь на заправкуBOTH KOL_1,KOL_2 ;Переход авто к свободной колонке_1
SEIZE KOL1 ;Определение занятости 1 колонкиZAPR ;Вход
авто из очереди на заправку15,2 ;Заправка
авто на 1 колонкеKOL1 ; Освобождение 1
колонки,NEXT ; Переход к NEXT_2 SEIZE KOL2 ;
Определение занятости 2 колонкиZAPR ; Вход
авто из очереди на заправку13,1 ;
Заправка авто на 2 колонкеKOL2 ;
Освобождение 2 колонкиSAVEVALUE AVE_QUEUE,QT$ZAPR ;Сохранение времени
пребывания в очереди ;Выход авто из
системы
**************************************************480 ;Моделирование
в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие файла, в
случае ошибки завершить(Catenate ("Util. Facility1= ",FR$KOL1/1000)),,Met
;Запись в файл, в случае ошибки завершить(Catenate ("AVE_TIME 1= ",FT$KOL1)),,Met(Catenate
("Util. Facility2= ",FR$KOL2/1000)),,Met(Catenate ("AVE_TIME
2= ",FT$KOL2)),,Met(Catenate ("Max1= ",QM$ZAPR)),,Met(Catenate
("AVE.CONT1= ",QA$ZAPR)),,Met(Catenate ("CONT1= ",Q$ZAPR)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Программа 2.4
Вариант 3
**************************************************FUNCTION RN1,D5 ;
Опр. числа взятых инструментов с 1 стеллажа
.2,3/0.4,4/0.6,5/0.8,6/1,7FUNCTION RN1,D3 ; Опр. числа взятых
инструментов со 2 стеллажа
.33,2/0.66,3/1,4_OBSL FVARIABLE (FN$INST1+FN$INST2)#1.2 ; Опр.
Времени учета взятых инструментов
**************************************************9,2 ;Прибытие
рабочих за инструментом.29,,STEL2 ;Переход с заданной вероятностью
ко 2 стеллажу10,5 ;Поиск инструмента на 1
стеллажеTRANSFER .46,,KLAD ;Переход с заданной вероятностью к
кладовщику11,2.5 ;Поиск инструмента на 2 стеллажеQUEUE
UCHET ;Вход в очередь к кладовщикуCLAD ;Ожидание
освобождения кладовщикаUCHET ;Выход из очереди к
кладовщикуV$T_OBSL ;Время учета взятых инструментовCLAD ;Освобождение
кладовщика ;Выход рабочего из кладовой
**************************************************480 ;
Моделирование в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в
файл данныхOPEN ("File.txt"),,Met1 ;Открытие файла, в случае
ошибки завершить(Catenate ("Facility= ",FC$CLAD)),,Met
;Запись в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$CLAD
/1000)),,Met(Catenate ("Max= ",QM$UCHET)),,Met(Catenate
("ENTRIES= ", QC$UCHET)),,Met(Catenate ("ENTRIES(0)= ",QZ$UCHET)),,Met(Catenate
("ENTRIES(0)%= ", ((QZ$UCHET#100)/ QC$UCHET))),,Met(Catenate
("AVE_TIME = ",FT$UCHET)),,MetProb,,Met2 ; Закрытие
файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Программа 2.5
Вариант 4
**************************************************231_obrab TABLE
M1,100,20,7_1 FUNCTION RN1,D7
,0/.04,9/.20,13/.35,17/.60,25/.85,35/1.0,50
**************************************************(Exponential (1,0,25)) ;
Интервал поступления изделий1,FN$Oper_1 ; Присваивание 1 переменной значения
функцииSEIZE Oborud_1 ; Занимаем оборудование 1P1 ;
Задерживаем изделие на время обработкиOborud_1 ;
Освобождение оборудования 12 ; Задерживаем изделие
на время контроля.07,,Ustr_brak_1 ; Переход с вероятностью к Ustr_brak_1
**************************************************SEIZE Oborud_2 ;
Занимаем оборудование 2(Normal (1,25,3)) ; Задерживаем изделие на время
обработкиOborud_2 ; Освобождение оборудования 23 ;
Задерживаем изделие на время контроля.15,,Ustr_brak_2 ;
Переход с вероятностью к Ustr_brak_2Time_obrab ;
Запись результата в таблицу ;
Завершение операции
**************************************************_brak_1 TRANSFER
.35,,Oper1 ; Переход с вероятностью к Oper1 ;
Завершение операции_brak_2 TRANSFER .62,,Oper2 ; Переход с
вероятностью к Oper2 ;
Завершение операции
**************************************************480G TG1,1,Fin ;Если
счетчик TG1 > 1, то запись в файл данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$Oborud_1/1000)),,Met
;Запись в файл, в случае ошибки завершить(Catenate ("Util.
Facility2= ",FR$Oborud_2/1000)),,Met(Catenate
("AVE_TIME1 = ",FT$Oborud_1)),,Met(Catenate
("AVE_TIME2 = ",FT$Oborud_2)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
4. Разработка программной документации
Введение стандартов в процесс создания программного
изделия направлено на достижение следующих результатов:
упрощение процесса разработки программы, а значит, и
улучшение таких показателей, как надежность и стоимость.
облегчение чтения и понимания программ сторонними
лицами, что ведет к снижению числа ошибок, упрощает использование и
эксплуатацию, документированностъ, мобильность и т.д.
Производство программ регулируется Единой системой
программной документации (ЕСПД). В стандартах ЕСПД установлены требования,
регламентирующие разработку, производство, тиражирование, сопровождение
программ, что обеспечивает возможность:
а) унификации программных изделий для взаимообмена
программами и применения ранее созданных программ в новых разработках;
б) снижение трудоемкости и повышения эффективности
разработки, сопровождения, изготовления и эксплуатации программных изделий;
в) автоматизации изготовления и хранения программной
документации.
В данном дипломном проекте разрабатывались три вида
документов -«Программа и методика испытаний» и два эксплуатационных документа -
«Руководство программиста» и «Руководство оператора».
Документы могут разрабатываться как на весь комплекс,
так и на отдельные модули. В данном дипломном проекте программная документация
разрабатывалась на весь комплекс.
Хотя ЕСПД предусматривает разработку порядка и
методики испытания на стадии «Рабочий проект», работа по подготовке и
проведению
испытаний фактически начинается уже на стадии «Техническое задание»,
когда намечается порядок контроля и приемки, и ее целесообразно вести в течение
всего процесса проектирования программы.
Эксплуатационные документы разрабатывались на стадии разработки
программы.
4.1 Руководство программиста
Документ «Руководство программиста» разрабатывается в соответствии с ГОСТ
19.504-79.
Руководство программиста должно содержать следующие разделы:
· назначение и условия применения программы;
· характеристики программы;
· обращение к программе;
· входные и выходные данные;
· сообщения.
В разделе «Назначение и условия применения программы»
должны быть указаны назначение и функции, выполняемые программой, условия,
необходимые для выполнения программы (объем оперативной памяти, требования к
составу и параметрам периферийных устройств, требования к программному обеспечению
и т. п.).
В разделе «Характеристики программы» должно быть
приведено описание основных характеристик и особенностей программы (временные
характеристики, режим работы, средства контроля правильности выполнения и
самовосстанавливаемости программы и т.д.).
В разделе «Обращение к программе» должно быть
приведено описание процедур вызова программы (способы передачи управления и
параметров данных и др.),
В разделе «Входные и выходные данные» должно быть
приведено описание организации используемой входной и выходной информации и,
при необходимости, ее кодирования.
В разделе «Сообщения» должны быть указаны тексты
сообщений, выдаваемых программисту или оператору в ходе выполнения программы,
описание их содержания и действия, которые необходимо предпринять по этим
сообщениям.
Документ «Руководство программиста» приведен ниже.
Руководство программиста
. Назначение и условия применения программы
Программа предназначена для имитационного моделирования процессов или
объектов описанных в задании лабораторных работ по дисциплине «Компьютерное
моделирование».
Для запуска данной программы необходимы следующие условия:
Минимальный состав программных средств:
· операционная система Windows XP/Vista/7;
· среда программирования GPSS World Student Version 5.2.2.
Минимальный состав аппаратных средств:
· персональный компьютер на базе процессора с частотой не менее
1 ГГц;
· ОЗУ не менее 256 Мб;
· 10 Мб свободного места на жёстком диске;
· видеокарта и монитор, поддерживающие разрешение 800Ч600 или
выше;
· клавиатура, мышь.
. Характеристики программы
Программное обеспечение создано с помощью среды программирования GPSS
World Student Version 5.2.2, языка моделирования GPSS World и предназначено для
работы под управлением операционной системы Windows XP/Vista/7.
. Обращение к программе
Для запуска приложения необходимо в меню установленных программ выбрать
GPSS World Student Version.
После запуска приложения из строки меню выбрать File->New, из
открывшегося списка выбрать Model и нажать Ok, при этом создастся новая модель
и откроется поле ввода текста программы «Untitled Model 1.gps» (рис. 24).
Рисунок 24. Поле ввода текста программы
В этом окне необходимо написать код программы соответствующий заранее
разработанному алгоритму. Для создания выполняемой модели необходимо из строки
меню выбрать Command->Create Simulation, после этого если нет ошибок то
сформируется журнал «Untitled Model 1.1.sim»(рис. 25).
Рисунок 25. Журнал
Если же в программе найдены ошибки, то они отображаются в данном журнале.
Для запуска программы необходимо из строки меню выбрать
Command->START, в открывшемся диалоговом окне Start Command команде START
задаются аргументы, после нажатия на Ok происходит выполнение программы и
формирование отчета «Untitled Model 1.1.1.gpr»(рис. 26).
Рисунок 26. Отчет
. Входные и выходные данные
Входные и выходные данные используют:
1) окно ввода текста программы;
2) окно выдачи сообщений (журнал);
) окно отчета работы программы;
) окно сохранения;
) окна открытия;
1) Входными данными являются текст программы написанный на языке GPSS World.
Выходные данные - результаты проверки данного текста на ошибки и результаты его
выполнения.
2) Входными данными являются результаты проверки текста введенной программы
на ошибки. Выходные данные - найденные ошибки с номерами строк и их описанием,
или сообщение об удачной проверке и отсутствию ошибок.
3) Входными данными являются результаты выполнения текста программы.
Выходные данные - полный отчет о моделировании данной системы сгенерированный
стандартными операторами языка.
4) Входными данными являются текст программы, журнал сообщений или отчет
работы программы. Выходные данные - тестовый файл с заданным именем и
соответствующим расширением.
5) Входными данными являются тестовый файл с заданным именем и
соответствующим расширением сохраненный ранее. Выходные данные - текст
программы, журнал сообщений или отчет работы программы.
. Сообщения программисту
Специальных сообщений программисту в программе не предусмотрено. Возможны
только сообщения операционной системы о поврежденных или некорректных файлах.
.2 Руководство оператора
Документ «Руководство оператора» разрабатывается в соответствии с ГОСТ
19.505-79.
Руководство оператора должно содержать следующие
разделы:
· назначение программы;
· условия выполнения программы
· выполнение программы;
· сообщения оператору.
В разделе «Назначение программы» должны быть указаны сведения о
назначении программы и информация, достаточная для понимания функций программы
и ее эксплуатации.
В разделе «Условия выполнения программы» должны быть
указаны условия, необходимые для выполнения программы (минимальный и (или)
максимальный состав аппаратных и программных средств и т.п.).
В разделе «Выполнение программы» должны быть указаны
последовательность действий оператора, обеспечивающих загрузку, запуск,
выполнение и завершение программы, приведены описание функции, формата и
возможных вариантов команд, с помощью которых оператор осуществляет загрузку и
управляет выполнением программы, а также ответы программы на эти команды.
В разделе «Сообщения оператору» должны быть приведены
тексты сообщений, выдаваемых в ходе выполнения программы, описание их
содержания и соответствующие действия оператора (действия оператора в случае
сбоя, возможности повторного запуска программы и т. п.).
Документа «Руководство оператора» приведен ниже.
Руководство оператора
. Назначение программы
Программа предназначена для имитационного моделирования процессов или
объектов описанных в задании лабораторных работ по дисциплине «Компьютерное
моделирование».
. Условия выполнения программы
Для запуска данной программы необходимы следующие условия:
Минимальный состав программных средств:
· операционная система Windows XP/Vista/7;
· среда программирования GPSS World Student Version 5.2.2.
Минимальный состав аппаратных средств:
· персональный компьютер на базе процессора с частотой не менее
1 ГГц;
· ОЗУ не менее 256 Мб;
· 10 Мб свободного места на жёстком диске;
· видеокарта и монитор, поддерживающие разрешение 800Ч600 или
выше;
· клавиатура, мышь.
. Обращение к программе
Для запуска приложения необходимо в меню установленных программ выбрать
GPSS World Student Version.
Для запуска программы необходимо из строки меню выбрать
Command->START, в открывшемся диалоговом окне Start Command команде START
задаются аргументы, после нажатия на Ok происходит выполнение программы и
формирование отчета «Untitled Model 1.1.1.gpr»
Для открытия этого или другого файла необходимо из строки меню выбрать
File->Open, далее в открывшемся окне (рис. 33) выбрать нужный файл и нажать
открыть.
Рисунок 33. Открыть
Для выхода из программы необходимо нажать кнопку , или File->Exit, после чего
приложение закроется.
. Сообщения оператору
В данной программе предусмотрены стандартные для данной версии GPSS World
сообщения оператору, которые отображаются в окне журнала событий с указанием
номеров строк, текста этих строк и описанием ошибки. Пример таких ошибок
продемонстрирован выше (рис 30).
5. Экспериментальная часть
5.1 Программа и методика испытаний
. Объект испытаний
Объектом испытаний является созданная в результате выполнения одного из
заданий из лабораторной работы программа - «моделирование работы
автозаправочной станции», по дисциплине «Компьютерное моделирование», так как
все задания однотипные будем проводить тестирование только для этой программы
из лабораторной работы №2 задание для 2 варианта.
. Цель испытаний
Целью испытаний являются:
· проверка корректной работы программы;
· обеспечение отсутствия непредвиденных сбоев в работе
программы.
. Требования к программе
Необходимо проверить:
· наличие созданного файла и корректность записей в нем
· правильное выполнение операций
. Требования к программной документации
При проведении испытаний должен присутствовать следующий состав
программной документации:
· Программа и методика испытаний;
· Эксплуатационные документы.
. Средства и порядок испытаний
Во время проведения испытаний использовались следующие аппаратные и
программные средства:
· персональный компьютер на базе процессора Intel Core i3 2.4
ГГц;
· ОЗУ 3072 Мб;
· видеокарта и монитор, работающие в режиме 1366Ч768;
· клавиатура, мышь.
· операционная система Windows 7;
· среда программирования GPSS World Student Version 5.2.2.
Порядок проведения испытаний
Для проверки правильности функционирования программы выполнялись
следующие задачи:
· запуск программы Command->Create Simulation;
· ввод неизвестного оператора;
· передача оператору параметров несоответствующего типа
· запуск начала моделирования Command->START;
· изменение входных данных модели;
. Методы испытаний
Разработанное программное обеспечение выполняет одну главную задачу - это
моделирование работы автозаправочной станции.
Для проверки правильности моделирования необходимо провести серию тестов,
заключающихся в том, что бы менять время заправки на каждой колонке и параметры
экспоненциального распределения вероятностей.
5.2 Испытания программы
Экспериментальные исследования проведены в соответствии с приведенной
программой исследования.
Цель проведения эксперимента:
· проверка корректности сообщений об ошибке
· проверка правильности изменения результатов при изменении тех
или иных входных данных.
) Проверка корректности сообщений об ошибке.
Для проверки корректности сообщений об ошибке было проведено два
эксперимента:
а) запуск программы с ошибкой в синтаксисе оператора;
б) запуск программы с ошибкой в типе передаваемого оператору параметра.
Результаты экспериментов приведены на рис. 34 и 35 соответственно.
Рисунок 34. Ошибка в синтаксисе оператора
Рисунок 35. Ошибка в типе передаваемого оператору параметра.
) Проверка правильности изменения результатов при изменении тех
или иных входных данных.
Для проверки изменения результатов при изменении тех или иных входных
данных проведено два эксперимента:
а) запуск моделирования с исходными данными предложенными по заданию;
б) запуск моделирования с измененными входными данными.
Результаты эксперимента для режима соответствия интерфейсных элементов их
прямым функциям приведены на рисунке 36, 37 и 38, 39 соответственно.
Рисунок 36. Моделирование с исходными данными предложенными по заданию
(часть 1)
Рисунок 37. Моделирование с исходными данными предложенными по заданию
(часть 2)
Рисунок 38. Моделирование с измененными входными данными (часть 1)
Рисунок 39. Моделирование с измененными входными данными (часть 2)
5.3 Выводы по результатам испытаний
Во время тестирования программа не давала сбоев и работала абсолютно
корректно. Как видно из тестирования по проверке корректности сообщений об
ошибке сообщения выданы корректно с указанием ее названия, номера строк и
столбца, а так же вывод самой строки. Так же можно отметить что при
тестировании правильности изменения результатов при изменении тех или иных
входных данных было зафиксированы изменения в отчете моделирования. Так при
исходных данных по заданию по результатам моделирования видно, что на первая
колонка обслужила 32 автомобилей, а вторая 37, при этом 14 автомобилей осталось
не обслуженными так как обе колонки были заняты, так же видно что вторая
колонка обслужила на 5 автомобилей больше чем первая так как время обслуживания
на ней меньше (13±1 мин) чем на второй (15±2 мин). Можно заметить, что после
уменьшения времени обслуживания на второй колонке (7±2 мин) она обслужила на 22
автомобиля больше чем вторая колонка (50 и 28 соответственно), так же видно что
нагрузка на колонки снизилась и как следствие все пришедшие на заправку
автомобили обслужены. Из этого можно сделать вывод, что чем меньше времени
обслуживающий аппарат удерживает транзакт тем больше транзактов он сможет
обработать и больше вероятность что все пришедшие на его вход заявки будут
обслужены. Таким образом делаем вывод что программа работает правильно и
выполняет все поставленные перед ней задчи.
Заключение
Проведенные в данной выпускной квалификационной работе исследования
позволяют сформулировать основные результаты.
· Проведен анализ языка GPSS World и на основе его структуры и
операторов, в соответствии с темой данной квалификационной работы были
разработаны задания;
· Для этих заданий были разработаны методические указания и
контрольные вопросы, необходимые для выполнения заданий и лучшего понимания
языка.
· Разобран способ построения алгоритмов для языка моделирования
GPSS World. На основе этого в соответствии с заданиями разработаны алгоритмы их
решений.
· Разобран принцип кодирования на языке GPSS World и его
основные операторы. На основе этого, а так же разработанных ранее алгоритмов
разработаны тесты программ для соответствующих заданий.
· Проведено тестирования одно из заданий, в рамках которого
удостоверились, что при изменении входных данных мы получаем изменение
результатов на ожидаемые. Сделаны соответствующие выводы.
В дальнейшем предполагается развитие программно-методических средств за
счет доработки и добавления заданий, разработки новых лабораторных работ. Кроме
этого в лабораторных работах можно за счет изменения заданий установить более
тесную связь с практическими занятиями по дисциплине «Компьютерное
моделирование».
Список использованных источников
1. Шрайбер
Т. Дж. Моделирование на GPSS. - М.:Машиностроение, 1980. - 592 с.
2. Феррари
Д. Оценка производительности вычислительных систем. - М.: Мир, 1981. - 576 с.
. Кудрявцев
Е. М. GPSS World. Основы имитационного моделирования различных систем. - М.:
ДМК Пресс, 2004.- 320 с.
. Томашевский
В., Жданова E. Имитационное моделирование в среде GPSS. - М.:Бестселлер, 2003.
- 416 c.
. Боев
В.Д. Моделирование систем. Инструментальные средства GPSS World Учебное пособие
- Спб: БХВ-Петербург, 2004. - 368 с.
Приложение А
Лабораторные работа №1,2
Текст данных лабораторных работ представлен в виде отдельного
методического указания со своей нумерацией и приложен к пояснительной записке.
Приложение Б
Решение всех заданий лабораторных работ
Постановка задачи
В парикмахерскую c одним креслом приходят клиенты двух
типов. Клиенты первого типа желают только стричься. Клиенты второго типа желают
постричься и побриться.. Парикмахер обслуживает клиентов в порядке «первым
пришел - первым обслужился». Написать GPSS-модель парикмахерской, обеспечив
сбор данных об очереди клиентов.
Исходные данные
Все исходные данные по вариантам приведены в табл. 1 (все числовые
параметры подчиняются равномерному распределению).
Необходимо реализовать отличие в обслуживании
клиентов, которые только стригутся, и клиентов, которые стригутся и бреются.
Порядок обслуживания клиентов парикмахером такой: запросы клиентов,
которые стригутся и бреются, обслуживаются только в том случае, когда в очереди
нет ни одного запроса клиентов, которые только стригутся. Внутри одного типа
дисциплина обслуживания - «первым пришел - первым обслужился». Необходимо
создать модель работы парикмахерской, моделирование выполнять в течение
восьмичасового рабочего дня.
Таблица 1 Исходные данные
Вариант
|
Категория запроса
|
Интервалы времени прихода
клиентов, мин
|
Время обслуживания, с
|
1
|
1 2
|
35±10 60±20
|
18±6 10±2
|
4
|
1 2
|
40¸20 32¸10
|
27¸6 15¸7
|
7
|
1 2
|
37¸14 25¸12
|
24¸10 12¸5
|
Построение модели
Необходимо реализовать отличие в обслуживании
клиентов, которые только стригутся, и клиентов, которые стригутся и бреются.
Такую систему можно промоделировать c помощью двух
сегментов. Один из них моделирует обслуживание только стригущихся клиентов, А
второй - стригущихся и бреющихся. В каждом из сегментов пара QUEUE-DEPART
должна описывать одну и ту же очередь. Таким же образом пара блоков
SEIZE-RELEASE должна описывать в каждом из двух сегментов одно и то же
устройство и моделировать работу парикмахера.
Таблица 2 Таблица определений
Элементы GPSS
|
Интерпретация
|
Транзакты В 1 сегменте
модели Во 2 сегменте модели В 3 сегменте модели
|
Клиенты, которые только
стригутся Клиенты, которые бреются и стригутся Таймер
|
Устройство PAR1 PAR2
|
Стрижка у парикмахера
Бритьё у парикмахера
|
Очередь PARQ
|
Очередь, используемая для
сбора статистики об ожидании клиентов обоих типов
|
Рисунок
40.
Единица
модельного времени - 1 мин.
Программа:
Вариант 1
;Клиенты для стрижки35,10 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди18,6 ;
Стрижка у парикмахераPAR ; Освобождение парикмахера0 ;
Уход из парикмахерской
; Клиенты для стрижки и бритья60,20 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди10,2 ;
Бритье у парикмахера18,6 ; Стрижка у парикмахераPAR ;
Освобождение парикмахера0 ; Уход из парикмахерской
;Моделирование480 ; Время моделирования1 ;
Завершение моделирования1 ; Начало моделирования
Вариант 4
;Клиенты для стрижки40,20 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди27,6 ;
Стрижка у парикмахераPAR ; Освобождение парикмахера0 ;
Уход из парикмахерской
; Клиенты для стрижки и бритья32,10 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди15,7 ;
Бритье у парикмахера27,6 ; Стрижка у парикмахераPAR ;
Освобождение парикмахера0 ; Уход из парикмахерской
;Моделирование480 ; Время моделирования1 ;
Завершение моделирования1 ; Начало моделирования
Вариант 7
;Клиенты для стрижки37,14 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди24,10 ;
Стрижка у парикмахераPAR ; Освобождение парикмахера0 ;
Уход из парикмахерской
; Клиенты для стрижки и бритья25,20 ; Приход клиентовPARQ ;
Присоединение к очередиPAR ; Переход в кресло
парикмахераPARQ ; Уход из очереди12,5 ;
Бритье у парикмахера24,10 ; Стрижка у парикмахераPAR ;
Освобождение парикмахера0 ; Уход из парикмахерской
;Моделирование480 ; Время моделирования1 ;
Завершение моделирования1 ; Начало моделирования
Программа 1.2
Изготовление деталей определенного вида включает
длительный процесс сборки, который заканчивается коротким периодом обжига в
печи. Поскольку эксплуатация печи обходится очень дорого, несколько сборщиков
используют одну печь, в которой одновременно можно обжигать только одну деталь.
Сборщик не может начать новую сборку, пока не вытащит из печи предыдущую деталь.
Исходные данные
Необходимо построить на GPSS модель описанного
процесса. Определить оптимальное число сборщиков, использующих одну печь, т.е.
такое количество, которое дает наибольшую прибыль при моделировании в течение
40 часов модельного времени. Предполагается, что в течение рабочего дня нет
перерывов, а рабочими днями являются все дни (без выходных).
Таким образом, сборщик работает в таком режиме:
) собирает следующую деталь;
) ожидает возможности использования печи по принципу
FIFO;
) использует печь;
) возвращается к п. 1.
Время, необходимое на выполнение различных операций,
приведено в табл. 3.
Таблица 3 Исходные данные
Вариант
|
Операция
|
Необходимое время, мин
|
2
|
Сборка Обжиг
|
30±5 8±2
|
5
|
Сборка Обжиг
|
21±4 10±1
|
8
|
Сборка Обжиг
|
37±7 12±5
|
Построение модели
В данном случае есть два ограничивающих условия,
влияющих на пропускную способность системы: одна печь и некоторое фиксированное
количество сборщиков, работающих в системе.
Естественно для моделирования печи использовать
понятие «устройство», также естественно отождествлять сборщиков c транзактами.
Тогда можно считать, что сборщики «циркулируют» в системе, периодически
осуществляя сборку и обжиг. Аналогично и транзакты должны циркулировать в
GPSS-модели системы. Как видно из постановки задачи, модель представляет собой
замкнутую CMO c одним устройством обслуживания.
В реальной системе, после того, как сборщик вынимает
из печи обожженную деталь, он возвращается и начинает новый этап сборки. В
модели после того, как транзакт завершает использование устройства, он должен
быть перемещен c помощью блока TRANSFER в блок следующей сборки. Для
ограничения общего количества транзактов, циркулирующих в модели, необходимо
использовать операнд D блока GENERATE.
Для вычисления прибыли при заданном числе сборщиков
необходимо знать, сколько готовых деталей они сделают на протяжении
моделируемого периода. Это значение дает количество выходов из печи, т.е. в
процессе моделирования нас интересует именно эта величина.
Таблица 4 Таблица определений
Элементы GPSS
|
Интерпретация
|
Транзакты В 1 сегменте
модели Во 2 сегменте модели
|
Сборщики Таймер
|
Устройство OBG SBOR
|
Печь Сборочное оборудование
|
Рисунок
41.
Единица
модельного времени - 1 мин.
Программа:
Вариант 2,,,4 ;Определение количества сборщиковADVANCE
30,5 ;Сборка следующей деталиOBG ;Занятие печи8,2 ;Использование
печиOBG ;Освобождение печи,BACK1 ;Переход к сборке
следующей детали2400 ;Моделирование 5 дней работы1 ;Завершение
работы1 ;Начало прогона модели
Вариант 5,,,4 ;Определение количества сборщиковADVANCE
21,4 ;Сборка следующей деталиOBG ;Занятие печи10,1 ;Использование
печиOBG ;Освобождение печи,BACK1 ;Переход к
сборке следующей детали2400 ;Моделирование 5 дней работы1 ;Завершение
работы1 ;Начало прогона модели
Вариант 8,,,4 ;Определение количества сборщиковADVANCE
37,7 ;Сборка следующей деталиOBG ;Занятие печи12,5 ;Использование
печиOBG ;Освобождение печи,BACK1 ;Переход к
сборке следующей детали2400 ;Моделирование 5 дней работы1 ;Завершение
работы1 ;Начало прогона модели
Программа 1.3
Морские судна двух типов прибывают в порт, где
происходит их разгрузка. В порту есть два буксира, обеспечивающих ввод и вывод
кораблей из порта. К первому типу судов относятся корабли малого тоннажа,
которые требуют использования одного буксира. Корабли второго типа имеют
большие размеры, и для их ввода и вывода из порта требуется два буксира. Из-за
различия размеров двух типов кораблей необходимы и причалы различного размера.
Кроме того, корабли имеют различное время погрузки-разгрузки. Исходные данные
приведены в табл. 5.
Построить модель системы, в которой можно оценить
время ожидания кораблями каждого типа входа в порт. (Время ожидания входа в
порт включает время ожидания освобождения причала и буксира). Корабль,
ожидающий освобождения причала, не обслуживается буксиром до тех пор, пока не
будет предоставлен нужный причал. Корабль второго типа не займет буксир до тех
пор, пока ему не будут доступны оба буксира.
Таблица 5 Исходные данные
Вариант
|
Тип корабля
|
Интервал прибытия, мин
|
Время входа в порт, мин
|
Количество доступных
причалов
|
Время погрузки-разгрузки,
час
|
Время выхода из порта, мин
|
3
|
1 2
|
130 ± 30 390 ± 60
|
30 ± 7 45 ± 12
|
6 3
|
12 ± 2 18 ± 4
|
20 ± 5 35 ± 10
|
6
|
1 2
|
155 ± 21 275 ± 48
|
34 ± 5 38 ± 10
|
5 4
|
15 ± 2 19 ± 5
|
26 ± 6 39 ± 12
|
9
|
1 2
|
121 ± 32 361 ± 50
|
28 ± 6 41 ± 14
|
7 2
|
13 ± 3 15 ± 2
|
22 ± 4 30 ± 9
|
Рисунок
42.
Программа:
Вариант 3STORAGE 6 ;6 причалов для кораблей первого
типаSTORAGE 3 ;2 причала для кораблей второго типаSTORAGE 2 ;2
буксира
;Корабль первого типа130,30 ;Подход к портуTYPE1 ;Занятие
очередиPRCH1 ;Получение причалаBUKS ;Получение
буксираTYPE1 ;Освобождение очереди30,7 ;Буксирование до
причалаBUKS ;Освобождение буксира720,120 ;Погрузка-разгрузкаBUKS ;Получение
буксираPRCH1 ;Освобождение причала20,5 ;Буксирование
(отчаливание)BUKS ;Освобождение буксира ;Завершение
модели
;Корабль второго
типа390,60TYPE2PRCH2BUKS,2TYPE245,12BUKS,21080,240BUKS,2PRCH235,10BUKS,20
;Моделирование48000 ;Моделирование
времени работы1 ;Завершение моделирования1 ;Начало
моделирования
Вариант 6STORAGE 5 ;6 причалов для кораблей первого
типаSTORAGE 4 ;2 причала для кораблей второго типаSTORAGE 2 ;2
буксира
;Корабль первого типа155,21 ;Подход к портуTYPE1 ;Занятие
очередиPRCH1 ;Получение причалаBUKS ;Получение
буксираTYPE1 ;Освобождение очереди34,5 ;Буксирование до
причалаBUKS ;Освобождение буксира900,120 ;Погрузка-разгрузкаBUKS ;Получение
буксираPRCH1 ;Освобождение причала26,6 ;Буксирование
(отчаливание)BUKS ;Освобождение буксира ;Завершение
модели
;Корабль второго типа275,48TYPE2PRCH2BUKS,2TYPE238,10BUKS,21140,300BUKS,2PRCH239,12BUKS,20
;Моделирование48000 ;Моделирование
времени работы1 ;Завершение моделирования1 ;Начало
моделирования
Вариант 9STORAGE 7 ;6 причалов для кораблей первого
типаSTORAGE 2 ;2 причала для кораблей второго типаSTORAGE 2 ;2
буксира
;Корабль первого типа121,32 ;Подход к портуTYPE1 ;Занятие
очередиPRCH1 ;Получение причалаBUKS ;Получение
буксираTYPE1 ;Освобождение очереди22,4 ;Буксирование до
причалаBUKS ;Освобождение буксира780,180 ;Погрузка-разгрузкаBUKS ;Получение
буксираPRCH1 ;Освобождение причала20,5 ;Буксирование
(отчаливание)BUKS ;Освобождение буксира ;Завершение
модели
;Корабль второго
типа361,50TYPE2PRCH2BUKS,2TYPE241,14BUKS,2900,120BUKS,2PRCH230,9BUKS,20
;Моделирование48000 ;Моделирование
времени работы1 ;Завершение моделирования1 ;Начало
моделирования
Программа 2.1
Постановка задачи
Допустим, к рабочим поступают на изготовление детали с транспортного
конвейера. Интервал между поступлениями двух идущих одна за другой деталей
равен 9±1 мин. Время изготовления детали первым рабочим составляет 12+1 мин, а
вторым- 13±2 мин. Если рабочий занят, он не берет деталь с конвейера, и она
перемещается к другому рабочему. Требуется смоделировать работу первого и
второго рабочих в течение смены. Необходимо определить коэффициент
использования первого и второго рабочих (первого и второго каналов
обслуживания) и число деталей, изготовленных каждым из них.
Модифицировать Программа. Ввести третьего рабочего. Если первый рабочий
занят - деталь подается ко второму; если и он занят - то к третьему рабочему.
При этом третий рабочий должен обрабатывать все поступающие к нему детали.
Детали поступают на обработку через интервал времени, равный 3±1,25 мин. Время
изготовления деталей первым, вторым и третьим рабочими соответственно равно
14±1,5, 16±2 и 11±2,5 мин. Требуется смоделировать работу всей линии в течение
смены. Надо определить число деталей, обработанных каждым рабочим в течение
смены, коэффициенты загрузки (использования) рабочих, максимальную и среднюю
длину очередей деталей, ожидающих обработки у третьего рабочего, и среднее
время пребывания детали в очереди к третьему рабочему. Результат записать в
файл
Рисунок
43
Программа на языке GPSS имеет вид:
**************************************************X1,3 ;Ср.
время поступления деталей на обработкуX2,1.25 ;Отклонение
от ср. времениX3,14 ;Ср. время выполнения операции 1-м
рабочимX4,1.5 ;Отклонение от ср.
времениX5,16 ;Ср. время выполнения операции 2-м рабочимX6,2 ;Отклонение
от ср. времениX7,11 ;Ср. время выполнения операции 3-м рабочимX8,2.5 ;Отклонение
от ср. времени
**************************************************X1,X2 ;Интервал
поступления деталейALL,RAB_1,RAB_3,4 ;Передача деталей
1-му, 2-му или 3-му рабочему_1 SEIZE RAB1 ;Занимаем устройство RAB1 (1-й
рабочий)X3,X4 ;Задерживаем деталь на время обработкиRAB1 ;Освобождение
1-го рабочего ;Завершение
операции
**************************************************RAB2 ;Занимаем
устройство RAB2 (2-й рабочий)X5,X6 ;Задерживаем деталь на время обработкиRAB2 ;Освобождение
2-го рабочего ;Завершение
операции
**************************************************_3 QUEUE RAB3 ;
Занятие очередиRAB3 ; Занимаем устройство RAB3 (3-й
рабочий)RAB3 ; Освобождение
очередиX7,X8 ; Задерживаем деталь на время обработкиRAB3 ;
Освобождение 3-го рабочего ;
Завершение операции
**************************************************480 ;Время
моделирования системы (8 часов)G TG1,1,Fin ;Если счетчик TG1 > 1, то
запись в файл данных
**************************************************OPEN
("File.txt"),,Met1 ;Открытие файла, в
случае ошибки завершить(Catenate ("Facility= ",FC$RAB1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$RAB1/1000)),,Met(Catenate
("Facility= ",FC$RAB2)),,Met(Catenate ("Util. Facility= ",FR$RAB2/1000)),,Met(Catenate
("Max= ",QM$RAB3)),,Met(Catenate ("CONT.= ",Q$RAB3)),,Met(Catenate
("ENTRY= ",QC$RAB3)),,Met(Catenate ("AVE.TIME= ",QT$RAB3)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1 ;
Завершение операцииTERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11,NP ;Начало
моделирования
**************************************************
Программа 2.2
Постановка задачи
Промоделируем работу участка цеха, состоящего из трех видов оборудования,
обслуживающих два потока изделий. Известны интервалы времени между
поступлениями изделий каждого типа на обработку. Известно время изготовления
изделия каждого потока на каждом виде оборудования. Продолжительность
изготовления изделий на всех видах оборудования определяется равномерным
законом распределения.
Задание:
• Создать графическую модель системы
• промоделировать работу участка цеха в течение рабочего дня (8 ч) при
двухсменном режиме;
• определить среднюю загрузку каждого вида оборудования, среднее время
обработки изделий, длину очередей перед каждым видом оборудования (среднюю и
максимальную). Результаты записать в файл.
• На основе полученных данных сделать вывод о необходимость увеличения
или уменьшения размера склада перед каждым видом оборудования, необходимого для
данного потока изделий;
Исходные данные приведены в табл. 6.
Таблица. 6. Исходные данные
Вариант
|
Категория запроса
|
Интервалы времени между поступлениями
изделий каждого типа на обработку, мин
|
Время изготовления изделия
первого потока, мин
|
Время изготовления изделия
второго потока, мин
|
1
|
1 2 3
|
40±5 23±4,5
|
15±2 29±1 24±5
|
21±2 19±5,5 28±1
|
5
|
1 2 3
|
38±6 28±3
|
22±2,9 13±2 48±6
|
7±1 8±2 15±4
|
9
|
1 2 3
|
20±5 51±4
|
30±1,3 22±5 27±2,5
|
31±3 17±3,75 21±7
|
Рисунок
44
Программа
Вариант
1
**************************************************
;Первый
поток40,5 ;Интервал поступления изделий 1-го типаOCHER1 ;Занятие
очереди 1OBOR1 ;Занимаем оборудование 1
DEPART OCHER1 ;Освобождение очереди
115,2 ;Задерживаем изделие на время обработкиOBOR1 ;Освобождение
оборудования 1OCHER2 ;Занятие
очереди 2OBOR2 ;Занимаем оборудование
2OCHER2 ;Освобождение очереди 229,1 ;Задерживаем
изделие на время обработкиOBOR2 ;Освобождение оборудования
2OCHER3 ;Занятие очереди 3OBOR3 ;Занимаем
оборудование 3OCHER3 ;Освобождение очереди
324,5 ;Задерживаем изделие на время обработкиOBOR3 ;Освобождение
оборудования 3 ; Завершение
операции
**************************************************
;Второй поток23,4.5 ;Интервал поступления изделий 2-го
типаOCHER1 ;Занятие очереди 1OBOR1 ;Занимаем
оборудование 1OCHER1 ;Освобождение очереди
121,2 ;Задерживаем изделие на время обработкиOBOR1 ;Освобождение
оборудования 1OCHER2 ;Занятие
очереди 2OBOR2 ;Занимаем оборудование
2OCHER2 ;Освобождение очереди 219,5.5 ;Задерживаем
изделие на время обработкиOBOR2 ;Освобождение оборудования
2OCHER3 ;Занятие очереди 3OBOR3 ;Занимаем
оборудование 3OCHER3 ;Освобождение очереди 328,1 ;Задерживаем
изделие на время обработкиOBOR3 ;Освобождение оборудования
3 ; Завершение операции
**************************************************
;Моделирование960G TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility1= ",FC$OBOR1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$OBOR1/1000)),,Met(Catenate
("Facility2= ",FC$OBOR1)),,Met(Catenate ("Util.
Facility2= ",FR$OBOR1/1000)),,Met(Catenate ("Max1= ",QM$OCHER1)),,Met(Catenate
("AVE.CONT1= ",QA$OCHER1)),,Met(Catenate ("Max2= ",QM$OCHER2)),,Met(Catenate
("AVE.CONT2= ",QA$OCHER2)),,Met(Catenate ("Max3= ",QM$OCHER3)),,Met(Catenate
("AVE.CONT3= ",QA$OCHER3)),,MetProb,,Met2 ; Закрытие файла,
в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант 5
**************************************************
;Первый
поток38,6OCHER1OBOR1OCHER122,2.9OBOR1OCHER2OBOR2OCHER213,2OBOR2OCHER3OBOR3OCHER348,6OBOR3
**************************************************
;Второй поток28,3OCHER1OBOR1OCHER17,1OBOR1OCHER2OBOR2OCHER28,2OBOR2OCHER3OBOR3OCHER315,4OBOR3
**************************************************
;Моделирование960G TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility1= ",FC$OBOR1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$OBOR1/1000)),,Met(Catenate
("Facility2= ",FC$OBOR1)),,Met(Catenate ("Util.
Facility2= ",FR$OBOR1/1000)),,Met(Catenate ("Max1= ",QM$OCHER1)),,Met(Catenate
("AVE.CONT1= ",QA$OCHER1)),,Met(Catenate ("Max2= ",QM$OCHER2)),,Met(Catenate
("AVE.CONT2= ",QA$OCHER2)),,Met(Catenate ("Max3= ",QM$OCHER3)),,Met(Catenate
("AVE.CONT3= ",QA$OCHER3)),,MetProb,,Met2 ; Закрытие файла,
в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11
**************************************************
Вариант 9
**************************************************
;Первый
поток20,5OCHER1OBOR1OCHER130,1.3OBOR1OCHER2OBOR2OCHER222,5OBOR2OCHER3OBOR3OCHER327,2.5OBOR3
**************************************************
;Второй
поток51,4OCHER1OBOR1OCHER131,3OBOR1OCHER2OBOR2OCHER217,3.75OBOR2OCHER3OBOR3OCHER321,7OBOR3
**************************************************
;Моделирование960G TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility1= ",FC$OBOR1)),,Met ;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$OBOR1/1000)),,Met(Catenate
("Facility2= ",FC$OBOR1)),,Met(Catenate ("Util.
Facility2= ",FR$OBOR1/1000)),,Met(Catenate ("Max1= ",QM$OCHER1)),,Met(Catenate
("AVE.CONT1= ",QA$OCHER1)),,Met(Catenate ("Max2= ",QM$OCHER2)),,Met(Catenate
("AVE.CONT2= ",QA$OCHER2)),,Met(Catenate ("Max3= ",QM$OCHER3)),,Met(Catenate
("AVE.CONT3= ",QA$OCHER3)),,MetProb,,Met2 ; Закрытие файла,
в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11
**************************************************
Программа 2.3
Постановка задачи
Необходимо промоделировать работу автомобильной заправочной станции
(АЗС), которая имеет две заправочные колонки. Известны следующие параметры
работы АЗС:
• поток автомобилей, поступающих на заправку, подчиняется
экспоненциальному распределению вероятностей с параметрами λ
и β;
• автомобиль подъезжает к колонке, которая не занята обслуживанием
другого автомобиля.
Требуется создать графическую модель системы, промоделировать работу АЗС
в течение рабочей смены - 8 ч - и определить параметры функционирования АЗС:
• коэффициент загрузки каждой колонки;
• среднее время обслуживания в каждой колонке;
• максимальное, среднее и текущее число автомобилей в очереди к каждой
колонке;
• среднее время нахождения автомобиля в очереди (сохранить значение в
переменной).
• результаты записать в файл
Таблица 7 Исходные данные
Вариант
|
Категория запроса
|
Параметры экспоненциального
распределения вероятностей
|
Время заправки, мин
|
2
|
1 2
|
0 6,5
|
15±2 13±1
|
6
|
1 2
|
0 7
|
11±3 23±4
|
10
|
1 2
|
0 5,5
|
17±1,3 12±2,5
|
Рисунок
45
Программа
Вариант
2
**************************************************(Exponential
(1,0,6.5)) ;Поступление автомобилей на заправкуZAPR ;Вход
авто в очередь на заправкуBOTH KOL_1,KOL_2 ;Переход авто к
свободной колонке_1 SEIZE KOL1 ;Определение занятости
1 колонкиZAPR ;Вход авто из очереди на
заправку15,2 ;Заправка авто на 1
колонкеKOL1 ; Освобождение 1
колонки,NEXT ; Переход к NEXT_2 SEIZE
KOL2 ; Определение занятости 2 колонкиZAPR ;
Вход авто из очереди на заправку13,1 ;
Заправка авто на 2 колонкеKOL2 ;
Освобождение 2 колонкиSAVEVALUE AVE_QUEUE,QT$ZAPR ;Сохранение
времени пребывания в очереди ;Выход
авто из системы
**************************************************480 ;Моделирование
в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$KOL1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("AVE_TIME 1= ",FT$KOL1)),,Met(Catenate
("Util. Facility2= ",FR$KOL2/1000)),,Met(Catenate ("AVE_TIME
2= ",FT$KOL2)),,Met(Catenate ("Max1= ",QM$ZAPR)),,Met(Catenate
("AVE.CONT1= ",QA$ZAPR)),,Met(Catenate ("CONT1= ",Q$ZAPR)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
6
**************************************************(Exponential
(1,0,7)) ;Поступление автомобилей на
заправкуZAPR ;Вход авто в очередь на
заправкуBOTH KOL_1,KOL_2 ;Переход авто к свободной
колонке_1 SEIZE KOL1 ;Определение занятости 1
колонкиZAPR ;Вход авто из очереди на
заправку11,3 ;Заправка авто на 1 колонкеKOL1 ;
Освобождение 1 колонки,NEXT ; Переход к
NEXT_2 SEIZE KOL2 ; Определение занятости 2
колонкиZAPR ; Вход авто из очереди на
заправку23,4 ; Заправка авто на 2 колонкеKOL2 ;
Освобождение 2 колонкиSAVEVALUE AVE_QUEUE,QT$ZAPR ;Сохранение
времени пребывания в очереди ;Выход
авто из системы
**************************************************480 ;Моделирование
в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$KOL1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("AVE_TIME 1= ",FT$KOL1)),,Met(Catenate
("Util. Facility2= ",FR$KOL2/1000)),,Met(Catenate ("AVE_TIME
2= ",FT$KOL2)),,Met(Catenate ("Max1= ",QM$ZAPR)),,Met(Catenate
("AVE.CONT1= ",QA$ZAPR)),,Met(Catenate ("CONT1= ",Q$ZAPR)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
10
**************************************************(Exponential
(1,0,5.5)) ;Поступление автомобилей на заправкуZAPR ;Вход
авто в очередь на заправкуBOTH KOL_1,KOL_2 ;Переход авто к
свободной колонке_1 SEIZE KOL1 ;Определение занятости
1 колонкиZAPR ;Вход авто из очереди на
заправку17,1.3 ;Заправка авто на 1
колонкеKOL1 ; Освобождение 1
колонки,NEXT ; Переход к NEXT_2 SEIZE
KOL2 ; Определение занятости 2 колонкиZAPR ;
Вход авто из очереди на заправку12,2.5 ;
Заправка авто на 2 колонкеKOL2 ;
Освобождение 2 колонкиSAVEVALUE AVE_QUEUE,QT$ZAPR ;Сохранение
времени пребывания в очереди ;Выход
авто из системы
**************************************************480 ;Моделирование
в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл
данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$KOL1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("AVE_TIME 1= ",FT$KOL1)),,Met(Catenate
("Util. Facility2= ",FR$KOL2/1000)),,Met(Catenate ("AVE_TIME
2= ",FT$KOL2)),,Met(Catenate ("Max1= ",QM$ZAPR)),,Met(Catenate
("AVE.CONT1= ",QA$ZAPR)),,Met(Catenate ("CONT1= ",Q$ZAPR)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1TERMINATE 1 ;
Завершение операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Программа 2.4
Постановка задачи
В цехе работает инструментальная кладовая по принципу самообслуживания.
Поток рабочих (требований) за инструментами равномерный. Каждый рабочий может
взять один или несколько инструментов, лежащих на разных стеллажах. Время,
необходимое для поиска инструмента на стеллажах, число инструментов, взятых со
стеллажа, и вероятности взятия их приведены в табл. 3.
Взяв инструмент в кладовой, рабочий подходит к учетчику, который делает
соответствующую отметку в журнале. Время учета пропорционально числу
инструментов, взятых рабочим. На оформление одного наименования инструмента
требуется 1 мин.
Необходимо определить:
• Создать графическую модель системы
• число посещений рабочими кладовой в течение смены;
• коэффициент использования (загрузки) учетчика;
• максимальную длину очереди в кладовой;
• среднюю длину очереди в кладовой;
• общее число входов в кладовую;
• число входов в кладовую без ожидания;
• процент входов в кладовую без ожидания;
• среднее время учета взятого инструмента.
• результаты записать в файл
Таблица 8 Исходные данные
Вариант
|
Интервалы времени между
приходами рабочих, мин
|
Категория запроса
|
Время, необходимое для
поиска инструмента на стеллажах, мин
|
Число инструментов, взятых
со стеллажа
|
Вероятности взятия
инструментов
|
3
|
9±2
|
1 2
|
10±5 11±2,5
|
5±2 3±1
|
0,71 0,54
|
7
|
7±1,5
|
1 2
|
12±6 9±4
|
6±3 4±2
|
0,92 0,77
|
11
|
11±3
|
1 2
|
15±2 17±4,5
|
7±3 8±1
|
0,34 0,29
|
Рисунок
46.
Программа
Вариант
3
**************************************************FUNCTION
RN1,D5 ; Опр. числа взятых инструментов с 1 стеллажа
.2,3/0.4,4/0.6,5/0.8,6/1,7FUNCTION
RN1,D3 ; Опр. числа взятых инструментов со 2 стеллажа
.33,2/0.66,3/1,4_OBSL
FVARIABLE (FN$INST1+FN$INST2)#1.2 ; Опр. Времени учета взятых инструментов
**************************************************9,2 ;Прибытие
рабочих за инструментом.29,,STEL2 ;Переход с
заданной вероятностью ко 2 стеллажу10,5 ;Поиск
инструмента на 1 стеллажеTRANSFER .46,,KLAD ;Переход
с заданной вероятностью к кладовщику11,2.5 ;Поиск
инструмента на 2 стеллажеQUEUE UCHET ;Вход в
очередь к кладовщикуCLAD ;Ожидание освобождения
кладовщикаUCHET ;Выход из очереди к
кладовщикуV$T_OBSL ;Время учета взятых
инструментовCLAD ;Освобождение
кладовщика ;Выход рабочего из кладовой
**************************************************480 ;
Моделирование в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в
файл данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility= ",FC$CLAD)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$CLAD
/1000)),,Met(Catenate ("Max= ",QM$UCHET)),,Met(Catenate
("ENTRIES= ", QC$UCHET)),,Met(Catenate ("ENTRIES(0)= ",QZ$UCHET)),,Met(Catenate
("ENTRIES(0)%= ", ((QZ$UCHET#100)/ QC$UCHET))),,Met(Catenate
("AVE_TIME = ",FT$UCHET)),,MetProb,,Met2 ; Закрытие
файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
7
**************************************************FUNCTION
RN1,D7 ; Опр. числа взятых инструментов с 1
стеллажа
.14,3/0.28,4/0.42,5/0.56,6/.7,7/.84,8/1,9FUNCTION
RN1,D5 ; Опр. числа взятых инструментов со 2
стеллажа
.2,2/0.4,3/0.6,4/0.8,5/1,6_OBSL
FVARIABLE (FN$INST1+FN$INST2)#1.2 ; Опр. Времени учета взятых инструментов
**************************************************7,1.5 ;Прибытие
рабочих за инструментом.8,,STEL2 ;Переход с заданной
вероятностью ко 2 стеллажу12,6 ;Поиск
инструмента на 1 стеллажеTRANSFER .23,,KLAD ;Переход
с заданной вероятностью к кладовщику9,4 ;Поиск
инструмента на 2 стеллажеQUEUE UCHET ;Вход в очередь к
кладовщикуCLAD ;Ожидание освобождения
кладовщикаUCHET ;Выход из очереди к
кладовщикуV$T_OBSL ;Время учета взятых инструментовCLAD ;Освобождение
кладовщика ;Выход рабочего из кладовой
**************************************************480 ;
Моделирование в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в
файл данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility= ",FC$CLAD)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$CLAD
/1000)),,Met(Catenate ("Max= ",QM$UCHET)),,Met(Catenate
("ENTRIES= ", QC$UCHET)),,Met(Catenate ("ENTRIES(0)= ",QZ$UCHET)),,Met(Catenate
("ENTRIES(0)%= ", ((QZ$UCHET#100)/ QC$UCHET))),,Met(Catenate
("AVE_TIME = ",FT$UCHET)),,MetProb,,Met2 ; Закрытие
файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
11
**************************************************FUNCTION
RN1,D7 ; Опр. числа взятых инструментов с 1
стеллажа
.14,4/0.28,5/0.42,6
/0.56,7/.7,8/.84,9/1,10FUNCTION RN1,D3 ; Опр.
числа взятых инструментов со 2 стеллажа
.33,7/0.66,8/1,9_OBSL
FVARIABLE (FN$INST1+FN$INST2)#1.2 ; Опр. Времени учета взятых инструментов
**************************************************11,3 ;Прибытие
рабочих за инструментом.29,,STEL2 ;Переход с заданной вероятностью
ко 2 стеллажу15,2 ;Поиск инструмента на 1
стеллажеTRANSFER .46,,KLAD ;Переход с заданной вероятностью
к кладовщику17,4.5 ;Поиск инструмента на 2 стеллажеQUEUE
UCHET ;Вход в очередь к кладовщикуCLAD ;Ожидание
освобождения кладовщикаUCHET ;Выход из
очереди к кладовщикуV$T_OBSL ;Время учета взятых
инструментовCLAD ;Освобождение кладовщика ;Выход
рабочего из кладовой
**************************************************480 ;
Моделирование в течении сменыG TG1,1,Fin ;Если счетчик TG1 > 1, то запись в
файл данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Facility= ",FC$CLAD)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility= ",FR$CLAD
/1000)),,Met(Catenate ("Max= ",QM$UCHET)),,Met(Catenate
("ENTRIES= ", QC$UCHET)),,Met(Catenate ("ENTRIES(0)= ",QZ$UCHET)),,Met(Catenate
("ENTRIES(0)%= ", ((QZ$UCHET#100)/ QC$UCHET))),,Met(Catenate
("AVE_TIME = ",FT$UCHET)),,MetProb,,Met2 ; Закрытие
файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Программа 2.5
Постановка задачи
Необходимо промоделировать систему управления качеством производственного
процесса, включающего две операции обработки изделия с соответствующим
контролем. Известны следующие параметры производственного процесса:
• поток изделий, поступающих на обработку, подчиняется экспоненциальному
распределению вероятностей с параметрами λ и β;
• время выполнения первой операции определяется с помощью дискретной
числовой функции
• время выполнения второй операции определяется с использованием
нормального распределения с параметрами μ , σ.
• устранение брака осуществляется путем возвращения изделия на повторную
обработку.
Нужно промоделировать работу системы управления качеством в течение
рабочей смены - 8 ч. Создать графическую модель системы. Требуется определить
параметры функционирования производственного процесса:
• коэффициент загрузки каждого контролера;
• среднее время обслуживания каждым контролером;
• результаты записать в файл
• создать таблицу для сбора информации в процессе моделирования
Таблица 9 Исходные данные
Вариант
|
Категория запроса
|
Параметры экспоненциального
распределения вероятностей
|
Параметры нормального
распределения вероятностей
|
Время контроля операции,
мин
|
Вероятность брака
|
Вероятность возврата
изделия на повторную обработку
|
4
|
1 2
|
0 25
|
25 3
|
2 3
|
35% 62%
|
8
|
1 2
|
0 21
|
20 2
|
4 7
|
10% 5%;
|
78% 42%
|
12
|
1 2
|
0 30
|
28 5
|
6 4
|
12% 10%;
|
45% 82%
|
Рисунок
47.
Программа
Вариант
4
**************************************************231_obrab
TABLE M1,100,20,7_1 FUNCTION RN1,D7
,0/.04,9/.20,13/.35,17/.60,25/.85,35/1.0,50
**************************************************(Exponential
(1,0,25)) ; Интервал поступления изделий1,FN$Oper_1 ; Присваивание 1
переменной значения функцииSEIZE Oborud_1 ;
Занимаем оборудование 1P1 ; Задерживаем изделие на время
обработкиOborud_1 ; Освобождение оборудования 12 ;
Задерживаем изделие на время контроля.07,,Ustr_brak_1 ;
Переход с вероятностью к Ustr_brak_1
**************************************************SEIZE
Oborud_2 ; Занимаем оборудование 2(Normal
(1,25,3)) ; Задерживаем изделие на время обработкиOborud_2 ;
Освобождение оборудования 23 ; Задерживаем изделие на время
контроля.15,,Ustr_brak_2 ; Переход с
вероятностью к Ustr_brak_2Time_obrab ; Запись
результата в таблицу ;
Завершение операции
**************************************************_brak_1
TRANSFER .35,,Oper1 ; Переход с вероятностью к Oper1 ;
Завершение операции_brak_2 TRANSFER .62,,Oper2 ; Переход с
вероятностью к Oper2 ;
Завершение операции
**************************************************480G
TG1,1,Fin ;Если счетчик TG1 > 1,
то запись в файл данныхOPEN ("File.txt"),,Met1 ;Открытие
файла, в случае ошибки завершить(Catenate ("Util. Facility1= ",FR$Oborud_1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility2= ",FR$Oborud_2/1000)),,Met(Catenate
("AVE_TIME1 = ",FT$Oborud_1)),,Met(Catenate
("AVE_TIME2 = ",FT$Oborud_2)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
8
**************************************************231_obrab
TABLE M1,100,20,7_1 FUNCTION RN1,D7
,0/.04,9/.20,13/.35,17/.60,25/.85,35/1.0,50
**************************************************(Exponential
(1,0,21))1,FN$Oper_1SEIZE Oborud_1P1Oborud_14.1,,Ustr_brak_1
**************************************************SEIZE
Oborud_2(Normal (1,20,2))Oborud_27.05,,Ustr_brak_2Time_obrab
**************************************************_brak_1
TRANSFER .78,,Oper1_brak_2 TRANSFER .42,,Oper2
**************************************************480G
TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл данныхOPEN
("File.txt"),,Met1 ;Открытие файла, в случае
ошибки завершить(Catenate ("Util. Facility1= ",FR$Oborud_1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility2= ",FR$Oborud_2/1000)),,Met(Catenate
("AVE_TIME1 = ",FT$Oborud_1)),,Met(Catenate
("AVE_TIME2 = ",FT$Oborud_2)),,MetProb,,Met2 ; Закрытие
файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************
Вариант
12
**************************************************231_obrab
TABLE M1,100,20,7_1 FUNCTION RN1,D7
,0/.04,9/.20,13/.35,17/.60,25/.85,35/1.0,50
**************************************************(Exponential
(1,0,30))1,FN$Oper_1SEIZE Oborud_1P1Oborud_16.12,,Ustr_brak_1
**************************************************SEIZE
Oborud_2(Normal (1,28,5))Oborud_24.1,,Ustr_brak_2Time_obrab
**************************************************_brak_1
TRANSFER .45,,Oper1_brak_2 TRANSFER .82,,Oper2
**************************************************480G
TG1,1,Fin ;Если счетчик TG1 > 1, то запись в файл данныхOPEN
("File.txt"),,Met1 ;Открытие файла, в случае
ошибки завершить(Catenate ("Util. Facility1= ",FR$Oborud_1/1000)),,Met
;Запись
в файл, в случае ошибки завершить(Catenate ("Util. Facility2= ",FR$Oborud_2/1000)),,Met(Catenate
("AVE_TIME1 = ",FT$Oborud_1)),,Met(Catenate
("AVE_TIME2 = ",FT$Oborud_2)),,MetProb,,Met2 ;
Закрытие файла, в случае ошибки завершить1 ;Завершение
моделированияTERMINATE 1 ; Завершение
операцииTERMINATE 1TERMINATE 11 ;Начало
моделирования
**************************************************