Математическое моделирование

         

Блоки SPLIT и ASSEMBLE


При необходимости в программе можно создать (или уничтожить уже имеющиеся) копии транзактов. Для создания копий транзактов, уже участвующих в моделировании, используется блок SPLIT («расщепление» транзакта). При этом создаются транзакты с точно такими же характеристиками (параметры, приоритет и т.д.), как и у оригинала. Порожденная группа транзактов называется ансамблем. Формат оператора SPLIT:

SPLIT A,B,C

Операнд А - положительное целое значение (число копий транзакта). Операнд В - адрес блока, в который следует послать копии транзакта. Операнд С - значение так называемого серийного параметра. Когда транзакт входит в блок SPLIT, значение этого параметра увеличивается на 1 для транзакта–оригинала, на 2- для его копии, на 3 - для второй копии и т.д.

Для имитации различных сборочных операций удобно применять блок ASSEMBLE, действие которого состоит в том, что он «собирает» определенное количество транзактов одного ансамбля. Число собираемых транзактов называется «счетчиком сборки» и определяется полем А блока ASSEMBLE.

Пример: через блок

ASSEMBLE 10

пройдет только первый транзакт некоторого семейства, причем он будет задержан до тех пор, пока на этот блок не поступит еще 9 транзактов того же ансамбля. Эти 9 транзактов при этом уничтожаются. После этого первый транзакт пройдет блок ASSEMBLE.

Имеется возможность косвенного задания счетчика сборки при помощи указания номера параметра первого транзакта, значение которого заносится в счетчик сборки данного блока ASSEMBLE. Кроме того, один блок ASSEMBLE может одновременно собирать транзакты, принадлежащие к разным ансамблям.

Пример программной конструкции GPSS с операторами SPLIT и ASSEMBLE:

simulate

generate ,,,100

seize mach1

arrive totti

advance 32,6

release mach1

split 1, mac3 ! Cоздать одну копию транзакта и



seize mach2   ! послать ее в блок с адресом mас3

advance 28,5

release mach2

goto mac4

mac3 seize mach3

advance 30,15

release mach3

mac4 assemble 2    ! Уничтожить созданную копию транзакта

seize mach4

advance 22,9

release mach4

depart totti

terminate 1

*

start 100

end



Содержание раздела