Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Опубликован: 07.11.2014 | Уровень: для всех | Доступ: платный
Лекция 6:
Модель функционирования системы связи
Сегмент Имитация дежурства
Ввод исходных данных
Организуйте ввод исходных данных для сегмента Имитация дежурства.
Замечание. В размещаемых далее элементах и объектах сегмента сбрасывайте флажок Отображается на верхнем уровне.
- Перетащите элемент Область просмотра. Перейдите на панель Свойства. В поле Имя: введите исходные_данные_Д.
- Задайте Выравнивать по: Верхн. левому углу.
- Выберите масштабирование Подогнать под окно.
- На странице Местоположение и размер введите в поля X: 40, Y: 800, Ширина: 650, Высота: 240.
- Перетащите элемент Прямоугольник. На нём мы разместим элементы для ввода исходных данных.
- Оставьте имя, предложенное системой.
- Перейдите на страницу Местоположение и размер. Введите в поля X: 50, Y: 840, Ширина: 620, Высота: 190.
- Перетащите элемент text и на панели Свойства в поле Текст: введите Исходные_данные_Д (здесь Д - дежурство).
- Перетащите, используя копирование, элементы Параметр на элемент с именем Исходные_данные_Д и разместите их так, как показано на Рис. 5.9. При копировании целесообразно указать имя первого элемента и его тип, например, KCC1, int. Значения по умолчанию нужно установить потом для каждого элемента своё.
- На панели Свойства каждого элемента Параметр установите свойства согласно Табл. 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: 40, Y: 430, Ширина: 730, Высота: 350.
- Перетащите элемент Прямоугольник.
- Перейдите на панель Свойства. Введите в поля X: 54, Y: 466, Ширина: 710, Высота: 300.
- Результаты разбиты на две группы: затраты и доходы. Перетащите два элемент text и на панели Свойства в поле Текст: введите Затраты и Доходы соответственно.
- В Палитре выделите Основная. Перетащите, используя копирование, элементы Переменная. Разместите их, дайте имена, как показано на Рис. 5.10. У всех переменных установите флажки Отображать имя и тип double.
Событийная часть сегмента Имитация дежурства
Реализация событийной части сегмента показана на Рис. 5.11.
- Перетащите элемент Скруглённый прямоугольник. На нём мы разместим все элементы сегмента Имитация дежурства.
- На странице Местоположение и размер панели Свойства введите в поля X: 60, Y: 50, Ширина: 600, Высота: 360.
- Перетащите элемент Прямоугольник. На нём мы разместим элементы, непосредственно имитирующие дежурство СС.
- На странице Местоположение и размер введите в поля X: 250, Y: 60, Ширина: 170, Высота: 330.
- Перетащите ещё один элемент Прямоугольник для размещения элементов, имитирующих ремонтное подразделение СС.
- На странице Местоположение и размер панели Свойства введите в поля X: 440, Y: 60, Ширина: 190, Высота: 330.
- Установите, используя копирование, на тип агента Degyrstvo последовательно: пять объектов queue, пять объектов delay, один объект queue, один объект delay и соедините их так, как показано на Рис. 5.11. При копировании используйте свойства каждого объекта, приведенные в Табл. 5.4. Кроме них также свойства, указанные в п. 9.
- Перетащите три элемента text и введите названия в соответствующие поля Текст: согласно Рис. 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; - Кроме свойств, указанных в Табл. 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);}