ASSIGN 3-,5.85,7
ASSIGN 3,25
ASSIGN MEST,36
Параметры транзакта.
Параметры – это свойства транзакта. В процессе перемещения транзакта по модели его параметры могут задаваться и модифицироваться в соответствии c логикой работы модели.
Любой транзакт может иметь неограниченное число параметров, содержащих те или иные числовые значения.
Ссылка на параметр всегда относится к активному транзакту и имеет вид
Pj или Р$ имя
P – СЧА транзакта, групповое имя,
П р и м е р ы
P22, P$COLOR
При генерации транзакта начальное значениевсех его параметров (тех, которые используются в модели) устанавливается равным нулю.
Параметры можно использовать в качестве операндов блоков и в качестве аргументов функций..
Пример.:
SEIZE P$PRIB
ADVANCE P$TSERV
RELEAZE P$PRIB
Для доступа к параметрам других транзактов можно использовать сохраняемые величины
Пример.:
SAVEVALUE 5,P$WEIGHT
Задание и изменение значений
параметров транзактов
Оператор ASSIGN присваивает значение параметру активного транзакта
|
|
ASSIGN А[+,-],В[,С]
где А – номер или имя модифицируемого или задаваемого параметра;
В – величина, используемая для модификации (число или СЧА);
С – имя функции.
Блок ASSIGN может быть использован в режиме замещения значения параметра или в режиме увеличения и уменьшения аналогично оператору. SAVEVALUE
При использовании операнда C значение операнда В умножается на значение функции, указанной в операнде C. Параметр, заданный в операнде А, изменяется на величину полученного произведения (в режиме увеличения и уменьшения) или приобретает значение результата (в режиме замещения).
Примеры.
3. ASSIGN 4+,Q5
5. ASSIGN COUNT+,1
Косвенная адресация.
Обращение к любому объекту или СЧА через параметры транзактов Pj, (j – номер параметра транзакта) или Р$имя (имя – идентификатор параметра транзакта)
При этом символ P может опускаться.
Примеры
Q*7 или Q*P7
COMP VARIABLE X*P4/100
Оператор LOOP
LOOP A,B.
A - номер параметра, определяющего число циклов;
B – метка оператора, на который переходит транзакт, если параметр A не равен нулю.
Значение параметра поля A уменьшается на единицу. Если оно не равно нулю, транзакт переходит на метку в поле B. В противном случае транзакт переходит в следующий блок.
Примеры
LOOP 1,LAB.
Пример
В зале работает 5 билетных касс. Клиенты, приходящие через равномерно распределенные промежутки времени выбирают свободную кассу; если свободных нет, то кассу с миимальной длиной очереди. Время обслуживания клиента раавномерно распределеннаая случайная величина с одинаковыми параметрами для всех касс.
Промоделировать процесс обслуживания 200 клиентов при разной интенсивности входного потока.
|
|
GENERATE 120,60
ASSIGN 1,5
ASSIGN 2,100
ASSIGN 3,5
free TEST E F*3,0,cont1
ASSIGN 4,P3
TRANSFER,kassa
cont1 LOOP 3,free
minq TEST LE Q*1,P2,cont2
ASSIGN 4,P1
ASSIGN 2,Q*1
cont2 LOOP 1,minq
kassa QUEUE P4
SEIZE p4
DEPART P4
PRIORITY 1
ADVANCE 300,180
RELEASE P4
TERMINATE 1
start 200