Задание на лабораторные работы, страница 8
Описание файла
Документ из архива "Задание на лабораторные работы", который расположен в категории "". Всё это находится в предмете "моделирование систем" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "моделирование систем" в общих файлах.
Онлайн просмотр документа "Задание на лабораторные работы"
Текст 8 страницы из документа "Задание на лабораторные работы"
Изучение блока MATCH.
Пример 9. Информация поступает на узел связи с интервалом времени 30050 единиц. Обработку производят двое операторов. После завершения операции обработки, выполняемой первым оператором со временем 90 единиц и вторым со временем 60 единиц, производится операция сверки, время выполнения которой принимается равной нулю. Затем третий оператор производит формирование пакета информации со временем 40 единиц. Формирование начинается только после поступления всех отдельных частей информации (условных частей информации). Смоделировать процесс прохождения 100 пакетов информации. Программа решения примера 9 представлена как программа 10.
Программа 10 |
simulate 10 generate 300,50 20 split 1,chan2 30 chan1 seize 1 40 advance 90 50 sss1 match sss2 60 release 1 70 transfer ,comm 80 chan2 seize 2 90 advance 60 100 sss2 match sss1 110 release 2 120 comm assemble 2 130 seize 3 140 advance 40 150 release 3 200 terminate 1 start 100 ;end |
Из условия примера видно, что специальных мер по реализации прохождения точно 100 пакетов не требуется, так как время поступления условных частей информации на обработку заметно больше суммарного времени обработки: 30050 против 90+60+40=190. В блоке GENERATE не используется поле <D> с установкой числа 100. Синхронизация прохождения транзактов по модели осуществляется с помощью двух блоков MATCH. Один блок MATCH установлен как бы в первом устройстве, а другой — во втором. Транзакты не отправляются в блок ASSEMBLE (на формирование пакета) до тех пор, пока оба устройства (оба оператора) не закончат требуемую обработку.
Формат записи блоков MATCH:
50 sss1 match <A>
100 sss2 match <A>
В поле <A> блока MATCH (под номером 50 и меткой sss1) в программе задается имя сопряженного блока MATCH (метка sss2 под номером 100). Синхронизация движения транзактов осуществляется путем подбора пар транзактов из одного ансамбля и задержки этих транзактов до тех пор, пока оба транзакта из одной пары не поступят в заданные точки модели (в программе это выходы устройств — блоки RELEASE под номерами 60 и 110, откуда они поступают далее на формирование пакета в блок ASSEMBLE).
Без условий синхронизации пример 9 можно видоизменить к следующему виду.
Пример 10. Информация поступает на узел связи с интервалом времени 30050 единиц. Обработку производят двое операторов. После завершения операции обработки, выполняемой первым оператором со временем 90 единиц и вторым со временем 60 единиц, информация отправляется к третьему оператору. Третий оператор производит формирование пакета из поступивших частей информации со временем 40 единиц. Смоделировать процесс прохождения 100 пакетов.
Программа решения примера 10 представлена как программа 11.
Программа 11 |
simulate 10 generate 300,50 20 split 1,chan2 30 chan1 seize 1 40 advance 90 50 release 1 60 transfer ,comm 70 chan2 seize 2 80 advance 60 90 release 2 100 comm assemble 2 110 seize 3 120 advance 40 130 release 3 200 terminate 1 start 100 ;end |
Программа 11 по сравнению с программой 10 имеет на два блока меньше, но это приводит к иным результатам. Анализ результатов произвести по файлам стандартного отчета.
Работа логического ключа
Пример 11. На обработку поступают 101 требование с интервалом времени 71 единицы. Нечетные по номеру требования обрабатываются на первом приборе со временем 15 единиц, четные — на втором приборе со временем 17 единиц. Смоделировать процесс прохождения и обработки требований в системе.
Формирование потока четных и нечетных по номеру требований осуществляется блоками LOGIC и GATE (в режиме LS).
Решение примера 11 приводится в программе 12.
Программа 12 |
simulate 10 generate 10,1,,101 20 logic I key1; Задание операции инвертирования ключа key1 30 gate LS key1,chan2 40 chan1 seize 1 50 advance 15 60 release 1 70 transfer ,exit 80 chan2 seize 2 90 advance 17 100 release 2 200 exit terminate 1 start 101 end |
Формат записи блока LOGIC:
-
logic <X> <A>
Во вспомогательном поле операций <X> задается мнемоническое обозначение I — логический ключ под именем key1 инвертируется. В поле <A> задается номер или имя (в программе имя key1) логического ключа. Ссылка на имя ключа может происходить в любом месте программы. В поле <X> могут быть также заданы следующие мнемонические обозначения:
S — логический ключ устанавливается в состояние "включен";
R — логический ключ устанавливается в состояние "выключен".
Формат записи блока GATE для проверки логических ключей:
-
gate <X> <A>,<B>
Во вспомогательном поле <X> задается один из следующих логических операторов:
LS — логический ключ, заданный в поле <A>, включен;
LR — логический ключ, заданный в поле <A>, выключен.
В поле <A> задается номер или имя логического ключа, состояние котрого проверяется (в программе key1). В поле <B> задается номер блока, к которому переходит транзакт, если логический оператор вспомогательного поля <X> имеет значение "ложь" (в программе устройство с меткой chan2). Если значение логического оператора — "истина", транзакт переходит к следующему по номеру блоку (в устройство с меткой chan1 под номером 40).
Задания к примерам 9, 11.
-
Для примера 9 изменить средние времена обработки: 60 и 90, 60 и 60, 120 и 60, 60 и 120, соответственно для первого и второго устройств.
-
Для примера 11 применить режим LS блока GATE для изменения порядка прохождения через устройства четных и нечетных транзактов. В исходной программе применить режимы "S" и "R" для блока LOGIC. Написать программу, в которой четные транзакты обрабатываются в устройстве пятикратным циклом, а нечетные транзакты обрабатываются семикратным циклом. В программе изменить имя логического ключа, задать какой-либо числовой номер логического ключа.
-
Изучить и объяснить файлы стандартных отчетов рассмотренных программ.
Лабораторная работа №6
Программирование для статистической
и запоминающей категорий языка GPSS/PC.
Блоки MSAVEVALUE, TABULATE.
Операторы MATRIX, INITIAL, TABLE, QTABLE. Команда PLOT
Цель работы: ознакомление и изучение операторов и блоков системы GPSS/PC для формирования и сохранения матричных значений переменных, построение частотных таблиц заданных числовых атрибутов.
Статистическими объектами языка GPSS/PC являются очереди и таблицы. Регистрация частот попадания табулированной величины или заданного стандартного числового атрибута (СЧА) осуществляется блоком TABULATE. Табулируемая величина заносится в таблицу, имя и характеристики которой определяется оператором TABLE в общем случае и QTABLE для очереди. На основе сформированных таблиц возможно построение гистограмм (диаграмм) с помощью команды PLOT.
Для сохранения и запоминания в модели числовой информации, различных стандартных числовых атрибутов в GPSS/PC отводятся специальные ячейки основной памяти. Совокупности ячеек могут быть организованы в матрицы. Для записи числовой информации в ячейки служит блок SAVEVALUE, в матрицы — блок MSAVEVALUE, который работает совместно с оператором описания матриц MATRIX. Присвоение начальных значений ячейкам и матрицам производится с помощью оператора INITIAL.
Пример 1. На языке GPSS/PC создать две матрицы размером 23: одна должна быть заполнена натуральными нечетными числами, начиная с единицы, а другая со следующими элементами:
где с1 — СЧА — условное модельное время. Сохранить также выражение: целая часть от . Решение примера 1 приводится как программа 1.
Программа 1 |
simulate var1 variable c1+100 var2 variable c1+sqr(100) var3 variable int(sqr(101)) var4 variable sqr(625) mat1 matrix ,2,3 mat2 matrix ,2,3 initial mx$mat2(2,3),10 initial mx$mat2(2,2),50 10 generate 7,2 ********************************* 50 msavevalue mat1,1,1,1 60 msavevalue mat1,1,2,3 70 msavevalue mat1,1,3,5 80 msavevalue mat1,2,1,7 90 msavevalue mat1,2,2,9 100 msavevalue mat1,2,3,11 ********************************** 110 msavevalue mat2,1,1,c1 120 msavevalue mat2,1,2,100 130 msavevalue mat2,1,3,v$var1 140 msavevalue mat2,2,1,v$var2 150 msavevalue mat2-,2,2,2 160 msavevalue mat2+,2,3,5 *********************************** 170 savevalue mmm3,v$var3 200 terminate 1 start 10 ;end |
Формат записи операторов MATRIX:
mat1 matrix <A>,<B>,<C>
mat2 matrix <A>,<B>,<C>
Служебное слово MATRIX является операторм описания матрицы. Каждая матрица должна иметь свой оператор описания. Поле метки определяет имя матрицы (в программе это mat1 и mat2). Поле <A> в данной версии GPSS не используется (оставлено пустым для совместимости с более старыми версиями языка GPSS). В поле <B> задается число строк матрицы (для mat1 и mat2 число строк равно 2). В поле <C> задается число столбцов матрицы (для mat1 и mat2 число столбцов равно 3). Каждая матрица может содержать не более 8191 элементов.
Формат записи оператора задания начальных ячеек матрицы INITIAL:
initial mx$mat2(2,2),50
initial mx$mat2(2,3),10
Оператор INITIAL имеет поля <A> и <B>. В поле <A> задан стандартный числовой атрибут mx, связанный с именем матрицы посредством знака $, и с указанием номера строки и номера столбца определяемой матрицы. В поле <B> задается определяемая величина. Операнд поля <B> может быть целым действительным числом. Оператор задания матриц INITIAL должен располагаться в программе после определения матрицы оператором MATRIX.
Формат записи блока MSAVEVALUE рассмотрим на примере формирования матрицы под именем mat2. Во всех блоках используются поля <A>,<B>,<C>,<D>, поэтому приведем все блоки в заданных форматах программы 1.
110 msavevalue mat2,1,1,c1
120 msavevalue mat2,1,2,100
130 msavevalue mat2,1,3,v$var1
140 msavevalue mat2,2,1,v$var2
150 msavevalue mat2-,2,2,2