Помощь в написании студенческих работ
Антистрессовый сервис

Вывод результатов моделирования

РефератПомощь в написанииУзнать стоимостьмоей работы

Отладка модели. Построение модели закончено. Выделите в окне Проекты SimulationrMain. На странице Основные установите Фиксированное начальное число (воспроизводимые прогоны) и задайте Начальное число: 892. Перейдите на страницу Модельное время, выберите В заданное время из списка Остановить. Введите Конечное время 1440 (24−60 = 1440). С выходов объектов видРемЗаяв2 — видРемЗаяв4 заявки поступают… Читать ещё >

Вывод результатов моделирования (реферат, курсовая, диплом, контрольная)

  • 1. На Область просмотра мы уже перетащили Скругленный прямоугольник. На нем мы будем также размещать элементы для вывода результатов моделирования.
  • 2. Перетащите на него элемент text и на странице Текст панели Свойства вместо слова text введите Результаты моделирования. Поместите этот текст посредине в нижней части элемента Скругленный прямоугольник.
  • 3. Из палитры Агент перетащите элементы Переменная. Разместите их и дайте им имена согласно рис. 7.2. Тип всех переменных double.

Построение событийной части модели

При создании событийной части модели мы последовательно реализуем средствами AnyLogic выделенные ранее сегменты (см. подпараграф 7.1.3):

  • • источники заявок;
  • • диспетчеры;
  • • мастера;
  • • учет выполненных заявок.
  • 1. Создайте область просмотра для размещения элементов модели на агенте Main. Из палитры Презентация перетащите элемент Область просмотра. Перейдите на страницу Основные панели Свойства. В поле Имя введите МодРемУслуги.
  • 2. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхи, левому углу.
  • 3. Выберите из выпадающего списка Масштабирование режим масштабирования Подогнать под окно.
  • 4. На странице Местоположение и размер панели Свойства введите в поля X: О, Y: 0, Ширина: 1240, Высота: 4 60.
  • 5. Из палитры Презентация перетащите элемент Прямоугольник. Оставьте имя, предложенное системой. В прямоугольнике мы разместим объект source для имитации поступления заявок.
  • 6. На странице Местоположение и размер панели Свойства введите в поля X: 20, Y: 12 0, Ширина: 100, Высота: 14 0.
  • 7. Перетащите элемент text на прямоугольник и на странице Текст панели Свойства введите Источники заявок.
  • 8. Перетащите еще один элемент Прямоугольник. Оставьте имя, предложенное системой. В этом прямоугольнике мы разместим объекты сегмента Диспетчеры для имитации работы диспетчеров.
  • 9. На странице Местоположение и размер панели Свойства введите в поля X: 130, Y: 30, Ширина: 590, Высота: 410.
  • 10. Перетащите элемент text на прямоугольник и на странице Текст панели Свойства введите Диспетчеры.

На рис. 7.3 показаны объекты двух сегментов: Источники заявок и Диспетчеры. Приступим к их построению.

Сегменты Источники заявок и Диспетчеры.

Рис. 7.3. Сегменты Источники заявок и Диспетчеры.

Сегмент Источники заявок. Из Библиотеки моделирования процессов перетащите объект source на прямоугольник с названием Источники заявок (см. рис. 7.3). Создайте новый тип агента Заявка.

  • 1. В панели Проект щелкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать —> Java класс.
  • 2. Появится диалоговое окно Новый Java класс. В поле Имя: введите имя нового типа агента Заявка.
  • 3. В ноле Базовый класс выберите из выпадающего списка Entity в качестве базового класса. Щелкните Далее.
  • 4. Появится вторая страница Мастера создания Java класса. Добавьте следующие поля Java-класса:

double типЗ;

double видР;

double времяР;

  • 5. Оставьте выбранными флажки Создать конструктор и Создать метод toString ().
  • 6. Щелкните кнопку Готово. Выделите правой кнопкой мыши созданный Java-класс Заявка и выполните в контекстном меню Преобразовать Java класс в тип агента.
  • 7. Выделите объект source. 11а странице Основные панели Свойства уберите флажок Отображать имя. В полях Тип заявки и Новая заявка

Agent замените на Заявка. Установите:

  • • Прибывают согласно Времени между прибытиями',
  • • Время между прибытиями exponential (1/ (Тр/п)) ;
  • • Действия при выходе:

agent.типЗ=uniform ();

agent.BHflP=uniform ();

Java-код заносит в поля агент. типЗ и агент. видР равномерно распределенные случайные числа. Они нужны далее для розыгрыша кодов типов заявок и кодов видов ремонта.

Сегмент Диспетчеры. Сегмент Диспетчеры предназначен для распределения по группам мастеров заявок согласно их типам и видам ремонта в зависимости от занятости мастеров в текущий момент времени.

Данный сегмент реализуется шестью объектами selectOutput5, восемью объектами selectOutput, объектами queue, delay и sink (см. рис. 7.3).

  • 1. Перетащите указанные объекты (или, перетащив один, скопируйте остальные, но перед копированием измените свойства, общие для всех копируемых объектов, например, класс заявки Заявка) из Основной библиотеки на диаграмму класса Main. Соедините их так, как показано на рис. 7.3.
  • 2. Установите свойства объектов согласно табл. 7.2.

Объектом типЗаявки разыгрывается код типа заявки. Например, в поступившей заявке agent. типЗ = 0.723. Проверяется условие 0:

agent.™n3 = 0.723 <= pi = 0,5.

Условие 0 не выполняется. Тогда проверяется условие 1: agent. Tnn3 = 0.723 <= р2 = 0,75.

Свойства объектов сегмента Диспетчеры.

Таблица 7.2

Свойства.

Значение.

Имя.

типЗаявки.

Использовать.

Условия.

Условие 1.

agent.типЗ <= pi.

Действия при выходе 1.

agent.типЗ = 1; постЗаявТип1 + +; постЗаявТип++;

Условие 2.

agent.типЗ <= р2.

Действия при выходе 2.

agent.типЗ=2; постЗаявТип2++; постЗаявТип++;

Условие 3.

agent.типЗ <= рЗ.

Действия при выходе 3.

agent.типЗ=3; постЗаявТипЗ + +; постЗаявТип++;

Условие 4.

agent.типЗ <= р4.

Действия при выходе 4.

agent.типЗ=4; постЗаявТип4++; постЗаявТип++;

Имя.

отказ.

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

С заданной вероятностью.

Вероятность.

0,98.

Имя.

поТипамЗаяв.

Использовать.

Условия.

Условие 1.

agent.типЗ == 1.

Условие 2.

agent.типЗ == 2.

Условие 3.

agent.типЗ == 3.

Условие 4.

agent.типЗ == 4.

Имя.

видРемЗаяв1.

Использовать.

Условия.

Условие 1.

agent. видР <= pH.

Действия при выходе 1.

agent.видР = 1;

agent.времяР = exponential (1/Т11) ;

Условие 2.

agent.видР <= р12.

Действия при выходе 2.

agent.видР = 2;

agent.времяР = exponential (1/Т12);

Условие 3.

agent.видР =< р13.

Действия при выходе 3.

agent.видР = 3;

agent.времяР = exponential (1/Т13);

Имя.

видРемЗаяв2.

Использовать.

Условия.

Свойства.

Значение.

Условие 1.

agent.видР <= р21.

Действия при выходе 1.

agent.видР = 1;

agent.времяР = exponential (1/Т21) ;

Условие 2.

agent. видР <= р22.

Действия при выходе 2.

agent.видР = 2;

agent.времяР = exponential (1/Т22);

Условие 3.

agent.видР =< р23.

Действия при выходе 3.

agent.видР = 3;

agent.времяР = exponential (1/Т23) ;

Имя.

видРемЗаявЗ.

Использовать.

Условия.

Условие 1.

agent.видР <= р31.

Действия при выходе 1.

agent.видР = 1;

agent.BpeMnP=exponential (1/Т31);

Условие 2.

agent.видР <= р32.

Действия при выходе 2.

agent.видР = 2;

agent.времяР = exponential (1/Т32);

Условие 3.

agent.видР =< рЗЗ.

Действия при выходе 3.

agent.видР=3;

agent.BpeMnP=exponential (1/ТЗЗ);

Имя.

видРемЗаяв4.

Использовать.

Условия.

Условие 1.

agent.видР <= р41.

Действия при выходе 1.

agent.видР=1;

agent.BpeMHP=exponential (1/Т41);

Условие 2.

agent.видР <= р42.

Действия при выходе 2.

agent.видР=2;

agent.BpeMnP=exponential (1/Т42);

Условие 3.

agent.видР =< p43.

Действия при выходе 3.

agent.видР=3;

agent. времяР=ехропепЫа1 (1/T43) ;

Имя.

свобМастер12.

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

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

Условие.

(очМастеров1.size () == 0) && (мастера1.size ()<�колМастеров1) && (мастера2.size{)≠0).

Имя.

свобМастер13.

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

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

Условие.

  • (очМастеров1.size () == 0) &&
  • (мастера1.size () < колМастеров1) && (мастераЗ.size () ≠ 0)

Свойства.

Значение.

Имя.

свобМастер14.

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

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

Условие.

  • (очМастеров1.size () == 0) &&
  • (мастера1.size () < колМастеров1) && (мастера4.size () ≠ 0)

Имя.

с воб Мастер 23.

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

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

Условие.

(очМастеров2.size () == 0) && (мастера2.size () < колМастеров2)&& (мастераЗ.size () ≠ 0)

Имя.

свобМастер24.

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

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

Условие.

  • (очМастеров2.size{) == 0) &&
  • (мастера2.size () < колМастеров2) && (мастера4.size () ≠ 0)

Имя.

свобМастерЗ4.

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

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

Условие.

(очМастеровЗ.size () == 0) && (мастераЗ.size{) < колМастеровЗ)&& (мастера4.size () ≠ 0)

Имя.

очДисп.

Макс, вместимость.

Установить флажок.

Имя.

Дисп.

Тип.

Определенное время.

Время задержки.

normal (Tol, Tl).

Вместимость.

колДисп.

Действия при выходе.

коэфИспДисп = дисп.statsUtilization.mean ();

Условие 1 выполняется. Заявка пропускается на выход 1. При этом выполняется код, записанный в поле Действия при выходе 1,

agent.типЗ=2; постЗаявТип2++; постЗаявТип++;

Кроме записи кода 2 в поле agent. типЗ = 2 учитывается количество поступивших заявок 2-го типа и количество всех типов поступивших заявок. Последнее в дальнейшем используется для определения вероятности выполнения заявок.

С выходов 0—3 объекта типЗаявки заявки поступают в очДисп (объект queue) с максимальной вместимостью, а затем в объект дисп (объект delay), имитирующий время работы одного из диспетчеров с одной заявкой.

Объект отказ (selectOutput) предназначен для розыгрыша отказа в принятии заявки с вероятностью q = 2%. Заявки, получившие отказ, уничтожаются объектом sink.

Принятые к выполнению заявки распределяются по типам объектом поТипамЗаяв. С выходов 0—3 этого объекта заявки поступают на объекты видРемЗаяв1 — видРемЗаяв4 соответственно. Аналогичным образом этими объектами разыгрываются для заявок 1—4 типов коды видов 1—3 ремонтов.

Функции остальных объектов сегмента Диспетчеры рассмотрим позже.

Сегмент Мастера. Сегмент Мастера предназначен для имитации ожидания освобождения мастеров, непосредственно времени выполнения соответствующего вида ремонта и отправки выполненной заявки в сегмент учета.

Сегмент построен на четырех объектах queue и четырех объектах delay.

  • 1. Из палитры Презентация перетащите элемент Прямоугольник. Оставьте имя, предложенное системой.
  • 2. На странице Местоположение и размер панели Свойства введите в ноля X: 740, Y: 3 0, Ширина: 2 00, Высота: 410.
  • 3. Перетащите элемент text на прямоугольник и на странице Текст панели Свойства в ноле text введите Мастера.
  • 4. Перетащите указанные объекты из Библиотеки моделирования процессов на агент Main. Разместите их, дайте имена и соедините так, как показано на рис. 7.4.
  • 5. У объектов очМастеров1 — очМастеров4 укажите максимальную вместимость и тин агента Заявка.
  • 6. У объектов мастера1 — мастера4 установите свойства:
    • Тин заявки: Заявка;
    • Тип Определенное время ;
    • Время задержки agent. времяР;
    • • Установите флажок Включить сбор статистики.
Вывод результатов моделирования.

<

Рис. 7.4. Сегменты Диспетчеры и Мастера

  • 7. Свойство Вместимость у этих же объектов укажите колМастеров1 — колМастеров4 соответственно.
  • 8. Действия при выходе установите соответственно:

коэфИспМаст1=мастера1.statsUtilization.mean ();

коэфИспМаст2=мастера2.statsUtilization.mean ();

коэфИспМастЗ=мастераЗ.statsUtilization.mean ();

коэфИспМаст4=мастера4.statsUtilization.mean ();

С выходов 1—3 объекта видРемЗаяв1 заявки сразу поступают в объект очМастеров1 (queue).

С выходов объектов видРемЗаяв2 — видРемЗаяв4 заявки поступают на объекты свобМастер12, свобМастер13, свобМастер14 соответственно. В принятых именах первая цифра означает группу мастеров, а вторая — тин заявки. Эти объекты проверяют условия. Например, объект свобМастер13 проверяет условие:

(очМастеров1.size () == 0).

&& (мастера1.size () < колМастеров1).

8с8с (мастераЗ. size () ≠ 0).

Пуста ли очередь мастеров группы 1? И есть ли свободные мастера группы 1? И заняты ли мастера группы 3? Если сложное условие, состоящее из трех простых условий, выполняется, заявка с выхода true объекта свобМастер13 поступает на объект мастера1.

Аналогичные проверки осуществляются в объектах свобМастер13, свобМастер14.

Если условие не выполняется, то заявка с выходов false поступает в очередь очМастеров2 — очМастеров4 соответственно.

Объекты свобМастер23, свобМастер24 проверяют возможности выполнения в текущий момент времени заявок 3-го и 4-го типов мастерами 2-й группы. Объект свобМастерЗ4 проверяет возможность выполнения заявок 4-го типа мастерами 3-й группы.

Сегмент Учет выполненных заявок. Сегмент предназначен для учета количества выполненных заявок по типам и видам ремонтов, а также для определения вероятности выполнения заявок в целом.

Сегмент построен на пяти объектах selectOutput5 и одном объекте sink.

  • 1. Из палитры Презентация перетащите элемент Прямоугольник. Оставьте имя, предложенное системой.
  • 2. На странице Местоположение и размер панели Свойства введите в поля X: 970, Y: 3 0, Ширина: 2 50, Высота: 410.
  • 3. Перетащите элемент text на прямоугольник и на странице Текст панели Свойства вместо text введите Учет выполненных заявок.
  • 4. Перетащите указанные элементы на прямоугольник. Разместите, соедините и дайте имена согласно рис. 7.5.
  • 5. Свойства элементов установите согласно табл. 7.3.
  • 6. Установите значения свойств объекта sinkl:
    • Тин заявки: Заявка;
    • Действие при входе:

верВыпЗаяв = выпЗаявТип/постЗаявТип.

Сегменты Мастера и Учет выполненных заявок.

Рис. 7.5. Сегменты Мастера и Учет выполненных заявок.

Свойства элементов сегмента Учет выполненных заявок.

Таблица 73

Свойства.

Значение.

Имя.

поТипамЗаяв1.

Использовать.

Условия.

Условие 1.

agent.типЗ==1.

Действия при выходе 1.

выпЗ ая вТип1++; выпЗаявТип++;

верВыпЗаяв1 = выпЗаявТип1/постЗаявТип1;

Условие 2.

agent.типЗ==2.

Действия при выходе 2.

выпЗаявТип2++; выпЗаявТип++;

верВыпЗаяв2 = выпЗаявТип2/постЗаявТип2;

Условие 3.

agent.типЗ==3.

Действия при выходе 3.

выпЗаявТипЗ++; выпЗаявТип++;

верВыпЗаявЗ = выпЗаявТипЗ/постЗаявТипЗ;

Условие 4.

agent.типЗ==4.

Действия при выходе 4.

выпЗаявТип4 + +; выпЗаявТип++;

верВыпЗаяв4 = выпЗаявТип4/постЗаявТип4;

Имя.

выпРемЗаяв1.

Использовать.

Условия.

Свойства.

Значение.

Условие 1.

agent.видР==1.

Действия при выходе 1.

вып РемВида11 + +;

Условие 2.

agent.видР==2.

Действия при выходе 2.

выпРемВида12++;

Условие 3.

agent.видР==3.

Действия при выходе 3.

выпРемВида13++;

Имя.

выпРемЗаяв2.

Использовать.

Условия.

Условие 1.

agent.видР==1.

Действия при выходе 1.

выпРемВида21++;

Условие 2.

agent.видР==2.

Действия при выходе 2.

выпРемВида22++;

Условие 3.

agent.видР==3.

Действия при выходе 3.

выпРемВида23++;

Имя.

выиРемЗаявЗ.

Использовать.

Условия.

Условие 1.

agent.видР==1.

Действия при выходе 1.

вып РемВида 31 + +;

Условие 2.

agent.видР==2.

Действия при выходе 2.

вып РемВида 3 2 + +;

Условие 3.

agent.видР==3.

Действия при выходе 3.

выпРемВидаЗЗ++;

Имя.

выпРемЗаяв4.

Использовать.

Условия.

Условие 1.

agent.видР==1.

Действия при выходе 1.

выпРемВида41++;

Условие 2.

agent.видР==2.

Действия при выходе 2.

выпРемВида4 2 + +;

Условие 3.

agent.видР==3.

Действия при выходе 3.

выпРемВида4 3 + +;

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

Объекты выпРемЗаяв1 — выпРемЗаяв4 учитывают количество видов ремонтов, выполненных по заявкам каждого типа.

Объект sinkl уничтожает поступающие заявки. Введенный в поле Действие при входе код рассчитывает вероятность выполнения всех заявок.

Отладка модели. Построение модели закончено. Выделите в окне Проекты SimulationrMain. На странице Основные установите Фиксированное начальное число (воспроизводимые прогоны) и задайте Начальное число: 892. Перейдите на страницу Модельное время, выберите В заданное время из списка Остановить. Введите Конечное время 1440 (24−60 = 1440).

Запустите модель. Если вы все делали согласно рекомендациям, ошибок не будет.

По завершении работы модели или в ходе ее перейдите на область просмотра Данные_Результаты. Поскольку мы для переключения между областями просмотра ничего не делали, используйте прием, предлагаемый AnyLogic.

Результаты моделирования.

Рис. 7.6. Результаты моделирования.

Результаты моделирования при исходных данных согласно постановке задачи должны быть такими, как показано на рис. 7.6.

Показать весь текст
Заполнить форму текущей работой