Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования сети связи
Блок обработки сообщений
Блок предназначен для имитации обработки сообщений.
Алгоритм работы блока приведен на рис. 4.14.
Для реализации алгоритма Блока обработки сообщений в AnyLogic используется объект delay.
- В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
- На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 336, Y: 50, Ширина: 194, Высота: 100.
- Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Блок обработки сообщений.
- Перетащите объект delay, разместите и соедините с bufer_1 так, как на рис. 4.11.
- Выделите объект delay. На странице Основные панели Свойства в поле Имя: вместо delay введите сomputer.
- В поле Класс заявки: Entity замените Message.
- Задержка задаётся установите Явно.
- В поле Время задержки введите:
exponential(1/entity.timeObr)
- Оставьте Вместимость 1.
- Действие при входе entity.timeObr= entity.dlina/proizvod;
- Установите флажок Включить сбор статистики.
- В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
- На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 20, Y: 40, Ширина: 520, Высота: 170.
- Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Вычислительный комплекс.
Блок контроля 2
Блок контроля 2 предназначен для распределения сообщений по направлениям и контроля текущих ёмкостей буферов (накопителей) направлений передачи сообщений.
Алгоритм работы Блока контроля 2 приведен на рис. 4.15.
Вначале определяется номер направления, по которому должно быть передано поступившее сообщение.
Затем определяется наличие достаточной свободной памяти в буфере этого направления. При отсутствии нужного объёма памяти сообщение теряется.
Для распределения сообщений по направлениям можно было бы использовать объекты selectOutput5 и sink. Однако мы используем другие объекты AnyLogic: exit и enter. Они позволяют организовать сложную маршрутизацию, вследствие чего на рис. 4.11 Блок контроля 2 не выделен, хотя функционально он существует.
- Перетащите объект exit, вход которого соедините с выходом computer (рис. 4.10).
- В поле Класс заявки: Entity замените Message.
- В поле Действие при выходе введите код:
int i; i=entity.numIstPol; { switch (i) { case 1:if (emkBuferNapr1-tekEmkNapr1>=entity.dlina) { enter1.take(entity); break;} else {enter.take(entity); break;} case 2:if (emkBuferNapr1-tekEmkNapr1>=entity.dlina) { enter1.take(entity); break;} else {enter.take(entity); break;} case 3:if (emkBuferNapr2-tekEmkNapr2>=entity.dlina) { enter2.take(entity); break;} else {enter.take(entity); break;} case 4:if (emkBuferNapr2-tekEmkNapr2>=entity.dlina) { enter2.take(entity); break;} else {enter.take(entity); break;} case 5:if (emkBuferNapr3-tekEmkNapr3>=entity.dlina) { enter3.take(entity); break;} else {enter.take(entity); break;} case 6:if (emkBuferNapr4-tekEmkNapr4>=entity.dlina) { enter4.take(entity); break;} else {enter.take(entity); break;} } }
Маршрутизатор настраивается определённым образом, например, таблицей маршрутизации. В данном случае он настраивается программным путём так, что сообщения первого и второго отправителей передаются по первому направлению, третьего и четвёртого отправителей - по второму направлению, пятого отправителя - по третьему и шестого отправителя - по четвёртому направлению. Такой вариант принят с учётом построения в дальнейшем сети связи (см. рис. 4.1).
Блок Буфер 2
Блок Буфер 2 предназначен для приема и хранения сообщений, передаваемых по каналам направлений. Он состоит из четырёх буферов - для каждого направления свой буфер.
Алгоритм работы буфера каждого из направлений такой же, как и алгоритм работы буфера 1 (см. рис. 4.13).
Реализуется каждый из буферов также объектом queue.
- В Палитре выделите Презентация. Перетащите элемент Прямоугольник (см. рис. 4.11).
- На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 550, Y: 20, Ширина: 140, Высота: 290.
- Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Буфер 2.
- Перетащите пять объектов enter, четыре объекта queue и один объект sink, разместите, дайте имена и соедините так, как на рис. 4.11.
- Выделите элемент buferNapr1, вход которого соединён с выходом enter1 и установите значения свойств.
- В поле Класс заявки: Entity замените Message.
- Вместимость emkBuferNapr1
- В поле Действие при входе введите:
tekEmkNapr1 += entity.dlina;
- В поле Действие при выходе введите:
tekEmkNapr1 -= entity.dlina;
- Установите флажок Включить сбор статистики.
- Выделите элемент buferNapr2, вход которого соединен с выходом enter2 и установите значения свойств.
- В поле Класс заявки: Entity замените Message.
- Вместимость emkBuferNapr2
- В поле Действие при входе введите:
tekEmkNapr2 += entity.dlina;
- В поле Действие при выходе введите:
tekEmkNapr2 -= entity.dlina;
- Установите флажок Включить сбор статистики.
- Выделите элемент buferNapr3, вход которого соединен с выходом enter3 и установите значения свойств.
- В поле Класс заявки: Entity замените Message.
- Вместимость emkBuferNapr3
- В поле Действие при входе введите:
tekEmkNapr3 += entity.dlina;
- В поле Действие при выходе введите:
tekEmkNapr3 -= entity.dlina;
- Установите флажок Включить сбор статистики.
- Выделите элемент buferNapr4, вход которого соединен с выходом enter4 и установите значения свойств.
- В поле Класс заявки: Entity замените Message.
- Вместимость emkBuferNapr4
- В поле Действие при входе введите:
tekEmkNapr4 += entity.dlina;
- В поле Действие при выходе введите:
tekEmkNapr4 -= entity.dlina;
- Установите флажок Включить сбор статистики.
Организация входных и выходных портов
Также как и для источника сообщений, для маршрутизатора нужно создать выходы, через которые отправлять сообщения, и входы, по которым получать сообщения. Создайте эти входы и выходы.
- Перетащите элемент Скруглённый прямоугольник.
- На странице Дополнительные панели Свойства введите в поля X: 536, Y: 340, Ширина: 83, Высота: 110.
- Из палитры Основная перетащите восемь элементов Порт. Разместите их как на рис. 4.11. В полях Имя: предложенные системой имена замените согласно рис. 4.11. Установите флажки Отображать имя.
- Обратите также внимание на то, чтобы у элементов Скруглённый прямоугольник и Порт был установлен флажок На верхнем уровне. У остальных элементов сегмента Маршрутизатор этот флажок должен быть сброшенным.
- Соедините выходы элементов buferNapr1… buferNapr4 с соответствующими портами вых1… вых4, а порты вх1… вх4 - с входом элемента blokKontrol_1 (Блок контроля 1).
Имитатор отказов вычислительного комплекса
Принято, что вычислительный комплекс может выходить из строя и отказывать в обработке сообщений. Можно было бы построить имитатор отказов так, что генератор вырабатывает заявки-отказы в количестве, определяемом длительностью времени моделирования. Однако мы сделаем так, что генератор вырабатывает одну заявку, а затем этот процесс повторяется через интервалы времени, равные наработке до очередного отказа.
- Перетащите элемент Прямоугольник.
- На странице Дополнительные панели Свойства введите в поля X: 160, Y: 224, Ширина: 340, Высота: 140.
- Перетащите объект source и два объекта delay. Разместите и соедините их как на рис. 4.11.
- Выделите source и установите значения его свойств:
- Заявки прибывают согласно Интенсивности
- Интенсивность прибытия 1
- Количество заявок, прибывающих за один раз 1
- Ограниченное количество прибытий 1
- Максимальное количество прибытий 1
- Выделите первый объект delay и установите значения его свойств:
- Имя: розыгрыш_инт_до_отказа
- Задержка задаётся Явно
- Время задержки exponential(1/timeOtkBK)
- Вместимость 1
- Действие при выходе
hold.setBlocked(true); if (computer.size()!=0) { computer.remove((Message)computer.get(0)); kolPoterBK ++;}
- Выделите второй объект delay и установите значения его свойств:
- Имя: имитация_восст_ВК
- Задержка задаётся Явно
- Время задержки exponential(1/timeVosstBK)
- Вместимость 1
- Действие при выходе
hold.setBlocked(false)
Сегмент Канал
Данный сегмент предназначен для имитации передачи сообщений по каналам связи.
Для его реализации в AnyLogic используется имитационная модель направления связи ( "Модель процесса изготовления в цехе деталей" ), которое состоит из основного и резервного каналов.
Исходные данные
- Откройте объект Канал. Перейдите на область просмотра viewData.
- Перетащите элемент Скруглённый прямоугольник.
- На странице Дополнительные панели Свойства введите в поля X: 10, Y: 752, Ширина: 377, Высота: 118.
- Перетащите элементы Параметр и Простая переменная, разместите и дайте им имена согласно рис. 4.16.
- Типы и значения по умолчанию установите согласно табл. 4.8.