Механики
Скачать 4.29 Mb.
|
Exponential(5,0,10) задают соответственно : 5 – номер исходного стандартного ( встроенного ) генерато - ра равномерно распределенных случайных величин ; 0 – смещение выраба - тываемой случайной величины ; 10 – среднее значение интервала Второе изменение в операторе ADVANCE, в котором используется другая форма задания равномерно распределенной случайной величины – в виде библиотечной процедуры (Uniform(25,4,12)) из встроенной в GPSS библиотеки вероятностных распределений Первый параметр процедуры Uniform определяет номер встроенного генератора равномерно распреде - лённых в интервале (0; 1) случайных величин , а второй и третий парамет - ры – границы интервала ( соответственно нижняя и верхняя ) формируемой равномерно распределенной случайной величины Третье изменение в операторе TERMINATE, в котором параметр А задан равным 2. Это значит , что при каждом попадании транзакта в этот оператор из счетчика завершений будет вычитаться не 1, как в предыду - щем примере , а 2. Следовательно , моделирование завершится после прохо - ждения через модель не 100 000 транзактов , а только 50 000. 6.7.3. Модель 2: многоканальная СМО с накопителем ограниченной ёмкости и обслуживанием заявок по закону Эрланга (M/E 2 /1/r) Положим теперь , что в предыдущую модель внесены следующие изменения ( рис .6.8): 1) система содержит K=4 идентичных обслуживающих приборов , причём заявка может занять любой свободный прибор ; 2) накопитель имеет ограниченную ёмкость 10 = r , при этом заявка , заставшая накопитель заполненным , получает отказ в обслуживании и теряется ; 3) длительность обслужи - вания заявок в одном приборе распределена по закону Эрланга 2- го порядка со средним значением 40 секунд 294 Раздел 6. Имитационное моделирование Текст GPSS-модели с комментариями (выделены курсивом): Рассмотрим изменения , внесенные в предыдущую GPSS- модель и выделенные жирным шрифтом Первое изменение заключается в появлении в GPSS- модели « Области описания », которая содержит оператор STORAGE, задающий имя ( Uzel) многоканального устройства ( памяти ) и количество обслуживающих приборов ( ёмкость памяти ), равное 4. Второе изменение заключается в появлении в GPSS- модели нового оператора ( блока ) TEST, позволяющего смоделировать накопитель с ограниченной ёмкостью перед многоканальным устройством Рассмотрим оператор TEST более подробно в контексте данного примера Для этого сопоставим оператор TEST, записанный в общем виде , с оператором TEST в нашей модели : TEST Х A, B, C TEST L Q$ch_1, 10, Otkaz Здесь : Х – условный оператор ( в нашем примере L означает « меньше »); A – СЧА , значение которого проверяется в соответствии с заданным условным оператором ( в нашем примере Q$ch_1 означает проверку длины очереди с именем ch_1); B – контрольное значение , с которым сравнивается значение число - вого атрибута , указанного в параметре A ( в нашем примере длина очереди ch_1 сравнивается во значением 10); C – имя альтернативного оператора , которому передается транзакт , если указанное условие не выполняется ( в нашем примере транзакт будет передан оператору TERMINATE с именем Otkaz). Таким образом , транзакт , попав в указанный опреатор TEST, перейдет к следующему по порядку оператору при условии , что длина очереди ch_1 меньше 10, и к оператору TERMINATE с меткой Otkaz, если в очереди ch_1 уже находятся 10 заявок Uzel STORAGE 4; задание числа приборов в устройстве с именем Uzel ****************************************** *Область исполняемых блоков (Основной модуль) GENERATE (Exponential(11,0,10)); формирование простейшего потока TEST L Q$ch_1,10,Otkaz; проверка длины очереди QUEUE ch_1; регистрация момента поступления заявки в очередь ch_1 ENTER Uzel; попытка занять один из приборов устройства Uzel DEPART ch_1; регистрация момента покидания заявки очереди ch_1 ADVANCE (Exponential(21,0,20)+Exponential(31,0,20)); задержка заявки * в среднем на 40 единиц модельного времени LEAVE Uzel; освобождение одного прибора многоканального * устройства Uzel TERMINATE 1; удаление обслуженной заявки из модели и уменьшение * счетчика завершений Otkaz TERMINATE 1; удаление заявки, получившей отказ Раздел 6. Имитационное моделирование 295 Третье изменение состоит в использовании операторов ENTER и LEAVE, моделирующих занятие и освобождение многоканального устрой - ства , вместо операторов SEIZE и RELEASE, использующихся для однока - нального устройства Заметим , что в операторах ENTER и LEAVE, в отличие от SEIZE и RELEASE, могут использоваться два операнда A и B, где второй операнд B определяет количество занимаемых или освобож - даемых приборов ( каналов ), причем при отсутствии операнда B его значе - ние по умолчанию принимается равным 1. В операторе ADVANCE реализуется случайная задержка заявки в соответствии с законом распределения Эрланга 2- го порядка в виде суммы двух экспоненциально распределенных случайных величин со средними значениями в 20 секунд ( одна единица модельного времени равна одной секунде ) так , что средняя задержка заявки в приборе составляет 40 секунд Еще одной особенностью данной модели является наличие двух операторов TERMINATE. Первый оператор удаляет из модели обслужен- ные заявки ( транзакты ), при этом из «Счетчика завершений» вычитается единица Второй оператор удаляет из модели необслуженны е заявки , то есть заявки , заставшие при поступлении в систему накопитель заполнен - ным и получившие отказ в обслуживании , при этом из «Счетчика завер- шений » также вычитается единица Возникает вопрос : « Можно ли для вывода из модели обслуженных и необслуженных заявок использовать только один оператор TERMINATE?». Ответ : « Да , можно !». Зачем же тогда надо было использовать 2 оператора TERMINATE? Ответ достаточно простой Второй оператор нужен только для того , чтобы получить информацию о доле обслуженных и доле потерянных ( не обслуженных ) заявок Из стандартного отчета ( рис .6.9) видно , что число обслуженных транзактов , прошедших через первый оператор TERMINATE, равно 938291, а число необслуженных ( потерянных ) транзактов , прошедших через второй оператор TERMINATE, равно 61709. Таким образом , вероятность потери заявки в моделируемой системе составляет 61709/(938291+61709)=0,061709, то есть 6,2% от общего числа поступивших в систему заявок Отметим , что наличие в обоих операторах TERMINATE операнда , равного 1, означает , что моделирование завер - шится при достижении суммарного числа обслуженных и необслуженных заявок , покинувших систему , значения , указанного в операнде А команды START ( в данной модели это значение равно 500000). Если в первом операторе TERMINATE операнд будет отсутствовать , что по умолчанию соответствует значению 0, то моделирование завершится , когда число необслуженных (потерянных) заявок достигнет указанного в команде START значения И наоборот , если операнд будет отсутствовать во вто- ром операторе TERMINATE, то моделирование завершится , когда число обслуженных заявок достигнет указанного в команде START значения На рис .6.9 представлен стандартный отчет , полученный для рассмотренной модели при задании команды 296 Раздел 6. Имитационное моделирование START 1000000, означающем , что моделирование завершается после прохождения через систему миллиона заявок ( транзактов ). Следует обратить внимание на то , что завершение процесса модели - рования происходит по числу транзактов , прошедших через операторы TERMINATE, а не по числу транзактов , сформированных оператором GENERATE. В нашей модели через операторы TERMINATE с номерами ( LOC ) 8 и 9 прошли соответственно 938291 и 61709 транзактов ( см раздел LABEL отчета ), что в сумме составляет ровно 1000000 транзактов , как указано в команде START. В то же время , количество транзактов , сформированных в операторе GENERATE равно 1000006, то есть на 6 транзактов больше , чем покинуло модель Эти шесть транзактов на момент завершения моделирования остались в модели и , как видно в том же разделе отчета , они находятся в блоках QUEUE (2 транзакта ), ENTER (1 транзакт ), ADVANCE (3 транзакта ). GPSS World Simulation Report - Untitled Model 2.1 Thursday, September 21, 2006 20:48:27 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 10007445.339 9 0 1 NAME VALUE CH_1 10001.000 OTKAZ 9.000 UZEL 10000.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1000006 0 0 2 TEST 1000006 0 0 3 QUEUE 938297 2 0 4 ENTER 938295 1 0 5 DEPART 938294 0 0 6 ADVANCE 938294 3 0 7 LEAVE 938291 0 0 8 TERMINATE 938291 0 0 OTKAZ 9 TERMINATE 61709 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY CH_1 10 3 938297 138746 4.231 45.125 52.955 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY UZEL 4 0 0 4 938295 1 3.753 0.938 0 2 CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE 1000004 0 10007414.480 1000004 4 5 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 1000007 0 10007447.972 1000007 0 1 999995 0 10007482.391 999995 6 7 1000003 0 10007495.279 1000003 6 7 1000001 0 10007496.268 1000001 6 7 Рис.6.9. Стандартный отчет к Модели 2 Раздел 6. Имитационное моделирование 297 6.7.4. Модель 2. А : дополнительная статистика в виде гистограмм Стандартный отчёт , формируемый автоматически после завершения моделирования , если в команде START не был задан параметр NP, содержит основные результаты моделирования , состав которых может быть задан перед моделированием Для этого в главном меню нужно выбрать пункт «Edit/Settings …» и на странице «Reports» (« Отчёты ») журнала настроек модели с помощью набора флажков задать состав результатов , включаемых в отчёт В некоторых случаях требуется получить результаты моделирования не только в виде средних значений вероятностных характеристик , но и в виде гистограмм , отображающих законы ( плотности ) распределений случайных величин Положим , что в рассмотренной модели 2 результаты моделирования должны быть представлены в виде гистограмм плотностей распределений времени ожидания и времени пребывания заявок Ниже представлен текст GPSS-модели с соответствующими добавлениями : Рассмотрим изменения , внесенные в предыдущую модель и выделенные жирным шрифтом Во-первых, в области описания появились два новых оператора – команды : QTABLE и TABLE. Сопоставим эти операторы , записанные в общем виде , с операторами в нашей модели : <Имя> QTABLE A, B, C, D T_w QTABLE ch_1, 15, 15, 10 ************************************************************************ * Область описания Uzel STORAGE 4; задание числа приборов в устройстве с именем Uzel T_w QTABLE ch_1,15,15,10 T_u TABLE M1,30,30,10 ****************************************** * Область исполняемых блоков (Основной модуль) GENERATE (Exponential(11,0,10)); формирование простейшего потока TEST L Q$ch_1,10,Otkaz; проверка длины очереди ch_1 QUEUE ch_1; регистрация момента поступления заявки в очередь ENTER Uzel; попытка занять один из приборов устройства Uzel DEPART ch_1; регистрация момента покидания очереди ch_1 ADVANCE (Exponential(21,0,20)+Exponential(31,0,20)); задержка * заявки в среднем на 40 единиц модельного времени LEAVE Uzel; освобождение одного прибора многоканального * устройства Uzel TABULATE T_u TERMINATE 1; удаление обслуженной заявки из модели и уменьшение * счетчика завершений Otkaz TERMINATE 1; удаление заявки, получившей отказ ********************************************************************** 298 Раздел 6. Имитационное моделирование <Имя> TABLE A, B, C, D T_u TABLE M1, 30, 30, 10 Первый оператор ( команда ) QTABLE формирует таблицу для гистограммы плотности распределения времени ожидания заявок в очереди , имя которой указано в операнде A. Имя T_w задаёт имя таблицы ( гистограммы ), а операнды A, B, C и D задают соответственно : A= ch_1 – имя очереди , для которой формируется гистограмма ; B= 15 – верхнюю ( правую ) границу первого частотного интервала гистограммы ; C= 15 – величину всех остальных частотных интервалов ; D= 10 – количество частотных интервалов Второй оператор TABLE формирует таблицу для гистограммы плотности распределения времени пребывания заявок в системе Имя T_u, как и в предыдущем случае , задает имя таблицы ( гистограммы ), а операнды A, B, C и D задают соответственно : A= M1 – величину , для которой формируется гистограмма ; в нашем примере M1 представляет собой СЧА , определяющее резидентное время , вычисляемое как разность между текущим значением модельного времени , определяемым в момент вхождения транзакта в блок TABULATE, и временем появления транзакта в модели , то есть временем поступления заявки в систему , являющимся одним из параметров транзакта ; B= 30 – верхнюю границу первого частотного интервала ; C= 30 – величину всех остальных частотных интервалов ; D= 10 – количество частотных интервалов Таким образом , команда TABLE используется совместно с блоком TABULATE, который регистрирует момент прохождения транзактом ( заявкой ) определенного места в модели Соответственно блок TABULATE должен находиться в модели в том месте , относительно которого измеряется искомое время Таким местом при измерении времени пребывания заявки в моделируемой системе является точка выхода заявки из системы , когда транзакт покидает прибор многоканальной системы В качестве параметра A оператора TABULATE выступает имя соответству - ющей таблицы ( гистограммы ). В нашем случае эта таблица и соответствующая ей гистограмма имеет имя T_u. Оператор TABLE так же , как и QTABLE, позволяет сформировать гистограмму плотности распределения случайной величины и имеет аналогичную структуру Основное отличие TABLE от QTABLE состоит в том , что оператор TABLE позволяет формировать гистограмму плотности распределения случайной величины между двумя , в общем случае , про- извольными моментами времени, в то время как QTABLE всегда форми - рует гистограмму плотности распределения времени ожидания в очереди. На рис .6.10 представлен фрагмент стандартного отчета , полученного для рассмотренной модели при задании команды Раздел 6. Имитационное моделирование 299 START 100000, означающем , что моделирование завершено после прохождения через систему ста тысяч заявок ( транзактов ). Жирным шрифтом в отчёте выделены результаты формирования двух таблиц для построения гистограмм плотности распределения : T_W – времени ожидания заявок в очереди ; T_U – времени пребыв ания заявок в системе На рис . 6.11 показаны гистограммы плотностей распределений времени пребывания |