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

Модель функционирования сети связи

Блок обработки сообщений

Блок предназначен для имитации обработки сообщений.

Алгоритм работы блока приведен на рис. 4.14.

Алгоритм работы Блока обработки сообщений

Рис. 4.14. Алгоритм работы Блока обработки сообщений

Для реализации алгоритма Блока обработки сообщений в AnyLogic используется объект delay.

  1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  2. На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
  3. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 336, Y: 50, Ширина: 194, Высота: 100.
  4. Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Блок обработки сообщений.
  5. Перетащите объект delay, разместите и соедините с bufer_1 так, как на рис. 4.11.
  6. Выделите объект delay. На странице Основные панели Свойства в поле Имя: вместо delay введите сomputer.
  7. В поле Класс заявки: Entity замените Message.
  8. Задержка задаётся установите Явно.
  9. В поле Время задержки введите:
    exponential(1/entity.timeObr)
  10. Оставьте Вместимость 1.
  11. Действие при входе entity.timeObr= entity.dlina/proizvod;
  12. Установите флажок Включить сбор статистики.
  13. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  14. На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
  15. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 20, Y: 40, Ширина: 520, Высота: 170.
  16. Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Вычислительный комплекс.
Блок контроля 2

Блок контроля 2 предназначен для распределения сообщений по направлениям и контроля текущих ёмкостей буферов (накопителей) направлений передачи сообщений.

Алгоритм работы Блока контроля 2 приведен на рис. 4.15.

Вначале определяется номер направления, по которому должно быть передано поступившее сообщение.

Алгоритм работы блока Блок контроля 2

увеличить изображение
Рис. 4.15. Алгоритм работы блока Блок контроля 2

Затем определяется наличие достаточной свободной памяти в буфере этого направления. При отсутствии нужного объёма памяти сообщение теряется.

Для распределения сообщений по направлениям можно было бы использовать объекты selectOutput5 и sink. Однако мы используем другие объекты AnyLogic: exit и enter. Они позволяют организовать сложную маршрутизацию, вследствие чего на рис. 4.11 Блок контроля 2 не выделен, хотя функционально он существует.

  1. Перетащите объект exit, вход которого соедините с выходом computer (рис. 4.10).
  2. В поле Класс заявки: Entity замените Message.
  3. В поле Действие при выходе введите код:
    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.

  1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник (см. рис. 4.11).
  2. На странице Основные панели Свойства в поле Имя: оставьте Rectangle. Не устанавливайте флажок Отображать имя.
  3. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 550, Y: 20, Ширина: 140, Высота: 290.
  4. Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Буфер 2.
  5. Перетащите пять объектов enter, четыре объекта queue и один объект sink, разместите, дайте имена и соедините так, как на рис. 4.11.
  6. Выделите элемент buferNapr1, вход которого соединён с выходом enter1 и установите значения свойств.
  7. В поле Класс заявки: Entity замените Message.
  8. Вместимость emkBuferNapr1
  9. В поле Действие при входе введите:
    tekEmkNapr1 += entity.dlina;
  10. В поле Действие при выходе введите:
    tekEmkNapr1 -= entity.dlina;
  11. Установите флажок Включить сбор статистики.
  12. Выделите элемент buferNapr2, вход которого соединен с выходом enter2 и установите значения свойств.
  13. В поле Класс заявки: Entity замените Message.
  14. Вместимость emkBuferNapr2
  15. В поле Действие при входе введите:
    tekEmkNapr2 += entity.dlina;
  16. В поле Действие при выходе введите:
    tekEmkNapr2 -= entity.dlina;
  17. Установите флажок Включить сбор статистики.
  18. Выделите элемент buferNapr3, вход которого соединен с выходом enter3 и установите значения свойств.
  19. В поле Класс заявки: Entity замените Message.
  20. Вместимость emkBuferNapr3
  21. В поле Действие при входе введите:
    tekEmkNapr3 += entity.dlina;
  22. В поле Действие при выходе введите:
    tekEmkNapr3 -= entity.dlina;
  23. Установите флажок Включить сбор статистики.
  24. Выделите элемент buferNapr4, вход которого соединен с выходом enter4 и установите значения свойств.
  25. В поле Класс заявки: Entity замените Message.
  26. Вместимость emkBuferNapr4
  27. В поле Действие при входе введите:
    tekEmkNapr4 += entity.dlina;
  28. В поле Действие при выходе введите:
    tekEmkNapr4 -= entity.dlina;
  29. Установите флажок Включить сбор статистики.
Организация входных и выходных портов

Также как и для источника сообщений, для маршрутизатора нужно создать выходы, через которые отправлять сообщения, и входы, по которым получать сообщения. Создайте эти входы и выходы.

  1. Перетащите элемент Скруглённый прямоугольник.
  2. На странице Дополнительные панели Свойства введите в поля X: 536, Y: 340, Ширина: 83, Высота: 110.
  3. Из палитры Основная перетащите восемь элементов Порт. Разместите их как на рис. 4.11. В полях Имя: предложенные системой имена замените согласно рис. 4.11. Установите флажки Отображать имя.
  4. Обратите также внимание на то, чтобы у элементов Скруглённый прямоугольник и Порт был установлен флажок На верхнем уровне. У остальных элементов сегмента Маршрутизатор этот флажок должен быть сброшенным.
  5. Соедините выходы элементов buferNapr1… buferNapr4 с соответствующими портами вых1… вых4, а порты вх1… вх4 - с входом элемента blokKontrol_1 (Блок контроля 1).
Имитатор отказов вычислительного комплекса

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

  1. Перетащите элемент Прямоугольник.
  2. На странице Дополнительные панели Свойства введите в поля X: 160, Y: 224, Ширина: 340, Высота: 140.
  3. Перетащите объект source и два объекта delay. Разместите и соедините их как на рис. 4.11.
  4. Выделите source и установите значения его свойств:
    • Заявки прибывают согласно Интенсивности
    • Интенсивность прибытия 1
    • Количество заявок, прибывающих за один раз 1
    • Ограниченное количество прибытий 1
    • Максимальное количество прибытий 1
  5. Выделите первый объект delay и установите значения его свойств:
    • Имя: розыгрыш_инт_до_отказа
    • Задержка задаётся Явно
    • Время задержки exponential(1/timeOtkBK)
    • Вместимость 1
    • Действие при выходе
      hold.setBlocked(true);
      if (computer.size()!=0) {
      computer.remove((Message)computer.get(0));
      kolPoterBK ++;}
  6. Выделите второй объект delay и установите значения его свойств:
    • Имя: имитация_восст_ВК
    • Задержка задаётся Явно
    • Время задержки exponential(1/timeVosstBK)
    • Вместимость 1
    • Действие при выходе
      hold.setBlocked(false)

Сегмент Канал

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

Для его реализации в AnyLogic используется имитационная модель направления связи ( "Модель процесса изготовления в цехе деталей" ), которое состоит из основного и резервного каналов.

Исходные данные
  1. Откройте объект Канал. Перейдите на область просмотра viewData.
  2. Перетащите элемент Скруглённый прямоугольник.
  3. На странице Дополнительные панели Свойства введите в поля X: 10, Y: 752, Ширина: 377, Высота: 118.
  4. Перетащите элементы Параметр и Простая переменная, разместите и дайте им имена согласно рис. 4.16.
  5. Типы и значения по умолчанию установите согласно табл. 4.8.
Таблица 4.8.
Имя Тип Значение по умолчанию
skorPeredKan double 5000
skorPeredKanR double 5000
timeOtkKan double 360
timeVosstKan double 3,2
timeBklResK double 0,1
всего_потеряно_сообщ int 0
Алексей Гроссман
Алексей Гроссман

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

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