Материалы тренинга по AnyLogic
.pdfЦентробработкизвонков. Фаза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 |