Задание на лабораторные работы, страница 4
Описание файла
Документ из архива "Задание на лабораторные работы", который расположен в категории "". Всё это находится в предмете "моделирование систем" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "моделирование систем" в общих файлах.
Онлайн просмотр документа "Задание на лабораторные работы"
Текст 4 страницы из документа "Задание на лабораторные работы"
Пример 3. Пусть в условиях примера 2 детали, прерванные на время обработки 2-го потока, выводятся из системы. В этом случае большая часть условий задачи остается неизменной: на обработку по равномерному закону поступает два потока заготовок деталей: первый — со временем 52 мин., второй — 252 мин. Второй поток прерывает изготовление деталей первого. Время обработки деталей 1-го потока 72 мин., 2-го — 112 мин. Смоделировать процесс обработки 100 деталей, разделенных на два потока.
Данный пример решается с дополнительными полями блока PREEMPT, которые позволяют использовать блок PREEMPT в режиме удаления транзактов на повторный захват устройства и отправки их по метке к заданному блоку. Программа решения примера 3 приводится как программа 3.
SIMULATE 10 GENERATE 5,2; Формирование 1-го потока деталей 20 SEIZE FACIL1; Устройство под именем FACIL1 30 ADVANCE 7,2 40 RELEASE FACIL1 50 TERMINATE 1; Вывод деталей 1-го потока ***************************************************************** 60 GENERATE 25,2; Формирование 2-го потока деталей 70 PREEMPT FACIL1,,exit,,re; Прерывание обработки 1-го потока 80 ADVANCE 11,2; Время обработки 2-го потока=времени прерывания 90 RETURN FACIL1; Снятие прерывания 1-го потока 100 exit TERMINATE 1; Вывод деталей 1-го и 2-го потоков START 100; Задание числа счетчика завершений, равноеобщему *количеству деталей END |
Программа 3 |
Формат записи блока PREEMPT для программы 3:
-
PREEMPT <A>,[<B>],<C>,[<D>],<E>
В поле <A> задается метка прерываемого устройства — FACIL1, поле <B> — пусто, в поле <C> указывается имя блока (EXIT), куда направляются транзакты прерванного потока, поле <D> — пусто, в поле <E> устанавливается режим удаления — RE.
Операнд поля <C> задает номер или имя (метку) блока, куда должен попытаться войти прерванный транзакт (транзакт прерываемого 1-го потока). Режим удаления RE поля <E> означает, что прерванный транзакт не будет претендовать на пользование устройства, на котором произошло прерывание. Прерванный транзакт пытается войти в блок, заданный полем <C>. Поскольку в поле <C> задано имя блока уничтожения транзактов TERMINATE, то попытка войти в это блок всегда будет успешной. Происходит моделирование процесса вывода из системы необработанных деталей первого потока. Через блок с меткой EXIT выводятся также и обработанные детали второго потока.
В общем случае поле <B> блока PREEMPT может задать приоритетный режим. При работе в этом режиме транзакт, занимающий устройство или генерирующий на нем прерывание, может быть прерван только транзактом, приоритет которого выше приоритета данного транзакта. Поле <D> задает номер параметра, связанного с прерванным транзактом. Поле <D> задавать следует только в том случае, если приоритет прерывающего транзакта больше приоритета прерываемого транзакта.
Задание к примеру 3. Видоизменить программу 3 так, чтобы в ней прерванные транзакты отправлялись бы в дополнительное устройство с временем обработки 51 мин. При этом вывод из системы транзактов из дополнительного устройства не должны быть связаны со счетчиком завершений. Также попарно изменить среднее время генерирования транзактов в соответствии с рядом чисел: 6 и 15; 9 и 11; 13 и 9; 21 и 7. Объяснить результаты моделирования по файлу стандартного отчета.
Задание 3.
Статистическая информация об очереди формируется блоками QUEUE и DEPART. В GPSS/PC блоки QUEUE и DEPART описывают объекты типа "очередь". Статистика об очередях собирается в моменты входа сообщения (транзакта) в блок QUEUE (вход в очередь) или в блок DEPART (выход из очереди). Блоки QUEUE и DEPART являются информационно-статистическими и не влияют на внутренние операции процесса моделирования GPSS/PC.
Для сохранения и запоминания в модели числовой информации, различных стандартных числовых атрибутов в GPSS/PC отводятся специальные ячейки основной памяти. Для записи числовой информации в ячейки служит блок SAVEVALUE
Пример 4. В систему по равномерному закону с интервалом 52 мин. поступают заявки на обслуживание. С вероятностью 0.6 заявки обслуживаются на первом приборе по равномерному закону с интервалом 122 мин. и с вероятностью 0.4 обслуживание происходит на втором приборе также по равномерному закону с интервалом 132 мин. Смоделировать процесс функционирования системы и получить статистические данные об очереди заявок при обслуженном числе их, равным 100.
Здесь входящий поток заявок не ограничен и по времени является более интенсивным, чем обслуживание в каждом из приборов. Естественно следует ожидать возникновение очередей перед каждым из устройств. Задача состоит в том, чтобы произвести обслуживание 100 заявок (двумя приборами) и собрать сведения о задержках начала обслуживания, т.е. статистику об очередях. Для решения этой задачи составлена программа, в которой применены две пары совместных блоков QUEUE и DEPART. В блоке GENERATE поле <D> — поле задания генерируемых транзактов (заявок) не используется, поэтому ограничение поступающих в систему транзактов определяется только операторм START и временем генерации транзактов блоком GENERATE.
Решение примера 4 приводится как программа 4.
simulate 10 generate 5,2 20 transfer 0.4,chan1,chan2 30 chan1 queue 1 40 seize 1 50 depart 1 60 advance 12,2 70 release 1 80 transfer ,exit 90 chan2 queue LEN2 100 seize 2 110 depart LEN2 120 advance 13,2 130 release 2 140 savevalue num,c1 150 savevalue num1,q1 160 savevalue num2,q$len2 170 savevalue num3,qt1 180 savevalue num4,qt$len2 200 exit terminate 1 start 100 end |
Программа 4 |
Формат записи блоков QUEUE:
30 <метка> queue <A>,[<B>]
90 <метка> queue <A>,[<B>]
В поле <метка> задается имя блока, в поле <A> — имя или номер очереди. В поле <B> задается число единиц, на которое увеличивается текущая длина очереди. Если поле <B> пусто (как в программе), то прибавляется единица. В поле <метка> блока QUEUE под номером 30 задана метка chan1, для блока 90 задана метка chan2. Блок QUEUE под номером 30 регистрирует статистику для очереди под номером 1, которая возникает перед первым устройством (оно начинается с блока SEIZE под номером 40). Блок QUEUE под номером 90 регистрирует статистику для очереди под именем LEN2, которая возникает перед вторым устройством (оно начинается с блока SEIZE под номером 100).
Выход транзакта из очереди регистрируется блоком DEPART.
Формат записи блоков DEPART:
-
depart <A>,[<B>]
-
depart <A>,[<B>]
В поле <A> блока DEPART задается номер или имя очереди, длину которой нужно уменьшить. В поле <B> задается число единиц, на которое уменьшается длина очереди. Это число не должно превышать текущую длину очереди (чтобы не получилось отрицательное число). Если поле <B> пусто (как в программе), длина очереди уменьшается на единицу. В программе для блока под номером 50 в поле <A> задана очередь с номером 1, для блока под номером 110 в поле <A> задана очередь под именем LEN2. В подпрограмме блока DEPART автоматически проверяется значение времени пребывания транзакта в очереди. Если транзакт не был задержан в очереди, т.е. имеет нулевое время задержки, число нулевых входов увеличивается на число единиц, указанное в поле <B> блока DEPART. В программе PRIM26.GPS поле <B> пусто. В программе используются пять блоков SAVEVALUE, которые сохраняют СЧА по времени моделирования и очередей.
Формат записи блоков SAVEVALUE:
140 savevalue <A>,<B>
150 savevalue <A>,<B>
160 savevalue <A>,<B>
170 savevalue <A>,<B>
180 savevalue <A>,<B>
В поле <A> каждого блока SAVEVALUE задается имя ячейки, в которую записывается значение поля <B>. Для примера с помощью блоков SAVEVALUE были сохранены следующие стандартные числовые атрибуты. Для блока SAVEVALUE под номером 140 имя сохраняемой ячейки num, сохраняемая величина С1 — условное время моделирования. Для блока SAVEVALUE под номером 150 имя сохраняемой ячейки num1, сохраняемая величина q1 — длина очереди под номером 1. Для блока SAVEVALUE под номером 160 имя сохраняемой ячейки num2, сохраняемая величина q$len2 — длина очереди с именем len2. Для блока SAVEVALUE под номером 170 имя сохраняемой ячейки num3, сохраняемая величина qt1 — среднее время (с точностью до целых) пребывания сообщения в очереди под номером 1(включая нулевые входы). Для блока SAVEVALUE под номером 180 имя сохраняемой ячейки num4, сохраняемая величина qt$len2 — среднее время (с точностью до целых) пребывания сообщения в очереди с именем len2 (включая нулевые входы). Очереди имеют также и другие СЧА: QAj — средняя длина очереди j (автоматически определяется и сохраняется программой, приводится в файле стандартного отчета); QMj — максимальная длина очереди j (автоматически определяется и сохраняется программой, приводится в файле стандартного отчета); QCj — общее число входов в очередь j (автоматически определяется и сохраняется программой, приводится в файле стандартного отчета); QZj — число нулевых входов в очередь j (автоматически определяется и сохраняется программой, приводится в файле стандартного отчета); QXj — среднее время пребывания транзакта в очереди j без нулевых входов (автоматически определяется и сохраняется программой, приводится в файле стандартного отчета).
Результаты моделирования примера 4 приводятся в таблице как файл стандартного отчета программы 4.
Файл стандартного отчета программы 4 |
GPSS/PC Report file REPORT.GPS. (V 2, # 37349) 08-24-1999 12:01:25 page 1 START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY 0 633 19 2 0 80800 LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY 10 1 GENERATE 130 0 0 20 2 TRANSFER 130 0 0 30 CHAN1 QUEUE 73 20 0 40 4 SEIZE 53 0 0 50 5 DEPART 53 0 0 60 6 ADVANCE 53 1 0 70 7 RELEASE 52 0 0 80 8 TRANSFER 52 0 0 90 CHAN2 QUEUE 57 8 0 100 10 SEIZE 49 1 0 110 11 DEPART 48 0 0 120 12 ADVANCE 48 0 0 130 13 RELEASE 48 0 0 140 14 SAVEVALUE 48 0 0 150 15 SAVEVALUE 48 0 0 160 16 SAVEVALUE 48 0 0 170 17 SAVEVALUE 48 0 0 180 18 SAVEVALUE 48 0 0 200 EXIT TERMINATE 100 0 0 FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY 1 53 0.992 11.85 1 96 0 0 0 20 2 49 0.973 12.57 1 111 0 0 0 8 QUEUE MAX CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 1 21 20 73 1 10.36 89.85 91.10 0 LEN2 9 9 57 3 4.47 49.65 52.41 0 XACT_GROUP GROUP_SIZE RETRY POSITION 0 0 SAVEVALUE VALUE RETRY NUM +633 0 NUM1 +20 0 NUM2 +9 0 NUM3 +89 0 NUM4 +49 0 |
По условию входной поток неограничен и поэтому количество сгенерированных транзактов превышает количество обработанных и выведенных из системы транзактов, которых 100. Перед каждым устройством системы осуществляется сбор статистических данных об очередях с помощью блоков QUEUE, DEPART. Устройства моделируются блоками SEIZE, ADVANCE, RELEASE, соответственно для первого устройства это блоки с номерами 40, 60, 70; для второго устройства — блоки с номерами 100, 120, 130.
В файле стандартного отчета программы 4 строка QUEUE имеет следующие поля: 1 — номер первой очереди, LEN2 — имя второй очереди (очередь может иметь либо произвольный номер, либо произвольное имя), поле MAX определяет максимальное содержимое очереди в течение периода моделирования (для первой очереди 21, для второй с именем LEN2 — 9), поле CONT. определяет текущее содержимое очереди в конце периода моделирования (для первой очереди 20, для второй с именем LEN2 — 9), поле ENTRIES определяет общее количество входов в очередь в течение периода моделирования (для первой очереди 73, для второй с именем LEN2 — 57), поле ENTRIES(0) определяет общее количество входов в очередь с нулевым временем ожидания (для первой очереди 1, для второй с именем LEN2 — 3), поле AVE.CONT определяет среднее значение содержимого (количество транзактов) очереди (для первой очереди 10.36, для второй с именем LEN2 — 4.47), поле AVE.TIME определяет среднее время, проведенное в очереди с учетом всех входов в очередь (для первой очереди 89.85, для второй с именем LEN2 — 49.65), AVE.(-0) определяет среднее время, проведенное в очереди без учета "нулевых" входов в очередь (для первой очереди 91.10, для второй с именем LEN2 — 52.41), поле RETRY определяет количество транзактов, ожидающих специальных условий, зависящих от состояния очереди (специальных условий в примере нет).
Статистика по транзактам может быть сопоставлена по полям MAX, CONT., ENTRIES и ENTRY_COUNT, CURRENT_COUNT.