Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gpss_Методич_пособие_Дорошенко.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
363.52 Кб
Скачать

Процессов

GPSS-модель в общем случае может состоять из произвольного количества сегментов. Моделирование независимых процессов имитируется соответствующими сегментами, продвижение транзактов по которым синхронизируется во времени согласно алгоритму моделирования.

Ниже приведен пример программы имитации двух независимых параллельных процессов (первые два сегмента). Длительность моделирования задается третьим сегментом.

Q1 equ 1

Q2 equ 2

U1 equ 1

U2 equ 2

SIMULATE

* Сегмент 1

GENERATE 9,5

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 7,6

RELEASE U1

TERMINATE

* Сегмент 2

GENERATE 12, 7

QUEUE Q2

SEIZE U2

DEPARTE Q2

ADYANCE 10,3

RELEANCE U2

TERMINATE

* Сегмент 3

GENERATE 3000

TERMINATE 1

START 1

END

4.5.2. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ,

ЗАВИСИМЫХ ПО ДАННЫМ

Распараллеливание процессов в GPSS иммитируется созданием в блоке SPLIT копий текущего транзакта и последующим перемещением их по блокам модели. Транзакты-копии образуют вместе с транзактом-родителем одно семейство. В соответствии с логикой работы блока SPLIT транзакт-родитель после порождения транзактов-копий продвигается в блок, следующий за блоком SPLIT. Транзакты-копии предназначены для имитации параллельных зависимых (связанных по результатам завершения) процессов и перемещаются в блоки, имитирующие эти процессы и в программе определяемые меткой, записанной в поле В блока SPLIT. По завершении имитации зависимых процессов возможны два варианта продвижения транзактов семейства:

  • накопление в блоке ASSEMBLE А транзактов одного семейства до количества, указанного в поле А этого блока, и слияние их в снова в один транзакт;

  • накопление в блоке GATNER А транзактов одного семейства до количества, указанного в поле А этого блока, с последовательным продвижением всех накопленных транзактов в следующий блок по правилу FIFO.

Ниже приводится пример программы, имитирующей зависимые параллельные процессы, протекающие в устройствах U11,U12,U13, и последующее объединение их в устройстве U2:

*

GENERATE 20,5

SPLIT 3,МТ, 4,5; порождается 3 копии транзакта, поступающие в блок МТ.

*Порядковые номера копий хранятся в параметре 4, а число параметров у каждой

*копии равно 5.

*Исходный транзакт остается активным и передвигается в следующий блок модели:

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 15,10

RELEASE U1

TERMINATE

*

MT TRANSFER ALL, 10,21,4; копии-транзакты пытаются войти последовательно в *блоки с номерами 10,14,18; эти номера можно либо определить перечислением блоков *по исходному тексту программы-модели либо прочитать в .LST –файле ( номера *представляются слева в строке каждого блока)

SEIZE U11

ADVANCE 10,6

RELEASE U11

TRANSFER , MK

*

SEIZE U12

ADVANCE 10,6

RELEASE U12

TRANSFER ,MK

*

QUEUE Q2

SEIZE U13

DEPART Q2

ADVANCE 10,6

RELEASE U13

TRANSFER ,MK

* Примечание: далее рассмотрены варианты моделей:

* Вариант 1 – слияние трех транзактов в блоке ASSEMBLE 3 в один с обслуживанием *этого транзакта в устройстве U2; в этом блоке накапливаются транзакты одного

*семейства, поэтому в нем одновременно могут задерживаться транзакты различных

*семейств, для которых еще не выполнены условия ассемблирования:

MK ASSEMBLE 3;

SEIZE U2

ADVANCE 15,5

RELEASE U2

TERMINATE

* Вариант 2 – накопление трех транзактов одного семейства в блоке GATHER 3

*с последующим обслуживанием их в устройстве U2 по правилу FIFO; очевидно, что

*в этом случае быстродействие устройства должно обеспечивать последовательное

*обслуживание всех трех транзактов-копий до появления следующей порции

*транзактов-копий:

MK GATHER 3

SEIZE U2

ADVANCE 15,3

RELEASE U2

TERMINATE

*Сегмент задания времени моделирования здесь не приводится.

4.5.3. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ,

СВЯЗАННЫХ ПО УПРАВЛЕНИЮ

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

Например, в системе управления технологическим процессом для обеспечения высокой надежности предусмотрено дублирование расчетов на параллельно работающих ЭВМ с формированием сигнала управления по результатам работы обеих ЭВМ. При моделировании такой системы следует предусмотреть синхронизацию процессов с помощью блока MATCH А (см. 3.3).

Другим типичным примером параллельных процессов, связанных по управлению, может быть система «пассажир – маршрутное такси». Два независимых потока – пассажиров и маршрутных такси – пересекаются на остановке для посадки (здесь рассматривается модель взаимодействия только на начальной остановке маршрута, то есть только модель посадки). Взаимодействие этих процессов в модели отображается с помощью логического переключателя tr, корорый включается только при наличии машины на остановке, то есть когда возможна посадка, и выключается при заполнении всех мест в салоне машины (taxi1).

* Программа моделирования “Маршрутное такси”

taxi equ 1

pass equ 2

posadka equ 1

exp equ 1

tr equ 1

taxi1 equ 1

taxi1 storage 15

*

exp function rn$1,c14

0.,0./.1,.104/.3,.555/.5,.69/.6,.915

.7,1.2/.8,1.6/.85,1.95/.9,2.3/.95,3.

.98,3.9/.99,4.6/.995,5.3/.999,7.

*

Simulate

*

* процесс движения a/машин по маршруту:

*

gener ,,,7 ; на маршрут выходит 7 а/машин

ost queue taxi ; очередь машин на остановке

seize posadka ; на посадку выходит только одна a/м

depart taxi

logic_s tr; установка индикатора готовности a/м к посадке

gate_lr tr ; посадка закончена? Если нет, то ждать

release posadka ; да, посадка закончена

advance 70,30; движение по маршруту в течение времени, *имеющего равновероятное распределение на интервале 40..100 мин

transfer ,ost ; возврат в начало маршрута

*

* процесс движения пассажиров:

*

gener 2,fn$exp; появление пассажиров через случайные *интервалы времени, распределенные по закону Пуассона

*с интенсивностью 0.5 пассажиров в минуту

queue pass ; очередь пассажиров

gate_ls tr; возможна ли посадка? (индикатор tr установлен?)

enter taxi1 ; да, и пассажир занимает место в машине

depart pass

gate_sf taxi1,drop; все ли места заняты? (sf-storage full)

logic_r tr ; да, и индикатор сбрасывается

leave taxi,15 ; сброс занятых мест storage

drop term

*

gener 1200; задание времени моделирования 20 часов

term 1

start 1

end

*Примечание. В тексте модели выделены блоки, обеспечивающие взаимодействие двух процессов через логический переключатель.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]