Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Опубликован: 15.02.2013 | Доступ: свободный | Студентов: 257 / 0 | Длительность: 16:52:00
ISBN: 978-5-9556-0146-5
Темы: САПР, Программное обеспечение
Специальности: Архитектор программного обеспечения, Разработчик аппаратуры
Теги:
Лекция 6:
Модель функционирования системы связи
Сегмент Имитация дежурства
Ввод исходных данных
Организуйте ввод исходных данных для сегмента Имитация дежурства. Для ввода исходных данных используйте также элемент Параметр.
- Перетащите элемент Прямоугольник. На нём мы разместим элементы для ввода исходных данных.
- Оставьте имя, предложенное системой, а также установленным только один флажок На презентации.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 50, Y: 790, Ширина: 570, Высота: 190.
- Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Initial_data_D (здесь D -дежурство).
- В Палитре выделите Основная. Перетащите элементы Параметр на элемент с именем Initial_data_D и разместите их так, как показано на рис. 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).
- Перетащите элемент Прямоугольник.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 54, Y: 436, Ширина: 696, Высота: 278.
- Результаты разбиты на две группы: затраты и доходы. Перетащите два элемент text и на странице Основные панели Свойства в поле Текст: введите Затраты и Доходы соответственно.
- В Палитре выделите Основная. Перетащите элементы Простая переменная. Разместите их, как показано на рис. 5.10.
- У всех переменных установите флажки Отображать имя и тип double.
Событийная часть сегмента Имитация дежурства
Реализация событийной части сегмента показана на рис. 5.11.
- Перетащите элемент Скруглённый прямоугольник. На нём мы разместим все элементы сегмента Имитация дежурства.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 60, Y: 60, Ширина: 600, Высота: 350.
- Перетащите элемент Прямоугольник. На нём мы разместим элементы, непосредственно имитирующие дежурство СС.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 250, Y: 70, Ширина: 170, Высота: 330.
- Перетащите ещё один элемент Прямоугольник для размещения элементов, имитирующих ремонтное подразделение СС.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 440, Y: 70, Ширина: 190, Высота: 330.
- Перетащите (или введя один элемент, остальные подобные ему скопируйте) на диаграмму класса Degyrstvo последовательно: пять объектов queue, пять объектов delay, один объект queue, один объект delay и соедините их так, как показано на рис. 5.11.
- Перетащите три элемента text и введите названия в соответствующие поля Текст: согласно рис. 5.11.
- На странице Основные панели Свойства каждого объекта установите свойства согласно табл. 5.4.
Замечание. Поскольку на входах каждого из объектов delay с именами degCC1 … degCC5 стоят объекты queue с именами rez1 … rez5 соответственно, то возникает желание поставить такие же объекты на выходах delay. Однако это приведёт к неправильной работе модели: некоторые СС не смогут поступать в ремонтное подразделение.
queue | |||
---|---|---|---|
Имя | Вместимость | Действие при выходе | |
rez1 | KCCP1 | entity.timeOtkaz=1/timeOtkaz1 | |
rez2 | KCCP2 | entity.timeOtkaz=1/timeOtkaz2 | |
rez3 | KCCP3 | entity.timeOtkaz=1/timeOtkaz3 | |
rez4 | KCCP4 | entity.timeOtkaz=1/timeOtkaz4 | |
rez5 | 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)*get_Main().doxDegCC1; | ||
entity.timeMeanRem=1/timeRem1; | |||
degCC2 | DoxDegCC2+=(time()-entity.nach1)*get_Main().doxDegCC2; | ||
entity.timeMeanRem=1/timeRem2; | |||
degCC3 | DoxDegCC3+=(time()-entity.nach1)*get_Main().doxDegCC3; | ||
entity.timeMeanRem=1/timeRem3; | |||
degCC4 | DoxDegCC4+=(time()-entity.nach1)*get_Main().doxDegCC4; | ||
entity.timeMeanRem=1/timeRem4; | |||
degCC5 | DoxDegCC5+=(time()-entity.nach1)*get_Main().doxDegCC5; | ||
entity.timeMeanRem=1/timeRem5; |
Кроме свойств, указанных в табл. 5.4, нужно также:
- во всех объектах в поле Класс заявки: Entity заменить 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);}
Переключение между областями просмотра
- В Палитре выделите Презентация. Перетащите элемент text, разместите и введите в поле Текст: Постановка на дежурство, как на рис. 5.11.
- На панели Свойства выделите Динамические и в поле Действие по щелчку: введите следующий Java код:
get_Main().Postanovka.navigateTo();
- Перетащите второй элемент text, разместите и введите в поле Текст: Имитация дежурства.
- На панели Свойства выделите Динамические и в поле Действие по щелчку: введите следующий Java код:
Degyr.navigateTo();
- Проделайте то же для Статистика. Введите Java код:
statistika.navigateTo();