1. Задайте переменную VAR1 произвольно. Задайте переменную VAR2 и определите ее значение.
VAR2 = (2.8 × <значение переменной VAR1> + + 128): 3.
2. Задайте переменную VAR3 и определите ее значение.
VAR3 = (7/4) × 100 × <значение переменной VAR2> + 41.
3. Пусть переменная VAR4 содержит количество изделий первого сорта, а переменная VAR5 – второго. Задайте переменную VAR6, которая давала бы процент изделий первого сорта от общего числа изделий.
4. Задайте булеву переменную BVAR1, которая равна единице, если оба устройства (FACIL1 и FACIL2) находятся в состоянии «занято», и ноль – для всех других случаев (F$имя – СЧА, определяющий занятость устройства, выдает значение 1, если устройство занято, 0 – если свободно).
5. Промоделируйте случайную величину PART, равномерно распределенную на отрезке [1, 8]. Постройте график функции (см. прил. 1).
6. Приведите фрагмент программы, который моделирует процесс выбора товара в магазине. Время выбора товара равномерно распределено на интервале [4, 9] мин. Единица модельного времени – 1 мин. Постройте график функции.
|
|
7. Приведите фрагмент программы, который моделирует процесс прихода покупателей в магазин. Интервалы времени между приходом покупателей распределены равномерно на интервале [11, 16]. Единица модельного времени – 1 мин. Постройте график функции.
8. Время обслуживания некоторым ОКУ распределено равномерно на интервале А ± 6, где среднее время обслуживания А с вероятностью 0,5 принимает значение 8 и с такой же вероятностью – значение 6. Постройте модель процесса обслуживания устройством и график функции.
9. Среднее значение интервалов поступления в пуассоновском потоке требований равно 3 ч. Промоделируйте процесс поступления требований. Единица модельного времени – 1 мин. Постройте график функции.
10. Среднее значение интервалов поступления в пуассоновском потоке заявок равно 10 мин. Промоделируйте процесс поступления заявок. Единица модельного времени – 0,01 мин. Постройте график функции.
11. Время, необходимое для подгона деталей, распределено по нормальному закону с математическим ожиданием 90 и среднеквадратическим отклонением 15. Промоделируйте процесс подгона деталей. Постройте график функции.
СЧА, ПАРАМЕТРЫ ТРАНЗАКТОВ,
БЛОКИ ASSIGN, MARK, LOOP
Стандартные числовые атрибуты (СЧА)
В процессе моделирования интерпретатор GPSS автоматически регистрирует и корректирует информацию, касающуюся различных элементов, используемых в модели; некоторая часть этой информации (атрибуты объектов) доступна разработчику для управления процессом моделирования.
Атрибуты условно делятся на две категории: атрибуты системы (атрибуты блоков и системные атрибуты) и атрибуты транзактов. Атрибуты блоков – это параметры, которые описывают состояние статических объектов модели, например, «текущая длина очереди» или «коэффициент загрузки устройства». Стандартный набор таких атрибутов автоматически поддерживается интерпретатором GPSS. Системные атрибуты модели относятся к глобальной информации, которая не связана с какими-то отдельными элементами (например, информация о системном времени). Атрибуты транзактов (такие как уровень приоритета) задают в операторе GENERATE. Кроме того, транзакт может обладать некоторым числом параметров.
|
|
Атрибуты (свойства) объектов называются стандартными числовыми атрибутами (СЧА). Каждый объект GPSS имеет свой набор СЧА. Доступ к СЧА осуществляется с применением специальных обозначений. Так как объекты могут иметь числовые и символьные имена, то в первом случае, ссылка на СЧА объекта записывается как CЧAj, где j – номер объекта (целое число); во втором – СЧА$<имя объекта>.
В табл. 1.6 показаны СЧА одноканальных устройств (ОКУ), в табл. 1.7 – СЧА многоканальных (МКУ), в табл. 1.8 – СЧА очередей. Полный список всех СЧА приведен в [1, 4].
Т а б л и ц а 1.6. СЧА ОКУ
Обозначение | Значение |
Fj или F$имя | Показатель занятости устройства (0 – если не заняо, 1 – если занято) |
FCj или FС$имя | Количество транзактов, занимавших устройство |
FRj или FR$имя | Коэффициент использования устройства, выраженный в долях тысячи |
FTj или FТ$имя | Среднее время использования устройства одним транзактом |
FVj или FV$имя | Флаг готовности устройства к использованию (1 – готово, 0 – в противном случае) |
Т а б л и ц а 1.7. СЧА МКУ
Обозначение | Значение |
Rj или R$имя | Емкость незаполненной части МКУ. Целочисленное значение |
Sj или S$имя | Емкость заполненной части МКУ. Целочисленное значение |
SAj или SA$имя | Среднее значение заполнения МКУ. Вещественное значение |
Окончание таблицы 1.7 | |
SCj или SС$имя | Счетчик числа входов в МКУ. (При каждом входе транзакта в блок ENTER значение счетчика увеличивается на значение операнда В этого блока) |
SMj или SМ$имя | Максимально занятая емкость МКУ. Запоминает максимальное значение Sj (S$имя) |
SRj или SR$имя | Коэффициент использования МКУ, выраженный в долях тысячи |
STj или ST$имя | Среднее время использования одного элемента МКУ |
SVj или SV$имя | Флаг готовности МКУj к использованию (1 – готово, 0 – не готово) |
Т а б л и ц а 1.8. СЧА очередей
Обозначение | Значение |
Qj или Q$имя | Текущее значение длины очереди (целое число) |
QAj или QA$имя | Среднее значение длины очереди |
QCj или QC$имя | Целая часть общего числа входов в очередь. При каждом входе в блок QUEUE очереди значение QCj (QC$имя) увеличивается на значение операнда В, при каждом входе в блок DEPART очереди значение QCj (QC$имя) уменьшается на значение операнда В |
QMj или QM$имя | Целая часть максимального значения длины очереди (максимальное значение Qj (С)$имя)) |
QTj или QT$имя | Среднее время пребывания в очереди всех транзактов, которые входили вочередь (включая и те, которые не ждали – нулевые входы) |
QXj или QX$имя | Среднее время пребывания в очереди транзактов, которые ждали в очереди (ненулевые входы) |
QZj или QZ$имя | Число входов с нулевым прибыванием в очереди (целое число) |
СЧА блоков и системные СЧА. Блоки имеют два стандартных числовых атрибута (их подсчет ведется автоматически): Wj (W$<меткa блока>) – счетчик текущего числа транзактов, находящихся в блокеc номером j (c меткой блока); Nj (N$<метка блока>) – счетчик входов,т. е. общее число транзактов, вошедших в блок j c момента последнего действия операторов RESET и CLEAR (от начала работы модели, если не было операторов RESET и CLEAR). Назначение операторов RESET и CLEAR описано в [1, 3, 4].
К системным СЧА пользователь может обращаться в модели, но не может изменять их значение. К ним относятся: C1 – текущее значение относительного модельного времени(автоматически изменяется интерпретатором и устанавливается в 0 при выполнении операторов CLEAR и RESET); AC1 – текущее значение абсолютного модельного времени (автоматически изменяется интерпретатором и устанавливается в 0 только при выполнении оператора CLEAR); TG1 – текущее значение счетчика завершения; PR – приоритет обрабатываемого в данный момент транзакта; Ml – время пребывания в моделиобрабатываемого интерпретатором в данный момент транзакта. Полный список системных СЧА приведен в [1, 3, 4].
|
|
Примеры. Использование СЧА в блоках ENTER и ADVANCE.
1. ENTER 3,R3 – при входе транзакта в блок ENTER, он занимает R3 каналов устройства c именем 3. Так как R3 – число доступных каналов МКУ 3, то транзакт занимает все каналы, которые оставались свободными до его входа.
2. ENTER HS,R$HS – войдя в блок ENTER, транзакт занимает все доступные каналы (R$HS) МКУ c именем HS.
3. ADVANCE FС$PRIB – время задержки в этом блоке равно числу занятий устройства PRIB.
Параметры транзактов
Параметры транзакта – это свойства транзакта, определяемые пользователем. Множество параметров транзакта – набор СЧА, которые принадлежат транзакту. В процессе перемещения транзакта по модели, его параметры могут задаваться и модифицироваться в соответствии c логикой работы модели. [4]
Доступ к параметрам транзактов осуществляется в следующем формате: P<номер> или Р$<имя>, где P – СЧА транзакта, определяющий его групповое имя, т. е. имя всех параметров транзакта. Номера (имена) конкретных членов множества параметров задают целыми числами или символьными именами. Например, P22 – это 22-й параметр транзакта, P$COLOR – параметр c именем COLOR.
Каждый транзакт может иметь любое количество параметров. Значения СЧА для транзактов и логика их изменения задаются разработчиком модели. При этом интерпретация смысла параметров имеет произвольный характер. При генерации транзакта начальное значениевсех его параметров автоматически устанавливается в ноль (только тех, которые используются в модели). Значениями параметров транзактов могут быть любые числа. Параметры могут приобретать отрицательные значения. Транзакт может обращаться только к своим параметрам. Если необходимо получить доступ к параметрам других транзактов, то это можно сделать через ячейки сохраняемых величин (см. п. 1.11) или используя группы транзактов. Параметры можно использовать в качестве операндов блоков и в качестве аргументов функций. Параметры позволяют организовать косвенную адресацию блоков.
|
|
Пример. Определить время задержки транзакта как значение функции ААА.
AAA FUNCNION P3,D3
-3,4/3,7/10,8
…
ADVANCE FN$AAA,3
…
Выполнение блока ADVANCE предусматривает расчет функции AAA. Это, в свою очередь, требует определения значения аргумента функции, т. е. параметра P3 обрабатываемого в данный момент транзакта. Пусть значение третьего параметра транзакта, вошедшего в блок ADVANCE, равно 4. Соответствующее значение функции AAA равно 8. Таким образом, время задержки будет равномерно распределено на интервале 8±3.
Пример. [4] Задать номер устройства и время задержки с помощью параметров транзакта PRIB и TSERV:
SEIZE P$PRIB
ADVANCE P$TSERV
RELEAZE P$PRIB
Транзакт занимает устройство, номер которого задан параметром транзакта PRIB. Время обслуживания задается параметром с именем TSERV