Оператор вида 'ACTIVATE' X 'AT' T активизирует процесс в системное время, равное Т.
Если указано планирование с приоритетом 'PRIOR', то событие будет исполнено перед другими событиями, ранее запланированными на данный момент системного времени. При планировании без приоритета одновременные события исполняются в порядке, в котором они планировались.
При планировании событий можно задать не системное время, а событие через которое ли после которого необходимо запланировать событие. В обоих случаях время события Х полагается равным времени события для процесса Х. Если процесс Y не является активным или приостановленным процессом, то никаких действий оператор не производит, если необходимо сразу запустить процесс, то нужно выполнить оператор
‘ACTIVATE’ X ‘AT’ TIME ‘PRIOR’, где Х – активный процесс или оператор
‘REACTIVE’ X ‘BEFORE’ CURRENT, где Х – любой процесс, кроме завершенного.
Для того чтобы задержать исполнение некоторого процесса на некоторый интервал системного времени, используется оператор HOLD(T), где Т – некоторое арифметическое выражение. При этом текущая активная фаза данного процесса заканчивается, а его локальное управление останавливается перед оператором, следующим за HOLD.
Оператор HOLD(T) эквивалентен оператору
‘REACTIVE’ CURRENT ‘DELAY’ T.
В процессе работы имитационных моделей часто бывает необходимо отметить некоторое из ранее запланированных событий, если в ходе моделирования сложились условия, делающие невозможным их осуществление в намеченный момент системного времени.
Для отмены запланированных активных фаз процессов предусмотрен оператор CANCEL(X), где X – процесс, чья активная фаза должна быть отменена, т.е. процесс Х становится пассивным.
Для перевода текущего процесса в пассивное состояние используется оператор PASSIVATE, который переводит текущий активный процесс в пассивное состояние и его локальное управление устанавливается на следующий оператор.
Если перед тем, как остановить работу некоторого процесса, его необходимо поставить в очередь, то надо выполнить оператор WAIT (S), где S обозначает очередь, в результате текущий процесс встанет в очередь S и перейдет в пассивное состояние.
При разработке систем моделирования очень часто возникает необходимость создания процессов в случайные моменты времени, для задания различного рода случайных факторов при имитационном моделировании определен набор встроенных процедур, позволяющих задавать получение псевдослучайных чисел, распределенных по любому нужному закону.
Все процедуры случайной выборки в языке СИМУЛА используют один и тот же прием получения «главной выборки» из равномерного распределения на интервале (0,1). Процедура главной выборки заменяет значение указанной целой переменной новым значением в соответствии с некоторым алгоритмом, определяемым в реализации языка ( см. приложение 1).
Каждая из перечисленных далее процедур осуществляет случайный выбор того или иного рода. Если явно не указано, выбор выполняется посредством одной процедуры главной выборки, т. е. процедуры с побочным эффектом продвижения на один шаг по указанной последовательности псевдослучайных чисел.
Для формальных параметров процедур случайного выбора в случае необходимости выполняется преобразование типа фактических параметров, кроме последнего фактического параметра, которым всегда должна быть переменная типа integer, указывающая последовательность псевдослучайных чисел.
Рассмотрим эти процедуры:
1. Процедура psrand(u).
real procedure psrand (u); name u; integer u;
Данная процедура предназначена для получения последовательностей псевдослучайных чисел, равномерно распределенных на интервале [0,1]. При многократной обращении к данной процедуре будет выдаваться последовательность а1, а2, …, аn, …, которая однозначно определяется начальным значением переменной u. Данная процедура называется процедурой главной выборки, с ее помощью получают все остальные распределения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.