- •Глава 1. Модель обработки запросов сервером
- •1.1. Постановка задачи
- •1.2. Создание диаграммы процесса
- •1.3. Изменение свойств блоков модели, её настройка и запуск
- •1.3.1. Изменение свойств блоков диаграммы процесса
- •1.3.2. Настройка запуска модели
- •1.3.3. Запуск модели
- •1.4. Создание анимации модели
- •1.5. Сбор статистики использования ресурсов
- •1.6. Уточнение модели согласно ёмкости входного буфера
- •1.7. Сбор статистики по показателям обработки запросов
- •1.7.1. Создание нестандартного Java класса
- •1.7.2. Добавление элементов статистики
- •1.7.3. Изменение свойств объектов диаграммы
- •1.7.4. Удаление и добавление новых полей типа заявок
- •1.8. Добавление параметров и элементов управления
- •1.9. Добавление гистограмм
- •1.10. Изменение времени обработки запросов сервером
- •1.11. Интерпретация результатов моделирования
- •Глава 2. Модель процесса изготовления в цехе деталей
- •2.1. Постановка задачи
- •2.1.1. Исходные данные
- •2.1.2. Задание на исследование
- •2.1.3. Уяснение задачи на исследование
- •2.2. Модель в AnyLogic
- •2.2.1. Исходные данные. Использование массивов
- •2.2.2. Построение событийной части модели
- •2.2.2.1. Подготовка заготовки
- •2.2.2.2. Сегменты Операция 1, Операция 2, Операция 3
- •2.2.2.3. Создание нового активного объекта
- •2.2.2.4. Создание экземпляра нового типа агента
- •2.2.2.5. Создание области просмотра
- •2.2.2.6. Переключение между областями просмотра
- •2.2.2.7. Пункт окончательного контроля
- •2.2.2.8. Склад готовых деталей. Вывод результатов моделирования
- •2.2.2.9. Склад бракованных деталей. Вывод результатов моделирования
- •2.2.3. Добавление элементов для проведения исследований
- •2.3. Интерпретация результатов моделирования
- •Глава 3. Модель функционирования направления связи
- •3.1. Постановка задачи
- •3.2. Уяснение задачи на разработку модели
- •3.3. Модель направления связи в AnyLogic
- •3.3.1. Исходные данные
- •3.3.2. Вывод результатов моделирования
- •3.3.3. Построение событийной части модели
- •3.3.3.1. Источники сообщений
- •3.3.3.2. Буфер, основной и резервный каналы
- •3.3.3.3. Имитатор отказов основного канала связи
- •3.4. Отладка модели
- •3.5. Интерпретация результатов моделирования
- •Глава 4. Модель функционирования сети связи
- •4.1. Модель в AnyLogic
- •4.1.1. Постановка задачи
- •4.1.2. Исходные данные
- •4.1.3. Задание на исследование
- •4.1.4. Формализованное описание модели
- •4.1.5. Создание новых типов агентов
- •4.1.6. Создание областей просмотра
- •4.1.7. Сегмент Абонент
- •4.1.7.1. Исходные данные
- •4.1.7.2. Результаты моделирования по каждому абоненту
- •4.1.7.3. Показатели качества обслуживания сети связи
- •4.1.7.4. Построение событийной части сегмента
- •4.1.8. Сегмент Маршрутизатор
- •4.1.8.1. Исходные данные
- •4.1.8.2. Событийная часть сегмента Маршрутизатор
- •4.1.8.2.1. Блок контроля 1
- •4.1.8.2.2. Блок Буфер 1
- •4.1.8.2.3. Блок обработки сообщений
- •4.1.8.2.4. Блок контроля 2
- •4.1.8.2.5. Блок Буфер 2
- •4.1.8.2.6. Организация входных и выходных портов
- •4.1.8.2.7. Имитатор отказов вычислительного комплекса
- •4.1.9. Сегмент Канал
- •4.1.9.1. Исходные данные
- •4.1.9.2. Событийная часть сегмента Каналы
- •4.1.9.3. Организация входного и выходного портов
- •4.1.9.4. Имитатор отказов каналов связи
- •4.1.10. Построение модели сети связи
- •4.1.11. Переключение между областями просмотра
- •4.1.12. Запуск и отладка модели
- •4.2. Интерпретация результатов моделирования
- •ГЛАВА 5. Модель функционирования системы связи
- •5.1. Модель в AnyLogic
- •5.1.1. Постановка задачи
- •5.1.2. Задание на исследование
- •5.1.3. Формализованное описание модели
- •5.1.4. Сегмент Постановка на дежурство
- •5.1.4.1. Ввод исходных данных
- •5.1.4.2. Имитация поступления средств связи
- •5.1.4.3. Распределитель средств связи
- •5.1.4.4. Создание нового активного объекта
- •5.1.4.5. Создание экземпляра нового типа агента
- •5.1.5. Сегмент Имитация дежурства
- •5.1.5.1. Ввод исходных данных
- •5.1.5.2. Вывод результатов моделирования
- •5.1.5.3. Событийная часть сегмента Имитация дежурства
- •5.1.6. Сегмент Статистика
- •5.1.6.1. Использование элемента Текстовое поле
- •5.1.6.2. Использование элемента Диаграмма
- •5.1.7. Использование способа Событие
- •5.1.8. Переключение между областями просмотра
- •5.1.9. Отладка модели
- •5.1.10. Проведение экспериментов
- •5.1.10.1. Простой эксперимент
- •5.1.10.2. Связывание параметров
- •5.1.10.3. Первый эксперимент Оптимизация стохастических моделей
- •5.1.10.5. Второй эксперимент Оптимизация стохастических моделей
- •5.1.10.6. Эксперимент Варьирование параметров
- •5.2. Интерпретация результатов моделирования
- •Глава 6. Модель функционирования Предприятия
- •6.1. Постановка задачи
- •6.1.1. Исходные данные
- •6.1.2. Задание на исследование
- •6.1.3. Уяснение задачи на исследование
- •6.2. Модель в AnyLogic
- •6.2.1. Формализованное описание
- •6.2.2. Ввод исходных данных
- •6.2.3. Вывод результатов моделирования
- •6.2.4. Построение событийной части модели
- •6.2.4.1. Имитация работы цехов предприятия
- •6.2.4.2. Имитация работы постов контроля блоков
- •6.2.4.3. Имитация работы пунктов сборки изделий
- •6.2.4.4. Имитация работы стендов контроля изделий
- •6.2.4.5. Имитация работы пунктов приёма изделий
- •6.2.4.6. Имитация склада готовых изделий
- •6.2.4.7. Имитация склада бракованных блоков
- •6.2.4.8. Организация перек между областями просмотра
- •6.3. Интерпретация результатов моделирования
- •Глава 7. Модель функционирования терминала
- •7.1. Постановка задачи
- •7.2. Модель в AnyLogic
- •7.2.1. Исходные данные и результаты моделирования
- •7.2.2. Событийная часть модели
- •7.2.3. Результаты моделирования
- •7.3. Эксперименты
- •7.3.1. Первый оптимизационный эксперимент в AnyLogic
- •7.3.2. Второй оптимизационный эксперимент в AnyLogic
- •7.4. Интерпретация результатов экспериментов
- •ГЛАВА 8. Модель предоставления ремонтных услуг
- •8.1. Постановка задачи
- •8.1.1. Исходные данные
- •8.1.2. Задание на исследование
- •8.1.3. Формализованное описание модели
- •8.2. Модель в AnyLogic
- •8.2.1. Ввод исходных данных
- •8.2.2. Вывод результатов моделирования
- •8.2.3. Построение событийной части модели
- •8.2.3.1. Сегмент Источники заявок
- •8.2.3.2. Сегмент Диспетчеры
- •8.2.3.3. Сегмент Мастера
- •8.2.3.4. Сегмент Учёт выполненных заявок
- •8.2.3.5. Отладка модели
- •8.3. Интерпретация результатов моделирования
- •Глава 9. Модель функционирования системы воздушных перевозок
- •9.1. Модель в AnyLogic
- •9.1.1. Постановка задачи
- •9.1.2. Исходные данные
- •9.1.3. Задание на исследование
- •9.1.4. Формализованное описание модели
- •9.1.5. Создание областей просмотра
- •9.1.6. Ввод исходных данных
- •9.1.7. Вывод результатов моделирования
- •9.1.8. Имитация функционирования аэропорта 1
- •9.1.8.1. Прибытие самолётов в аэропорт 1. Ожидание погрузки
- •9.1.8.2. Поступление и учёт контейнеров в аэропорту 1
- •9.1.8.3. Погрузка контейнеров в аэропорту 1
- •9.1.8.4. Полёт из аэропорта 1 в аэропорт 2
- •9.1.8.5. Ожидание разгрузки в аэропорту 1
- •9.1.8.6. Разгрузка самолётов в аэропорту 1
- •9.1.9. Имитация функционирования аэропорта 2
- •9.1.9.1. Поступление и учёт контейнеров в аэропорту 2
- •9.1.9.2. Ожидание разгрузки в аэропорту 2
- •9.1.9.3. Разгрузка самолётов в аэропорту 2
- •9.1.9.4. Ожидание погрузки в аэропорту 2
- •9.1.9.5. Погрузка контейнеров в аэропорту 2
- •9.1.9.6. Полёт из аэропорта 2 в аэропорт 1
- •9.1.9.7. Вывод результатов моделирования с использованием способа Событие
- •9.1.10. Запуск и отладка модели
- •10.1. Постановка задачи
- •10.2. Аналитическое решение задачи
- •10.3. Решение задачи в AnyLogic
- •10.4. Решение задачи в GPSS World
- •Глава 11. Решение обратных задач в AnyLogic
- •11.1. Определение среднего времени обработки группы запросов сервером
- •11.2. Определение среднего времени изготовления деталей
- •Глава 12. Задания на проектирование
- •Заключение
- •Список литературы
- •Приложение 1
- •ПРИЛОЖЕНИЕ 2
- •ПРИЛОЖЕНИЕ 3
4.1.8.2.2. Блок Буфер 1
Блок Буфер 1 предназначен для приема, размещения и хранения поступающих на обработку сообщений.
Алгоритм работы блока Буфер 1 приведен на рис. 4.13.
В AnyLogic алгоритм блока Буфер 1 реализуется объектом queue, который выполняет функции очереди (FIFO).
1.В Палитре выделите Презентация. Перетащите элемент
Прямоугольник.
2.На странице Местоположение и размер панели Свойства
введите в поля X: 190, Y: 50, Ширина: 126, Высота: 100.
3.На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не ставьте флажок Отображать имя.
4.Перетащите элемент text и на странице Текст панели Свойства вместо text введите Буфер 1.
Рис. 4.13. Алгоритм работы блока Буфер 1
147
5.Выделите объект queue.
6.В поле Имя: вместо queue введите bufer1.
7.В поле Тип заявки: Agent замените Message.
8.В поле Вместимость введите emkBufer1.
9.При помещении сообщения в буфер его текущая емкость увеличивается, поэтому в поле Действия При входе введите:
tekEmkBufer1 += entity.dlina;
10. При выходе сообщения из буфера его текущая емкость уменьшается, поэтому в поле Действия При выходе введите:
tekEmkBufer1 -= entity.dlina; entity.timeObr=entity.dlina/proizvod;
11. Поставьте флажок Включить сбор статистики.
4.1.8.2.3. Блок обработки сообщений
Блок предназначен для имитации обработки сообщений. Алгоритм работы блока приведен на рис. 4.14.
Рис. 4.14. Алгоритм работы Блока обработки сообщений
148
Для реализации алгоритма Блока обработки сообщений в AnyLogic используется объект delay.
1.В Палитре выделите Презентация. Перетащите элемент
Прямоугольник.
2.На странице Основные панели Свойства в поле Имя:
оставьте Rectangle. Также не устанавливайте флажок Отобра-
жать имя.
3.На странице Местоположение и размер панели Свойства
введите в поля X: 336, Y: 50, Ширина: 194, Высота: 100.
4.Перетащите элемент text и на странице Текст панели Свойства вместо text введите название Блок обработки со-
общений.
5.Перетащите объект delay, разместите и соедините с bufer_1 так, как на рис. 4.11.
6.Выделите объект delay. На странице Основные панели
Свойства в поле Имя: вместо delay введите сomputer.
7.В поле Тип заявки: Agent замените Message.
8.Задержка задаётся установите Определённое время.
9.В поле Время задержки введите: exponential(1/entity.timeObr)
10.Оставьте Вместимость 1.
11.Действие при выходе
коэфЗагрВК1=computer.statsUtilization.mean();
12.Установите флажок Включить сбор статистики.
13.В Палитре выделите Презентация. Перетащите элемент
Прямоугольник.
14.На странице Основные панели Свойства в поле Имя:
оставьте Rectangle. Не ставьте флажок Отображать имя.
15. На странице Местоположение и размер панели Свойства
введите в поля X: 20, Y: 40, Ширина: 520, Высота: 170.
16. Перетащите элемент text и на странице Текст панели Свойства вместо слова text введите название Вычислительный комплекс.
4.1.8.2.4. Блок контроля 2
Блок контроля 2 предназначен для распределения сообщений по направлениям и контроля текущих ёмкостей буферов (накопителей) направлений передачи сообщений.
Алгоритм работы Блока контроля 2 приведен на рис. 4.15.
149
Рис. 4.15. Алгоритм работы блока Блок контроля 2
Вначале определяется номер направления, по которому должно быть передано поступившее сообщение. Затем определяется наличие достаточной свободной памяти в буфере этого направления. При отсутствии нужного объёма памяти сообщение теряется.
Для распределения сообщений по направлениям можно было бы использовать объекты selectOutput5 и sink. Однако мы используем другие объекты AnyLogic: exit и enter. Они позволяют организовать сложную маршрутизацию, вследствие чего на рис.4.11 Блок контроля 2 не выделен, хотя функционально он существует.
1.Перетащите объект exit, вход которого соедините с выхо-
дом computer (рис. 4.10).
2.В поле Тип заявки: Agent замените Message.
3.В поле Действия При выходе введите код:
int i; i=entity.numIstPol;
{
switch (i)
{
case 1:if (emkBuferNapr1tekEmkNapr1>=entity.dlina) {
enter1.take(entity);
150
break;}
else {enter.take(entity); break;}
case 2:if (emkBuferNapr1tekEmkNapr1>=entity.dlina) {
enter1.take(entity); break;}
else {enter.take(entity); break;}
case 3:if (emkBuferNapr2tekEmkNapr2>=entity.dlina) {
enter2.take(entity); break;}
else {enter.take(entity); break;}
case 4:if (emkBuferNapr2tekEmkNapr2>=entity.dlina) {
enter2.take(entity); break;}
else {enter.take(entity); break;}
case 5:if (emkBuferNapr3tekEmkNapr3>=entity.dlina) {
enter3.take(entity); break;}
else {enter.take(entity); break;}
case 6:if (emkBuferNapr4tekEmkNapr4>=entity.dlina) {
enter4.take(entity); break;}
else {enter.take(entity); break;}
}
}
Маршрутизатор настраивается определённым образом, например, таблицей маршрутизации. В данном случае он настраивается программным путём так, что сообщения первого и второго отправителей передаются по первому направлению, третьего и четвёртого отправителей — по второму направлению, пятого отправителя — по третьему и шестого отправителя — по четвёртому направлению. Такой вариант принят с учётом построения в дальнейшем сети связи (см. рис. 4.1).
151