Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 338 / 12 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 6:

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

Сегмент Имитация дежурства

Ввод исходных данных

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

Замечание. В размещаемых далее элементах и объектах сегмента сбрасывайте флажок Отображается на верхнем уровне.
  1. Перетащите элемент Область просмотра. Перейдите на панель Свойства. В поле Имя: введите исходные_данные_Д.
  2. Задайте Выравнивать по: Верхн. левому углу.
  3. Выберите масштабирование Подогнать под окно.
  4. На странице Местоположение и размер введите в поля X: 40, Y: 800, Ширина: 650, Высота: 240.
  5. Перетащите элемент Прямоугольник. На нём мы разместим элементы для ввода исходных данных.
  6. Оставьте имя, предложенное системой.
  7. Перейдите на страницу Местоположение и размер. Введите в поля X: 50, Y: 840, Ширина: 620, Высота: 190.
  8. Перетащите элемент text и на панели Свойства в поле Текст: введите Исходные_данные_Д (здесь Д - дежурство).
  9. Перетащите, используя копирование, элементы Параметр на элемент с именем Исходные_данные_Д и разместите их так, как показано на Рис. 5.9. При копировании целесообразно указать имя первого элемента и его тип, например, KCC1, int. Значения по умолчанию нужно установить потом для каждого элемента своё.
  10. На панели Свойства каждого элемента Параметр установите свойства согласно Табл. 5.3.
Размещение элементов Параметр для ввода данных

увеличить изображение
Рис. 5.9. Размещение элементов Параметр для ввода данных
Таблица 5.3. Свойства элементов Параметр на Исходные_данные_Д
Имя Тип Значение по умолчанию Отображать имя
KCC1 int 55 Установить флажок во всех элементах
KCC2 int 100
KCC3 int 60
KCC4 int 45
KCC5 int 60
KCCР1 int 2
KCCР2 int 4
KCCР3 int 4
KCCР4 int 3
KCCР5 int 4
stoimRemCC1 double 17
stoimRemCC2 double 18
stoimRemCC3 double 16
stoimRemCC4 double 20
stoimRemCC5 double 21
timeRem1 double 6,5
timeRem2 double 4,2
timeRem3 double 2,8
timeRem4 double 3
timeRem5 double 5,5
timeOtkaz1 double 373
timeOtkaz2 double 301
timeOtkaz3 double 482
timeOtkaz4 double 325
timeOtkaz5 double 470
kol_master int 3
КолПрогон double 1000
ВремяРабСист double 1000
Вывод результатов моделирования

Здесь выводятся все результаты моделирования (Рис. 5.10). Однако с целью экономии машинного времени, выводятся они по разному. Рассчитанные ранее максимальные доходы от дежурства СС и затраты на содержание резервных СС не выводятся в ходе моделирования. Выводятся только текущие доходы от дежурства СС и текущие затраты на ремонт неисправных СС. Все обработанные результаты выводятся по окончании моделирования. Для организации вывода используется способ Событие (см. п. 5.1.7).

Элементы Переменная для вывода результатов моделирования

увеличить изображение
Рис. 5.10. Элементы Переменная для вывода результатов моделирования
  1. Перетащите элемент Область просмотра. Перейдите на панель Свойства. В поле Имя: введите текущие_результаты.
  2. Задайте Выравнивать по: Верхн. левому углу.
  3. Выберите масштабирование Подогнать под окно.
  4. На странице Местоположение и размер введите в поля X: 40, Y: 430, Ширина: 730, Высота: 350.
  5. Перетащите элемент Прямоугольник.
  6. Перейдите на панель Свойства. Введите в поля X: 54, Y: 466, Ширина: 710, Высота: 300.
  7. Результаты разбиты на две группы: затраты и доходы. Перетащите два элемент text и на панели Свойства в поле Текст: введите Затраты и Доходы соответственно.
  8. В Палитре выделите Основная. Перетащите, используя копирование, элементы Переменная. Разместите их, дайте имена, как показано на Рис. 5.10. У всех переменных установите флажки Отображать имя и тип double.
Событийная часть сегмента Имитация дежурства

Реализация событийной части сегмента показана на Рис. 5.11.

  1. Перетащите элемент Скруглённый прямоугольник. На нём мы разместим все элементы сегмента Имитация дежурства.
  2. На странице Местоположение и размер панели Свойства введите в поля X: 60, Y: 50, Ширина: 600, Высота: 360.
  3. Перетащите элемент Прямоугольник. На нём мы разместим элементы, непосредственно имитирующие дежурство СС.
  4. На странице Местоположение и размер введите в поля X: 250, Y: 60, Ширина: 170, Высота: 330.
  5. Перетащите ещё один элемент Прямоугольник для размещения элементов, имитирующих ремонтное подразделение СС.
  6. На странице Местоположение и размер панели Свойства введите в поля X: 440, Y: 60, Ширина: 190, Высота: 330.
  7. Установите, используя копирование, на тип агента Degyrstvo последовательно: пять объектов queue, пять объектов delay, один объект queue, один объект delay и соедините их так, как показано на Рис. 5.11. При копировании используйте свойства каждого объекта, приведенные в Табл. 5.4. Кроме них также свойства, указанные в п. 9.
  8. Перетащите три элемента text и введите названия в соответствующие поля Текст: согласно Рис. 5.11.
    Сегмент Имитация дежурства

    увеличить изображение
    Рис. 5.11. Сегмент Имитация дежурства
    Таблица 5.4. Объекты сегмента Имитация дежурства и их свойства
    queue
    Имя Вместимость Действия При выходе
    резерв1 KCCP1 entity.timeOtkaz=1/timeOtkaz1
    резерв2 KCCP2 entity.timeOtkaz=1/timeOtkaz2
    резерв3 KCCP3 entity.timeOtkaz=1/timeOtkaz3
    резерв4 KCCP4 entity.timeOtkaz=1/timeOtkaz4
    резерв5 KCCP5 entity.timeOtkaz=1/timeOtkaz5
    очРем Максимальная
    delay
    Имя Время задержки Вместимость
    degCC1 exponential(entity.timeOtkaz) KCC1
    degCC2 exponential(entity.timeOtkaz) KCC2
    degCC3 exponential(entity.timeOtkaz) KCC3
    degCC4 exponential(entity.timeOtkaz) KCC4
    degCC5 exponential(entity.timeOtkaz) KCC5
    remont exponential(entity.timeMeanRem) 3
    Имя Действия При выходе
    degCC1 DoxDegCC1+=(time()-entity.nach1)* main.doxDegCC1;
    entity.timeMeanRem=1/timeRem1;
    degCC2 DoxDegCC2+=(time()-entity.nach1)*main.doxDegCC2;
    entity.timeMeanRem=1/timeRem2;
    degCC3 DoxDegCC3+=(time()-entity.nach1)*main.doxDegCC3;
    entity.timeMeanRem=1/timeRem3;
    degCC4 DoxDegCC4+=(time()-entity.nach1)*main.doxDegCC4;
    entity.timeMeanRem=1/timeRem4;
    degCC5 DoxDegCC5+=(time()-entity.nach1)*main.doxDegCC5;
    entity.timeMeanRem=1/timeRem5;
  9. Кроме свойств, указанных в Табл. 5.4, нужно также:
    • во всех объектах в поле Тип заявки: Agent заменить ComFacility;
    • для всех объектов поставить флажки Включить сбор статистики;
    • для всех объектов delay degCC1 … degCC5 установить:
      • Действие при входе entity.nach1=time();
    • для объекта delay с именем remont также ввести Java коды в следующие свойства:
      • Действие при входе entity.nach=time();
      • Действия При выходе
        if (entity.tipCC == 1) 
           {ZatrRemCC1+=((time()-entity.nach)*stoimRemCC1);
            SumZatrRem+=((time()-entity.nach)*stoimRemCC1);}
        if (entity.tipCC == 2) 
           {ZatrRemCC2+=((time()-entity.nach)*stoimRemCC2);
           SumZatrRem+=((time()-entity.nach)*stoimRemCC2);}   
        if (entity.tipCC == 3) 
           {ZatrRemCC3+=((time()-entity.nach)*stoimRemCC3);
           SumZatrRem+=((time()-entity.nach)*stoimRemCC3);}
        if (entity.tipCC == 4) 
           {ZatrRemCC4+=(time()-entity.nach)*stoimRemCC4;
          SumZatrRem+=((time()-entity.nach)*stoimRemCC4);} 
        if (entity.tipCC == 5) 
           {ZatrRemCC5+=((time()-entity.nach)*stoimRemCC5);
           SumZatrRem+=((time()-entity.nach)*stoimRemCC5);}
Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod); 

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Артём Нагайцев
Артём Нагайцев
Россия