Опубликован: 15.02.2013 | Уровень: для всех | Доступ: платный
Лекция 2:

Модель обработки запросов сервером

Добавление параметров и элементов управления

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

Создайте параметр time_mean объекта delay.

  1. В Палитре выделите Основная.
  2. Перетащите элемент Параметр на диаграмму класса Main и разместите сверху объекта delay, чтобы было видно, к какому объекту относится параметр.
  3. Перейдите на страницу Основные панели Свойства (Рис. 1.52).
    Окно установки свойств элемента Параметр

    Рис. 1.52. Окно установки свойств элемента Параметр
  4. В поле Имя введите имя параметра time_mean (среднее время). По этому имени параметр будет доступен из кода.
  5. Задайте тип параметра double.
  6. В поле Значение по умолчанию установите 180. Если значение не будет задано явно, то по правилам Java оно будет равно нулю.
  7. Выделите объект delay.
  8. На странице Основные панели Свойства в поле Время задержки вместо выражения exponential(1/180.0) введите exponential(1/time_mean).

Пусть вы хотите изменять среднее время обработки запросов time_mean в ходе моделирования. Используйте для этого элемент управления - бегунок.

  1. Откройте палитру Элементы управления и перетащите элемент Бегунок из палитры на диаграмму класса Main (Рис. 1.54).
  2. Поместите бегунок под параметром time_mean, чтобы было понятно, что с помощью этого бегунка будет меняться среднее время обработки запросов объектом delay.
  3. Пусть вы хотите варьировать среднее время от 1 до 300. Поэтому введите 1 в поле Минимальное значение, а 300 - в поле Максимальное значение (Рис. 1.53).
  4. Установите флажок Связать с: и в активизированное поле введите time_mean.
    Окно установки свойств элемента управления Бегунок

    Рис. 1.53. Окно установки свойств элемента управления Бегунок

Пусть теперь вы хотите также изменять ёмкость буфера в ходе моделирования. Используйте для этого также бегунок.

  1. Откройте палитру Элементы управления и перетащите элемент Бегунок из палитры на диаграмму класса Main (Рис. 1.54).
    На диаграмму добавлены Параметр и элементы управления

    Рис. 1.54. На диаграмму добавлены Параметр и элементы управления
  2. Поместите бегунок над объектом queue, чтобы было понятно, что с помощью этого бегунка будет меняться вместимость данного объекта, имитирующего входной буфер.
  3. Пусть вы хотите варьировать ёмкость буфера от 0 до 15 запросов. Поэтому введите 15 в поле Максимальное значение.
  4. Установите флажок Связать с: и в активизированное поле введите queue.capacity.
  5. Запустите модель. Теперь вы можете изменять в процессе моделирования емкость входного буфера и среднее время обработки запросов с помощью бегунков. Можете также командой Приостановить приостановить работу модели, изменить значения параметров, а затем продолжить моделирование.
  6. Остановите модель и перейдите на диаграмму класса Main.

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

    Существует и другой способ изменения значения характеристик во время выполнения модели: нужно щёлкнуть по элементу, и ввести новое значение в одной из закладок всплывающего окна инспекта. Поэтому заранее не нужно продумывать, значения каких параметров планируется изменять, и не добавлять специальные элементы управления (например, бегунки).

    Изменение значения в окне инспекта поддерживается для следующих элементов:

    • простая переменная;
    • параметр;
    • накопитель.

    И для следующих типов:

    • численные;
    • логический (boolean);
    • текстовый (String).
  7. Удалите элемент Бегунок для Параметра time_mean.
  8. Запустите модель и приостановите её.
  9. Щелкните по значку Параметра time_mean.
  10. Перейдите в режим редактирования (Рис. 1.55).
  11. Введите новое значение: 240.0.
    Ввод нового значения параметра в окно инспекта

    Рис. 1.55. Ввод нового значения параметра в окно инспекта

Добавление гистограмм

Теперь добавим на диаграмму нашего потока гистограмму, которая будет отображать собранную временную статистику.

  1. Перетащите элемент Гистограмма из палитры Статистика в то место графического редактора, куда хотите ее поместить.
  2. Укажите, какой элемент сбора данных хранит данные, которые вы хотите отображать на гистограмме: щелкните мышью кнопку Добавить данные и введите в поле Данные имя соответствующего элемента: time_obrabotki (Рис. 1.56). Установите Отображать среднее.
  3. В поле Заголовок: введите Histogram Time obrabotki.
  4. Запустите модель. Фрагмент работы показан на рис. 1.57.
Замечание. Обратите внимание, что после нового запуска модели time_mean=180, хотя ранее мы изменили его значение на 240.

Изменение времени обработки запросов сервером

Построенная модель соответствует постановке задачи (п. 1.2.1). В ней, с целью упрощения процесса построения первой модели, время обработки запросов сервером было принято распределённым по показательному (экспоненциальному) закону со средним значением T2 = 3 мин.

Окно установки свойств элемента Гистограмма

Рис. 1.56. Окно установки свойств элемента Гистограмма
Фрагмент работы модели с элементом управления и гистограммой

Рис. 1.57. Фрагмент работы модели с элементом управления и гистограммой

Однако в модели, реализованной средствами GPSS World (п. 1.1), время обработки поступающих запросов зависит от производительности сервера Q = 6\cdot10^5\text{ оп/с} и вычислительной сложности запросов, распределенной по нормальному закону с математическим ожиданием S1=6\cdot10^7\text{ оп} и среднеквадратическим отклонением S2=2\cdot10^5\text{ оп}

VrObr  VARIABLE  (Normal(2,(S1_#Koef),(S2_#Koef)))/Q

Кроме того, в этой модели определяется среднее количество запросов, обработанных за время моделирования 3600 с.

Внесите в модель изменения для аналогичного расчёта времени обработки запросов.

  1. Удалите элемент Параметр с именем time_mean.
  2. Из палитры Основная перетащите три элемента Параметр на диаграмму класса Main (Рис. 1.58).
  3. В поле Имя каждого из элементов введите S1_, S2_ и Q_ соответственно.
  4. Выберите Тип double.
  5. В поле Значение по умолчанию каждого из элементов введите 60000000, 200000 и 600000 соответственно.
  6. Перетащите элемент Простая переменная.
  7. В поле Имя укажите KolZap.
  8. Выделите объект delay.
  9. В поле Время задержки вместо exponential(1/time_mean) введите: (normal(S2_,S1_))/Q_
  10. Выделите объект sink. В поле Действие при входе к имеющемуся там коду добавьте код:
    KolZap=sink.in.count()/9604.0;

    В GPSS-модели количество прогонов равнялось 9604. Увеличим время моделирования в AnyLogic-модели в 9604 раз. А так как статистические данные о количестве обработанных запросов собираются за всё время моделирования, увеличенное в 9604 раз, то для получения среднего значения это количество нужно разделить на 9604, что и предусмотрено в коде.

  11. Показатели моделируемой системы нужно определить в течение 3600 с, поэтому время моделирования в AnyLogic составит 34574400 единиц.
  12. В панели Проект выделите Simulation. На странице Модельное время в поле Установить выберите В заданное время.
  13. В поле Конечное время установите 34574400.
  14. Запустите модель и дождитесь окончания моделирования.

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

Элементы AnyLogic-модели, соответствующие постановке GPSS-модели

Рис. 1.58. Элементы AnyLogic-модели, соответствующие постановке GPSS-модели
Результаты моделирования обработки данных сервером

Рис. 1.59. Результаты моделирования обработки данных сервером
Алексей Гроссман
Алексей Гроссман

Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио.

Елена Блинаева
Елена Блинаева