Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Материалы тренинга по AnyLogic

.pdf
Скачиваний:
218
Добавлен:
28.03.2015
Размер:
12.93 Mб
Скачать

Центробработкизвонков. Фаза1. Шаг2

erv ce

Время задержки: triangular( ServiceTime11/2, ServiceTime11, 2*ServiceTime11)

Вместимостьочереди: QCapacity1

азрешить уход по та мауту:

Таймаут: exponential( 1/AbandonMeanTime1 )

Разрешить вытеснение:

Source

Resource Pool

Интенсивность прибытия:

Количестворесурсов: NOperators1

ArrivalRate1

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

161

Таймаут и вытеснение в объекте Queue

Выможете настроить объект Queue так, чтобы он позволял заявкампокидать таймаута. Для этого,нужно выбратьопцию Разрешить уход по таймаутуи задатьтаймаут, который динамическивычисляется для каждойзаявки, так что он может зависетьот само заявкии может ытьстохастическим. аявки, покидающиеобъект по таймауту, направляютсявверхнийправыйпорт объекта.

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

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

162

 

 

Центробработкизвонков. Фаза1. Шаг3

Выделите эксперимент Simulation,

чтобыоткрыть его свойства

На страницеМодельное время выберитеОстановить: Нет

Запустите модельи проследите за количеством упущенных, обслуженных, а такжене дождавшихсясвоей очереди вызовов

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

163

 

 

,По умолчаниюмоделированиедлится100 единиц модельного

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

,

остановамоделипо прошествии определенноговремени.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

164

Центробработкизвонков. Фаза2. Шаг1

Выделите эти

Ctrl+перетащите, чтобысоздать их

копию

Ctrl+перетащите

Вместимостьочереди: QCapacity2

Пока что не меняйте другие параметры

Source

Resource Pool

Интенсивность прибытия:

Количестворесурсов:

ArrivalRate2

NOperators2

 

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

165

Здесь мы создаемновый процесс, пока что абсолютно независимыйот

заданногоранее. Два источника заявок, дванабора ресурсов и т.д. будут работать параллельно.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

166

Центробработкизвонков. Фаза2. Шаг2

Создайте Java классCall

Щелкните

правой

кнопкой

мыши

Добавьте поле type типа int

Выберите Entity вкачестве базовогокласса

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

167

Заявки с расширенной функциональностью

• По умолчаниюв процессных моделях передаются заявкиклассаEntity. Такие заявкидаютне так ужи много возможносте длянастро ки например, Вы можете изменить цвет заданнойфигурыанимации заявкииливообще поменять эту фигуру). Еслиже Вам нужнодобавитьв заявкусвои собственныесвойства, функции, собрать статистику и т.д., то Вам будет нужносоздать свой собственныйкласс заявки– Java класс, который нужно унаследоватьот базовогоклассаEntity.

• Мастер созданияJava классапозволяет Вам добавлятьполя различныхтипов изадаватьдля нихзначенияпо умолчанию. Такжесоздаются два конструкторакласса– одинсоздает заявку с заданнымипо умолчанию значениямипараметров, а другойпозволяет задатьих пользователю с помощью аргументов.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

168

 

 

Центробработкизвонков. Фаза2. Шаг3

Изменитепараметрыобъекта service2:

Класс заявки: Call

Время задержки: entity.type == 1 ?

triangular( ServiceTime12/2, ServiceTime12, 2*ServiceTime12) : triangular( ServiceTime22/2, ServiceTime22, 2*ServiceTime22)

Таймаут: entity.type == 1 ?

exponential( 1/AbandonMeanTime1 ) : exponential( 1/AbandonMeanTime2 )

Новая заявка: new Call( 2 )

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

169

new Call( 1 ) являетсявызовомконструктора созданного намиранее Java

классаCall. Он используется объектомSource длясозданияновых заявок именноэтого класса.

Времязадержкии таймаутобъекта service2 теперь вычисляются по разному, взависимостиот типа поступившего звонка(1 или 2).

Параметр “Класс заявки” и доступ к нестандартным полям

заявки

Вы создалисвой собственныйклассзаявкии указалиобъектам Source, что онидолжнысоздаватьзаявкиименно этого класса. В объектах потоковой диаграммы намнужноработать с созданныминамиполями заявок, например, в этой модели нам нужно узнатьтип заявки(поле type, значение1 или2) впараметрах Время задержки и Таймаутобъекта Service. Чтобы получить доступ к полю type напрямую, Вам нужносказатьобъекту Service, что через него будутпроходить заявкитипа Call. Это делается путем задания имениклассазаявкиCall в поле Класс заявки объекта Service. После этого переменная entity, доступная впараметрахобъекта Таймаут и т.д., будет экземпляром классаCall, и Вы сможете просто писать entity.type.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

170

 

 

Центробработкизвонков. Фаза3. Шаг1

Перенаправьте отвергнутые группой 1 звонкигруппе 2

Вставьте три объекта

SelectOutput для того, чтобы направлятьобратно звонки типа1. Задайте у всехобъектов следующиепараметры:

Класс заявки: Call

Выход true выбирается:

При выполнении условия

Условие: entity.type == 1

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

171

 

 

Посколькумынаправиличасть звонков типа 1 второй группе операторов,

то во втором процессе у нас теперь будут звонки обоих типов. И так как мы будемсобирать статистику отдельнопо каждомутипу звонка, то нам

,

сделаемс помощью трех объектов SelectOutput. Каки на прошломшаге, мы говорим объектам SelectOutput, что через них проходятзаявкитипа Ca , что ы иметь просто доступк полюзаявки type.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

172

Центробработкизвонков. Фаза3. Шаг2

Вставьте сюда дваобъекта

TimeMeasureStart

TimeMeasureEnd.

Для всех из нихзадайте:

TimeMeasureStart …:

{ tmStart1 }

Вставьте еще три объекта TimeMeasureEnd.

Для всех из нихзадайте:

О ъекты

TimeMeasureStart …:

{ tmStart2 }

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

173

, Обратите внимание, что даже если Вы указываете только один объект

TimeMeasureStart всвойстве объекта TimeMeasureEnd, его имявсе равно должно быть заключено в фигурные скобки.

Измерение времени в процессных моделях

асто в процессных моделях ываетнужноузнать, какоевремя заявки

 

провели наопределенном участке процесса. Проще всего это сделать с

 

помощью объектов TimeMeasureStart и TimeMeasureEnd. Объекты

 

 

 

TimeMeasureStart должныбыть помещены перед каждымвходом в

 

интересующуюнасчастьпотоковой диаграммы, а TimeMeasureEnd – перед

 

каждымвыходом изнее. Каждому объекту TimeMeasureEnd нужно знать обо

 

всех соответствующих объектах TimeMeasureStart.

Объект TimeMeasureEnd собирает статистику и распределение времени,

 

проведенного на заданномучастке процесса.

Важноне выпустить из модели заявки, прошедшие через TimeMeasureStart

 

без прохождения через TimeMeasureEnd: последний объект сохраняет заявки

 

всписке, втовремякакпервыйихудаляет. Внашеймоделимыхотимтолько

 

лишьсобрать статистику по обслуженнымзвонкам, но нам приходится

 

помещать TimeMeasureEnd накаждый изтрех выходов.

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

174

Центробработкизвонков. Фаза3. Шаг3

tmEndAn1

Ctrl+перетащите

Перетащите сюдаэлемент Гистограмма

изпалитрыСтатистика.

На странице свойствВнешний вид задайте:

Легенда:

Меткипо оси Y: Нет

На страницеОсновные добавьте элемент данных, какпоказано ниже:

Ctrl+перетащите первую диаграмму, чтобы создать ее копию.

tmEndAn2 Сделайтеизменение в свойстве Данные: tmEndAn2.distribution

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

175

, Помните, что объект TimeMeasureEnd собирает информациюо

распределениивремени, проведенногозаявкамина заданном участке

процесса. Распределение(объект Данные гистограммы) доступнокак

.

.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

176

Центробработкизвонков. Фаза3. Шаг4

Перетащите элемент Круговая диаграмма из палитрыСтатистика. На странице свойствВнешний вид задайте: Легенда:

На страницеОсновные добавьте три элемента данных:

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

177

У объекта Sink есть функцияcount(), которая возвращает количество

заявок, покинувшихэтот объект за все времяработы модели.

Получение количества заявок, прошедших через порт

Вы можете получить количество заявок, прошедших через любойпорт любогообъекта Enterprise Library, с помощью метода имяОбъекта.имяПорта.count(). Например, Вы можете вызвать typeB.outT.count().

Но для объектов, составленныхиз другихобъектов (например, Service), это может не работать. Например, чтобы получить количество заявок, покинувшихобъект service2 через порт outTimeout, Вам нужнобудет вызвать service2.seize.queue.outTimeout.count().

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

178

 

 

Центробработкизвонков. Фаза3. Шаг5

Запустите модель. Проследите за распределением “времени пребыванияв системе” для обслуженных звонкови за процентом упущенных, обслуженныхи не дождавшихсясвоей очереди вызовов обоих типов. (Чтобы увидетьдиаграммы, увеличьте размер окнаили перетащите холст презентации)

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

179

 

 

В чем Вы видите причину разницы распределений“временпребывания в

системе”? Почему качество обслуживания для звонковтипа 2 хуже?

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

180