Главная страница

Материалы тренинга по AnyLogic. Решение на уровне модели мир без риска мир без риска реальный мир Мир моделей Реальный мир Решение Проблема


Скачать 12.33 Mb.
НазваниеРешение на уровне модели мир без риска мир без риска реальный мир Мир моделей Реальный мир Решение Проблема
АнкорМатериалы тренинга по AnyLogic.pdf
Дата31.01.2018
Размер12.33 Mb.
Формат файлаpdf
Имя файлаМатериалы тренинга по AnyLogic.pdf
ТипРешение
#15050
страница6 из 16
1   2   3   4   5   6   7   8   9   ...   16
160
Центр обработки звонков. Фаза 1. Шаг 2
Ц
р
р

i

Service
Время задержки triangular( ServiceTime11/2, ServiceTime11, Вместимость очереди QCapacity1
Р
й
Разрешить уход по таймауту:
Таймаут: exponential( 1/AbandonMeanTime1 Разрешить вытеснение Интенсивность прибытия
ArrivalRate1

Resource Количество ресурсов NOperators1
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
161
Таймаут и вытеснение в объекте Вы можете настроить объект Queue так, чтобы он позволял заявкам покидать объект в том случае если они ждали в очереди в течение заданного объект в том случае, если они ждали в очереди в течение заданного таймаута. Для этого нужно выбрать опцию Разрешить уход по таймауту и задать таймаут, который динамически вычисляется для каждой заявки, так й
б
З
что он может зависеть от самой заявки и может быть стохастическим. Заявки, покидающие объект по таймауту, направляются в верхний правый порт объекта.
• Если Вы выберете опцию Разрешить вытеснение, то любые поступающие заявки смогут быть помещены в очередь, но если очередь будет полна, то заявки с более низкими приоритетами будут вытесняться из очереди, покидая объект через верхний левый порт. Приоритет вычисляется отдельно для каждой заявки. Если Вы оставите поле Приоритет заявки пустым, то все заявки будут рассматриваться как имеющие одинаковые приоритеты, иуду р р
щ др р
,
поэтому если очередь будет переполнена, тоновые заявки будут отвергаться и покидать объект через порт вытеснения 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
162
Центр обработки звонков. Фаза 1. Шаг 3
Ц
р
р

Выделите эксперимент Выделите эксперимент Simulation, чтобы открыть его свойства

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

выберите Остановить Нет

Запустите модель и проследите за количеством упущенных, обслуженных, а также не дождавшихся своей очереди вызовов 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
163
  По умолчанию моделирование длится 100 единиц модельного По умолчанию моделирование длится 100 единиц модельного времени, а по умолчанию в качестве единиц модельного времени выбраны минуты. Поскольку такой период времени для модели центра обслуживания звонков является несущественным мы уберем условие обслуживания звонков является несущественным, мы уберем условие останова модели по прошествии определенного времени 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
164
Центр обработки звонков. Фаза 2. Шаг 1
Ц
р
р

Выделите эти объекты и объекты и
Ctrl+перетащите, чтобы создать их копию

Service
копию
Ctrl+перетащите

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

Source


Source
Интенсивность прибытия
ArrivalRate
2

Resource Количество ресурсов
NOperators
2
© 2002-2011 ООО Экс Джей Текнолоджис», Здесь мы создаем новый процесс пока что абсолютно независимый от

Здесь мы создаем новый процесс, пока что абсолютно независимый от заданного ранее. Два источника заявок, два набора ресурсов и т.д. будут работать параллельно 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
166
Центр обработки звонков. Фаза 2. Шаг 2
Ц
р
р

Создайте
Java класс Щелкните правой кнопкой Добавьте поле типа мыши типа int Выберите Entity в качестве базового класса

Щелкните по кнопке Готово 2002-2011 ООО Экс Джей Текнолоджис», Щелкните по кнопке Готово
Заявки с расширенной функциональностью
• По умолчанию в процессных моделях передаются заявки класса Entity. Такие й
й
(
заявки дают не так ужи много возможностей для настройки (например, Вы можете изменить цвет заданной фигуры анимации заявки или вообще поменять эту фигуру. Если же Вам нужно добавить в заявку свои собственные свойства, функции, собрать статистику и т.д., то Вам будет нужно создать свой собственный класс заявки – Java класс, который нужно унаследовать от базового класса Мастер создания Java класса позволяет Вам добавлять поля различных типов и задавать для них значения по умолчанию. Также создаются два конструктора класса – один создает заявку с заданными по умолчанию ру р
д дуду значениями параметров, а другой позволяет задать их пользователю с помощью аргументов 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
168
Центр обработки звонков. Фаза 2. Шаг 3
Ц
р
р

Новая заявка new Call( 1 Новая заявка new Call( 1 Измените параметры объекта Измените параметры объекта Класс заявки Время задержки entity.type == 1 ?
triangular( ServiceTime12/2, ServiceTime12, 2*ServiceTime12) :
g
(
/ ,
,
)
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

new Call( 1 ) является вызовом конструктора созданного нами ранее Java класса Call. Он используется объектом Source для создания новых заявок именно этого класса. Время задержки и таймаут объекта service2 теперь вычисляются по‐
разному, в зависимости от типа поступившего звонка (1 или Параметр Класс заявки и доступ к нестандартным полям
заявки
заявки
• Вы создали свой собственный класс заявки и указали объектам 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. Задайте у всех объектов следующие параметры:
Класс заявки Выход true выбирается При выполнении условия

Условие: entity.type == 1
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
171
 Поскольку мы направили часть звонков типа 1 второй группе операторов Поскольку мы направили часть звонков типа 1 второй группе операторов, то во втором процессе у нас теперь будут звонки обоих типов. Итак как мы будем собирать статистику отдельно по каждому типу звонка, тонам нужно перенаправить звонки типа 1 обратно в первый процесс что мы и нужно перенаправить звонки типа 1 обратно в первый процесс, что мы и сделаем с помощью трех объектов SelectOutput. Как и на прошлом шаге, мы говорим объектам SelectOutput, что через них проходят заявки типа
ll
б й, чтобы иметь простой доступ к полю заявки type.
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
172
Центр обработки звонков. Фаза 3. Шаг 2
Ц
р
р

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

Вставьте три объекта
TimeMeasureEnd
Для всех из них задайте:
Объекты
Объекты
TimeMeasureStart …:
{ tmStart1 }

Insert two Вставьте сюда
TimeMeasureStart
objects Вставьте еще три объекта
TimeMeasureEnd
Для всех из них задайте:
б
два объекта
TimeMeasureStart
Объекты
TimeMeasureStart …:
{ tmStart
2
}
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
173
 Обратите внимание что даже если Вы указываете только один объект, Обратите внимание, что даже если Вы указываете только один объект
TimeMeasureStart в свойстве объекта TimeMeasureEnd, его имя все равно должно быть заключено в фигурные скобки.
Измерение времени в процессных моделях
Ч
б
• Часто в процессных моделях бывает нужно узнать, какое время заявки провели на определенном участке процесса. Проще всего это сделать с помощью объектов TimeMeasureStart и TimeMeasureEnd. Объекты
TimeMeasureStart должны быть помещены перед каждым входом в интересующую нас часть потоковой диаграммы, а TimeMeasureEnd – перед каждым выходом из нее. Каждому объекту TimeMeasureEnd нужно знать обо всех соответствующих объектах Объект TimeMeasureEnd собирает статистику и распределение времени, проведенного на заданном участке процесса.
Важно не выпустить из модели заявки, прошедшие через без прохождения через TimeMeasureEnd: последний объект сохраняет заявки в списке, в то время как первый их удаляет. В нашей модели мы хотим только в списке, в то время как первый их удаляет. В нашей модели мы хотим только лишь собрать статистику по обслуженным звонкам, нонам приходится помещать TimeMeasureEnd на каждый из трех выходов.
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
174
Центр обработки звонков. Фаза 3. Шаг 3
Ц
р
р

Перетащите сюда элемент
Гистограмма
из палитры Статистика.
На странице свойств Внешний вид задайте
Легенда:
Метки по оси Y: Нет
На странице Основные добавьте элемент данных, как показано ниже:
tmEndAn1
Ctrl+перетащите

Ctrl+перетащите первую диаграмму, чтобы р
р у р
у создать ее копию.
Сделайте изменение в свойстве Данные
tmEndAn
2
.distribution
tmEndAn2
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
175
  Помните что объект собирает информацию о,  Помните, что объект собирает информацию о распределении времени, проведенного заявками на заданном участке процесса. Распределение (объект Данные гистограммы) доступно как
имяОбъекта distribution и может отображаться на Гистограмме
имяОбъекта.distribution и может отображаться на Гистограмме 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
176
Центр обработки звонков. Фаза 3. Шаг 4
Ц
р
р

Перетащите элемент
Круговая диаграмма
из палитры Статистика. На странице свойств Внешний вид задайте Легенда На странице Основные добавьте три элемента данных 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
177
 У объекта есть функция count() которая возвращает количество У объекта есть функция count(), которая возвращает количество заявок, покинувших этот объект за все время работы модели. Получение количества заявок, прошедших через порт
• Вы можете получить количество заявок, прошедших через любой порт любого объекта Enterprise Library, с помощью метода
имяОбъекта.имяПорта.count(). Например, Вы можете вызвать
typeB.outT.count().
• Но для объектов, составленных из других объектов (например, Service), это может не работать. Например, чтобы получить количество заявок, р
р р
у покинувших объект service2 через порт outTimeout, Вам нужно будет вызвать 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
178
Центр обработки звонков. Фаза 3. Шаг 5
Ц
р
р

Запустите модель. Проследите за распределением времени пребывания в системе для обслуженных звонков и за процентом упущенных, обслуженных и не дождавшихся своей очереди вызовов обоих типов.
(Чтобы увидеть диаграммы, увеличьте размер окна или перетащите холст презентации 2002-2011 ООО Экс Джей Текнолоджис», В чем Вы видите причину разницы распределений времен пребывания в

В чем Вы видите причину разницы распределений времен пребывания в системе Почему качество обслуживания для звонков типа 2 хуже 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
180
Центр обработки звонков. Фаза 4. Шаг 1
Ц
р
р

Перетащите сюда
Бегунок
из палитры
Элементы управления. На странице его основных свойств:
Нажмите на кнопку
Добавить метки.
Свяжите бегунок с параметром Аналогично создайте еще два создайте еще два бегунка, связанных с параметрами
и

Ctrl+перетащите бегунок, чтобы создать его копию и, с минимальным значением 1 и д
Добавьте метки и свяжите его с параметром ArrivalRate2, оставив те же значения минимума и максимума.
значением 1 и максимальным 200.
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
181
© 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
182
Центр обработки звонков. Фаза 4. Шаг 2
Ц
р
р

Запустите модель. Изменяйте значения интенсивностей поступления звонков и понаблюдайте за разницей в качестве обслуживания звонков типа 1 и типа 2
© 2002-2011 ООО Экс Джей Текнолоджис», Обратите внимание что метки бегунков управляющих значениями

Обратите внимание, что метки бегунков, управляющих значениями интенсивностей появления заявок, отображают значения в диапазоне от до 600, в то время как в нашей модели интенсивности могут принимать значения 0 10 заявок в секунду В чем причина такого несоответствия?
значения 0‐10 заявок в секунду. В чем причина такого несоответствия Знаете ли Вы, как отображать значения в формате количество звонков в секунду 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
184
Центр обработки звонков. Вопросы
Ц
р
р
р
1. Предложите другой способ перенаправления
1. Предложите другой способ перенаправления звонков типа 1 операторам типа 2, который бы не использовал функцию вытеснения объекта фу ц. Измеренное нами время пребывания в системе включает в себя как время ожидания таки время включает в себя как время ожидания, таки время обслуживания. Как бы Вы измерили только время ожидания?
ожидания?
3. При изменении параметров модели с помощью бегунков статистика всегда содержит данные бегунков статистика всегда содержит данные, запомненные как до, таки после изменения. Как бы Вы удалили устаревшую статистику при бы Вы удалили устаревшую статистику при изменении значения с помощью бегунка 2002-2011 ООО Экс Джей Текнолоджис», Центр обработки звонков. Вопросы. Подсказки
Ц
р
р
р
д
собственные счетчики
(простые переменные типа увеличивать их значения в объектахSink
и сбрасывать их при изменении значения соответствующего бегунка. Имеет смысл написать функцию и вызывать еев полеДействие
каждого бегунка.
3.
Сброс статистики. Если сбросить собираемое объектом
TimeMeasureEnd
распределение времени можно легко например, вызвав то сбросить счетчик объектаSink
Вы не можете. Поэтому Вам нужно будет создать свои собственныес четчики(
простыеп еременныет ипаint
)увеличивать их значения в
время в коде параметра Действие при выходе

объектаSource
. Тогда в поле Действие
при начале задержки
объектаService
Вы сможете вычислить время ожидания какtime()
‐entity.arrivalTime
и добавить это время в объект сбора статистики и
/или распределение.
.
ре
о
да
.
с ользова ьд л
да о
зада объе ы
e
easu
eStat
/
d
е получится, поскольку их нельзя поместить внутрь объекта
Serviceмежду внутренней очередью этого объекта и его объектом задержки. О
днакоВ
ы можете добавить дополнительное поле в класс заявкиCall
и запоминать в этом поле текущее времяв кодепараметра
Действиепри
выходе
объектаSource
Тогдав полеДействие
аналогичный объект
SelectOutputс условием <
service2.queueCapacity. При выполнении этого условия заявки перейдут в
service2, при невыполнении–
покинут систему через
balked1
2.
Вре
мя ожидания. Использовать для данной задачи объекты
1.
Перенаправление звонков Выключите вытеснение у обоих объектов. С
помощью объектаSelectOutput
направляйте входящие звонки типа 1 в, только если <
service1.queueCapacity
, аи наче направляйте их в другой аналогичныйо бъектSelectOutput
су слови ем 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
186
Моделирование транспортных сетей
транспортных сетей в Эта презентация является частью стандартной программы обучения 2002-2011 ООО Экс Джей Текнолоджис», Транспортные сети
Транспортные сети
• Часть библиотеки Enterprise Library для решения
Часть библиотеки Enterprise Library для решения специфических задач
• Сложные системы обслуживания логистические задачи
Сложные системы обслуживания, логистические задачи, здравоохранение...
• Важен чертеж план
• Важен чертеж, план
сеть узлов и связей между ними
• заявки передвигаются вдоль путей сети
• Заявки используют ресурсы, находящиеся в сети (персонал, оборудование, комнаты. Ресурсы могут перемещаться в сети руд
,
)
ур у
р щ
• В одной модели можно задать сразу несколько сетей 2002-2011 ООО Экс Джей Текнолоджис», www.xjtek.ru
1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта