Создание и уничтожение транзактов
Необходимо помнить, что смысл единицы времени в языке GPSS (секунда, минута, час, день и т. д.) закладывает пользователь, поэтому при написании программы необходимо все операнды, связанные со временем, привести к единому масштабу. При использовании модификатора-функции интервал времени между транзактами определяется произведением содержимого полей A и B. Функция определяется специальными блоками… Читать ещё >
Создание и уничтожение транзактов (реферат, курсовая, диплом, контрольная)
Генерирование транзактов — GENERATE. Этот блок генерирует поток сообщений — транзактов, поступающих в систему. Программа составляется с учетом того, что в этот блок не могут входить транзакты. В простых программах это обычно первый блок, временные интервалы между поступающими в систему транзактами определяются содержимым поля операндов. Подполя:
A — среднее время между поступлениями транзактов в систему (по умолчанию равно 1);
B — модификатор времени;
C — начальная задержка (время появления первого транзакта); D— общее число транзактов, которое должно быть сгенерировано этим блоком (по умолчанию — неограниченное число транзак-тов);
E — приоритет транзакта, может принимать значения от 0 до 127. Приоритет возрастает в соответствии с номером (по умолчанию равен 0).
В поле B может быть модификатор двух типов: модификатор-интервал и модификатор-функция. Если задан модификатор-интервал (просто число), то для каждого временного интервала поступления транзактов длительность определяется как значение случайной вели-чины, равномерно распределенной на интервале [A? B, A? B].
Значение параметров A и B могут задаваться как константами, так и любым СЧА, за исключением СЧА параметра транзакта (эта ве-личина в момент генерации транзакта еще не определена).
Например, блок GENERATE 10,5 будет генерировать транзакты через интервалы времени, длительность каждого из которых выбирается случайно в пределах от 5 до 15. Каждое из этих значений будет выбираться с одинаковой вероятностью. Таким образом, блок генерирует случайный поток транзактов, в котором время между транзактами равномерно распределено в диапазоне A? Bи имеет среднее значение A.
При использовании модификатора-функции интервал времени между транзактами определяется произведением содержимого полей A и B. Функция определяется специальными блоками языка, которые будут рассмотрены чуть позже.
В программе может быть несколько блоков GENERATE. Все эти блоки работают параллельно и начинают генерировать транзакты одновременно с момента начала моделирования.
Необходимо помнить, что смысл единицы времени в языке GPSS (секунда, минута, час, день и т. д.) закладывает пользователь, поэтому при написании программы необходимо все операнды, связанные со временем, привести к единому масштабу.
Примечания:
- — время не может быть отрицательной величиной;
- — в обязательном порядке должно быть задано либо поле А, либо поле D.
Блок уничтожения транзактов — TERMINATE. Обычно для простых программ это последний блок программы. Транзакты, попадающие в этот блок, уничтожаются и больше не участвуют в процессе моделирования. Никаких других действий этот блок не выполняет, если единственный возможный операнд A в блоке не задан. Если же операнд A задан, то его значение вычитается из содержимого блока транзактов. Операнд A может принимать только положительное целочисленное значение.
Первоначальная величина счетчика устанавливается специальным управляющим блоком START и пишется в поле A этого блока. Когда в результате входа очередного транзакта в блок TERMINATE значение счетчика становится нулевым или отрицательным, симулятор прекращает моделирование и передает управление программе вывода, которая распечатывает накопленные симулятором данные о модели.
Например: TERMINATE 1 START 100 через программу модели пропускается 100 транзактов.
В программе должен быть хотя бы один блок TERMINATE с заданным операндом A.
Если в программе несколько блоков TERMINATE, то обычно операнд A задается только в одном блоке; чаще всего — в блоке, относящемся к имитатору интервала времени моделирования (таймеру).
GENERATE 480 TERMINATE 1 START 1.
Таймер взаимодействует только с блоком START и никак не связан с содержательной стороной остальных фрагментов модели. Таймер служит для задания времени моделирования.