Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чтоесть / Мое / Конспект лекций Для студентов специальности 080801. 65 - приклад.doc
Скачиваний:
272
Добавлен:
24.03.2015
Размер:
3.83 Mб
Скачать

Задания для самостоятельной работы:

1. В ресторан каждые 25+9 с заходят клиенты. Заказы принима­ют шесть кассиров. Время выполнения заказов - 120+40 с. Соберите статистическую информацию о длине очереди.

2. В одноканальную СМО поступает пуассоновский поток зая­вок с интенсивностью 2 мин-1. Время обслуживания одной заявки -25±4 с. Соберите статистическую информацию о времени пребыва­ния заявок в системе.

3. В двухканальную СМО поступает пуассоновский поток зая­вок с интенсивностью 3 мин-1. Время обслуживания одной заявки -28±6 с. Соберите статистическую информацию о времени пребыва­ния заявок в очереди.

4. На складе обслуживают заказы трех видов. Заказы поступают по нормальному закону с параметрами (12, 2). Вероятность появления заказа первого вида составляет 0,3, второго вида - 0,55, третьего вида - 0,15. Все заказы выполняются одним из двух рабочих за время 16+5 ед. времени. Каждый вид заказов характеризуется своим рас­пределением стоимости выполнения в зависимости от времени вы­полнения заказа (зависимости задайте самостоятельно). Стоимость выполнения заказа сохраните в параметре 1. При моделировании подсчитайте суммарную стоимость выполнения заказов.

5. В сети СМО действует три МКУ. Транзакт входит в то МКУ, номер которого помещен в параметре 2. Напишите соответствующий фрагмент программы для данной модели.

4.20. Косвенная адресация

Ранее были рассмотрены прямые способы адресации, когда:

1) номер объекта задается константой

QUEUE 2 ; Стать в очередь 2 SEIZE 1 ; Занять устройство 1

2) номер объекта задается СЧА

LEAVE P1 ; Освободить МКУ с номером, задаваемым параметром 1

Адресация может быть относительной и по отношению к само­му блоку. Это осуществляется при помощи записи *+/-n. Например,

TRANSFER ,*+2

В этом случае сам блок TRANSFER является ориентировочным блоком. Транзакт пытается войти во второй, относительно блока TRANSFER, блок.

Подобные ссылки не зависят от свойств транзакта, обрабаты­ваемого в данный момент времени. Использование прямой адресации может привести к введению большого числа дополнительных блоков только для того, чтобы записать номера объектов в СЧА, т.е. к увели­чению объема модели. Существенным образом сократить объем мо­дели и использовать зависимость номеров объектов от свойств транзактов позволяет косвенная адресация.

Общий формат косвенной адресации:

C4A*C4Aj или СЧА*СЧА<имя>

Там, где допустимо использование СЧА, обычно могут исполь­зоваться и СЧА*СЧА.

При использовании косвенной адресации параметр Р может опускаться.

Пример 4.46

SEIZE P*X1

Занять устройство, номер которого содержится в параметре транзакта, а номер параметра определяется значением ячейки X1.

SAVE VALUE 1,X*Р2

Поместить в ячейку с номером 1 значение, содержащееся в ячейке, номер которой определяется параметром 2.

Пример 4.47

4 FUNCTION RN1,D3 ; Функция распределения типов сообщений 0.2,1/0.5,2/0.999999,3

1 FUNCTION RN2,C20 ; Функция распределения числа символов сообщения типа 1

2 FUNCTION RN3,C20 ; Функция распределения числа символов сообщения типа 2

3 FUNCTION RN4,C20 ; Функция распределения числа символов сообщения типа 3

GENERATE 100,10

ASSIGN 1.FN4 ; Определение типа сообщения

ASSIGN 2.FN*P1 ; Определение числа символов сообщения

В данной модели предполагается, что через некоторый узел сети проходят информационные сообщения трех типов, причем каждый из них характеризуется своим распределением числа символов. В модели первый параметр транзакта содержит тип сообщения, а второй па­раметр - число символов сообщения.

При использовании косвенной адресации при обращении к устройствам, МКУ или функциям через параметры приходится применять числовые значения имен. Транслятор GPSS/PC на этапе компиляции сам присваивает именам числовые значения, однако, при этом пользователь не контролирует такое присвоение. Для того, чтобы не возникали конфликты между числовыми значениями имен, присвоенных транслятором, и именами, заданных пользователем, необходимо использовать простое правило: в модели использовать имена либо только числовые, либо только символьные.

Назначение именам числовых значений осуществляется с помо­щью оператора EQU (аналог #define в языке программирования Си).

Пример 4.48

Необходимо занять МКУ, номер которого определяется в пер­вом параметре транзакта. По логике функционирования модели за­нимается один из двух МКУ: SECTION_A или SECTION_B.

SECTION_A EQU 1

SECTION_B EQU 2 .

SECTION_A STORAGE 2

SECTION_B STORAGE 3

ASSIGN 1,1

ASSSIGN 1,2

ENTER PI

Пример 4.49

Рассмотрим приход клиентов в банк и их обслуживание касси­рами. Время прихода клиентов задается функцией распределения ARRIVE. Для обслуживания открыто семь окошек кассиров, к каждому из них может образовываться очередь. Во время прихода кли­ента в банк, если хотя бы один кассир свободен, клиент сразу же подходит к этому кассиру. В противном случае он присоединяется к любой кратчайшей очереди на текущий момент. Порядок обслужи­вания клиентов из очереди - FIFO.

Обслуживание в кассе разделяется на пять видов операций, частота появления которых и среднее время обслуживания задают­ся функцией MEAN.

В модели с несколькими очередями могут возникнуть одно­временные события прихода клиента и конца обслуживания касси­ром. Если событие «приход» будет рассмотрено ранее события «ко­нец обслуживания», то устройство в момент проверки будет счи­таться занятым и вновь прибывший клиент не сможет занять касси­ра. Поэтому необходимо обеспечить приоритетность в обработке события «освобождения кассира». Это можно сделать с помощью задания уровня приоритета (блок PRIORITY 1) между блоками GENERATE и ADVANCE.

Для реализации поиска свободного кассира используется блок TEST E, помеченный меткой NEXT, который проверяет, свободен ли кассир. Максимальный номер кассира запоминается в параметре транзакта Р5. По этому же параметру образуется цикл для проверки всех устройств (блок LOOP). Номер первого свободного кассира запоминается в параметре транзакта РЗ, и транзакт передается на обслуживание. Если все устройства заняты, то транзакт переходит к следующему блоку после LOOP, т.е. к блоку TEST, помеченному меткой SIT. Этот блок сравнивает длины очередей для всех уст­ройств. Первоначально для сравнения в параметр Р2 транзакта по­мещается число 1000. Аналогично организуется цикл по всем оче­редям с помощью параметра Р1 транзакта. Первоначально туда по­мещается максимальный номер очереди. Если длина следующей просматриваемой очереди меньше предыдущей, то запоминается номер очереди в параметре РЗ и ее длина в параметре Р2 транзакта. После просмотра всех очередей (перехода к следующему блоку по­сле LOOP) в этих параметрах окажется номер минимальной очере­ди и ее длина, соответственно.

Приведем текст соответствующей программы.

* Функция времени обслуживания

020 MEAN FUNCTION RN1,D5

1,450/.29,750/.61,1000/.85,1500/1.0,3000

* Функция времени прихода

030 ARRIVEL FUNCTION RN1,D6

0.0,50/.25,100/.60,150/.80,200/.90,250/1.0,300

*

040 Т_1 TABLE Ml,200,600,10 ; Сбор данных о времени пребывания

050*************************************************************

055 GENERATE FNSARRIVEL ; Приход клиентов

060 ASSIGN 1,7 ; Задать МАХ номер очереди

065 ASSIGN 2,1000 ; Запомнить большое число

070 ASSIGN 4,FN$MEAN ; Запомнить в Р4 время обслуживания

075 ASSIGN 5,7 ; Задать МАХ номер кассира

080 NEXT TESTE F*5,0,FAC ; Есть свободный кассир?

085 ASSIGN 3,P5 ; «Да» - запомнить его номер

090 TRANSFER ,QUI ; Идти на обслуживание

95 РАС LOOP 5,NEXT ; Цикл по всем кассирам

100*************************************************************

105 SIT TESTL Q*1,P2,SIS ; Поиск MIN очереди

110 ASSIGN 3,P1 ; Запомнить номер очереди

110 ASSIGN 2,Q*1 ; Запомнить длину очереди

120 SIS LOOP 1,SIT ; Цикл по всем очередям

125 QUI QUEUE РЗ ; Встать в очередь

130 SEIZE РЗ ; Занять кассира

135 DEPART РЗ ; Покинуть очередь

140 PRIORITY 1

145 ADVANCE P4 ; Обслужиться

150 RELEASE РЗ ; Освободить кассира

155 TABULATE T_l ; Время пребывания

165 TERMINATE

170*********************************************************

175 GENERATE 14400 ; Таймер времени работы 180 TERMINATE 1

Отчет с результатами моделирования:

Гистограмма времени пребывания в системе приведена на рис. 4.12

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

Соседние файлы в папке Мое