Опубликован: 15.02.2013 | Доступ: свободный | Студентов: 257 / 0 | Длительность: 16:52:00
ISBN: 978-5-9556-0146-5
Лекция 6:

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

Сегмент Постановка на дежурство

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

  1. Выполните команду Файл/Создать/Модель на панели инструментов. Появится диалоговое окно Новая модель.
  2. Задайте имя новой модели. В поле Имя модели введите ComSystem. Выберите каталог для сохранения файлов модели.
  3. Щелкните кнопку Далее. Откроется вторая страница Мастера создания модели. Выберите Начать создание модели "с нуля". Щелкните кнопку Далее.
Область просмотра

Используем три области просмотра. В первой области просмотра разместим объекты и элементы сегмента Постановка на дежурство, во второй - сегмента Имитация дежурства СС и сегмента имитации функционирования ремонтного подразделения, в третьей - сегмента Статистика.

Первую область просмотра поместим на диаграмму класса Main, а для второй и третьей областей просмотра создадим новый класс активного объекта Degurstvo.

Создайте область просмотра на диаграмме класса Main для размещения объектов сегмента Постановка на дежурство.

  1. В Палитре выделите Презентация. Перетащите элемент Область просмотра.
  2. Перейдите на страницу Основные панели Свойства.
  3. В поле Имя: введите Postanovka.
  4. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
  5. Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
  6. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 0, Y: 0, Ширина: 700, Высота: 970.
  7. Перетащите элемент Скруглённый прямоугольник. Оставьте имя, предложенное системой. В нём мы разместим объекты сегмента Постановка на дежурство.
  8. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 38, Y: 62, Ширина: 642, Высота: 268.
Ввод исходных данных

Исходные данные, другие необходимые для работы модели параметры разделим и разместим в той области или в том сегменте модели, где они, по нашему мнению, нужны и их удобно использовать.

Организуйте ввод исходных данных для сегмента Постановка на дежурство.

  1. Перетащите элемент Прямоугольник на элемент Область просмотра, если вы хотите видеть данные в ходе моделирования. Если нет, поместите этот элемент вне области просмотра.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 20, Y: 350, Ширина: 390, Высота: 300.
  3. Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Initial_data_PD (здесь PD - постановка на дежурство).
  4. В Палитре выделите Основная. Перетащите элементы Параметр и Простая переменная на элемент с именем Initial_data_PD и разместите их так, как показано на рис. 5.3.
  5. Значения свойств установите согласно табл. 5.1.

Простые переменные с именами KolCC1…KolCC5 - количество СС по типам, а KolCC - количество СС всех типов. Эти переменные мы будем вычислять по исходным значениям КСС1 … КСС5 и КССР1 … КССР5 и использовать при генерации равного значению КolСС заявок, имитирующих СС. Количество СС изменять можно только перед началом моделирования, так как заявки, имитирующие СС, генерируются только один раз.

Размещение элементов Параметр  и Простая переменная

Рис. 5.3. Размещение элементов Параметр и Простая переменная
Имитация поступления средств связи
  1. На Область просмотра мы уже перетащили Скругленный прямоугольник. На нём мы будем размещать, как отмечалось ранее, объекты сегмента Постановка на дежурство.
  2. Перетащите на него элемент text и на странице Основные панели Свойства в поле Текст: введите Постановка на дежурство. Поместите этот текст посредине в верхней части элемента Скругленный прямоугольник.
  3. Перетащите элемент Прямоугольник на Область просмотра. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 50, Y: 100, Ширина: 160, Высота: 140.
  4. Перетащите элемент text на Прямоугольник и на странице Основные панели Свойства в поле Текст: введите Имитация поступления СС.
  5. Перетащите объект source на Прямоугольник. Для записи и хранения параметров СС в дополнительные поля заявок необходимо создать нестандартный класс заявки. Создайте класс заявки ComFacility.
    Таблица 5.1. Свойства элементов на Initial_data_PD
    Имя Тип Значение по умолчанию Отображать имя
    KolCC1 int 0 Установить флажок во всех элементах
    KolCC2 int 0
    KolCC3 int 0
    KolCC4 int 0
    KolCC5 int 0
    KolCC int 0
    NumCC int 0
    doxdegCC1 double 20
    doxdegCC2 double 24,2
    doxdegCC3 double 32,8
    doxdegCC4 double 23
    doxdegCC5 double 25,5
    zatrResCC1 double 21
    zatrResCC2 double 24,2
    zatrResCC3 double 28
    zatrResCC4 double 26
    zatrResCC5 double 25,5
    ubitokCC1 double 32
    ubitokCC2 double 34,2
    ubitokCC3 double 37
    ubitokCC4 double 31
    ubitokCC5 double 32,5
    ВремяРабСист double 1000
  6. В панели Проект щелкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать/Java класс.
  7. Появится диалоговое окно Новый Java класс. В поле Имя: введите имя нового класса ComFacility.
  8. В поле Базовый класс: выберите из выпадающего списка Entity в качестве базового класса. Щелкните кнопку Далее.
  9. Появится вторая страница Мастера создания Java класса. Добавьте следующие поля Java класса:
    int tipCC;
    double timeMeanRem;
    double nach;
    double nach1;
    double timeMeanOtkaz;
  10. Оставьте выбранными флажки Создать конструктор и Создать метод toString ().
  11. Щелкните кнопку Готово. Вы увидите редактор кода и в автоматически созданный код вашего Java класса. Закройте код.
  12. Выделите объект source. На странице Основные панели Свойства уберите флажок Отображать имя. В полях Класс заявки: и Новая заявка Entity замените ComFacility.

    Установите:

    • Заявки прибывают согласно Интенсивности.
    • Интенсивность прибытия 1
    • Количество заявок, прибывающих за один раз 1
    • Ограниченное количество прибытий установите флажок
    • Максимальное количество прибытий 1

    В поле Действие при выходе введите Java код:

    KolCC1=degyrstvo.KCC1+degyrstvo.KCCP1;
    degyrstvo.DoxMaxCC1=
    round((degyrstvo.KCC1*doxDegCC1)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC1=degyrstvo.DoxMaxCC1/100;
    degyrstvo.ZatrResCC1=
    round((degyrstvo.KCCP1*zatrResCC1)*ВремяРабСист*100);
    degyrstvo.ZatrResCC1=degyrstvo.ZatrResCC1/100;
    KolCC2=degyrstvo.KCC2+degyrstvo.KCCP2;
    degyrstvo.DoxMaxCC2=
    round((degyrstvo.KCC2*doxDegCC2)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC2=degyrstvo.DoxMaxCC2/100;
    degyrstvo.ZatrResCC2=
    round((degyrstvo.KCCP2*zatrResCC2)*ВремяРабСист*100);
    degyrstvo.ZatrResCC2=degyrstvo.ZatrResCC2/100;
    KolCC3=degyrstvo.KCC3+degyrstvo.KCCP3;
    degyrstvo.DoxMaxCC3=
    round((degyrstvo.KCC3*doxDegCC3)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC3=degyrstvo.DoxMaxCC3/100;
    degyrstvo.ZatrResCC3=
    round((degyrstvo.KCCP3*zatrResCC3)*ВремяРабСист*100);
    degyrstvo.ZatrResCC3=degyrstvo.ZatrResCC3/100;
    KolCC4=degyrstvo.KCC4+degyrstvo.KCCP4;
    degyrstvo.DoxMaxCC4=
    round((degyrstvo.KCC4*doxDegCC4)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC4=degyrstvo.DoxMaxCC4/100;
    degyrstvo.ZatrResCC4=
    round((degyrstvo.KCCP4*zatrResCC4)*ВремяРабСист*100);
    degyrstvo.ZatrResCC4=degyrstvo.ZatrResCC4/100;
    KolCC5=degyrstvo.KCC5+degyrstvo.KCCP5;
    degyrstvo.DoxMaxCC5=
    round((degyrstvo.KCC5*doxDegCC5)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC5=degyrstvo.DoxMaxCC5/100;
    KolCC=KolCC1+KolCC2+KolCC3+KolCC4+KolCC5;
    degyrstvo.ZatrResCC5=
    round((degyrstvo.KCCP5*zatrResCC5)*ВремяРабСист*100);
    degyrstvo.ZatrResCC5=degyrstvo.ZatrResCC5/100;
    degyrstvo.SumDoxMax=degyrstvo.DoxMaxCC1+
    degyrstvo.DoxMaxCC2+degyrstvo.DoxMaxCC3+
    degyrstvo.DoxMaxCC4+degyrstvo.DoxMaxCC5;
    degyrstvo.SumZatrRes=degyrstvo.ZatrResCC1+
    degyrstvo.ZatrResCC2+degyrstvo.ZatrResCC3+
    degyrstvo.ZatrResCC4+degyrstvo.ZatrResCC5;

    Введённым кодом определяется количество СС всех типов, включая и резервные средства связи. Эти данные необходимы в последующем в объекте split. Количества СС как исходные данные будут размещены на активном классе Degyrstvo, который мы создадим позже, поэтому в коде используется доступ к ним в виде, например, degyrstvo.KCC1.

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

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

    Для вывода результатов моделирования с двумя знаками после запятой использовался метод round(). Предварительно результат умножался на 100, а потом делился на эту же величину. Например:

    degyrstvo.DoxMaxCC1=
    round((degyrstvo.KCC1*doxDegCC1)*ВремяРабСист*100);
    degyrstvo.DoxMaxCC1=degyrstvo.DoxMaxCC1/100;
  13. Добавьте объекты split и sink (Рис. 5.4).
    Добавлены объекты split и sink

    Рис. 5.4. Добавлены объекты split и sink
  14. Выделите объект split. Установите свойства как на рис. 5.5. Так как копии не унаследуют свойств от оригинала, поэтому в поле Действие при выходе копии введите Java код:
    NumCC++;
    if (NumCC <= KolCC) 
      entity.tipCC = 5;
    if (NumCC <= (KolCC1+KolCC2+KolCC3+KolCC4))
       entity.tipCC = 4; 
    if (NumCC <= (KolCC1+KolCC2+KolCC3)) 
       entity.tipCC = 3;       
    if (NumCC <= (KolCC1+KolCC2)) 
       entity.tipCC = 2; 
    if (NumCC <= KolCC1) 
     entity.tipCC = 1;

    В поле entity.tipCC запоминается соответствующий код типа СС, например, entity.tipCC = 5, который необходим для нормального функционирования модели, то есть отличия СС по типам.

  15. Объект sink уничтожает заявку-оригинал.
Элемент source с установленными свойствами

увеличить изображение
Рис. 5.5. Элемент source с установленными свойствами
Алексей Гроссман
Алексей Гроссман

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

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