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

Модель процесса изготовления в цехе деталей

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Создание области просмотра

В случае сложных моделей, активные объекты которых содержат большое количество элементов, может возникнуть неудобство: все элементы активного объекта могут просто физически не поместиться в ту область диаграммы, которая будет отображена в окне презентации во время выполнения модели.

Версия 7 AnyLogic предоставляет в распоряжение пользователей специальный элемент для решения этой проблемы - область просмотра. С помощью этого элемента вы можете выделить на диаграмме активного объекта некоторые области, содержащие логически обособленные группы элементов или участки диаграммы. Задав такие области, вы сможете легко переключаться между ними во время выполнения модели с помощью специальных средств навигации, что позволит быстро переходить к тому или иному участку диаграммы активного объекта. При этом в окне презентации запущенной модели будут отображаться те элементы активного объекта, которые попали в заданную вами ранее и сделанную в текущий момент активной область просмотра.

Используем две области просмотра. В первой области просмотра разместим объекты первых пяти сегментов (см. Рис. 2.12), во второй - сегменты Пункт окончательного контроля, Склад готовых деталей и Склад бракованных деталей.

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

  1. В Палитре выделите Презентация. Перетащите элемент Область просмотра.
  2. Вы увидите на диаграмме значок якоря этой области просмотра . Чтобы в дальнейшем изменить свойства этой области, Вам нужно будет выделить этот значок мышью.
  3. Перейдите на страницу Основные панели Свойства.
  4. В поле Имя: введите zex.
  5. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
  6. Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
  7. На странице Местоположение и размер установите: X: 0, Y: 0, Ширина: 780, Высота: 530.
Переключение между областями просмотра

Области просмотра используются как для навигации по графическому редактору во время создания модели, так и для навигации по окну презентации во время выполнения модели.

Чтобы перейти к другой области просмотра в режиме создания модели:

  1. Щёлкните мышью в графическом редакторе, чтобы сделать его активным.
  2. Щёлкните по кнопке панели инструментов Области просмотра и выберите из выпадающего списка, к какой именно области просмотра вы хотите перейти.

Чтобы перейти к другой области просмотра в режиме выполнения модели:

  1. Щёлкните правой кнопкой мыши в области обрисовки окна презентации, выберите пункт контекстного меню Область и, затем выберите из списка, к какой именно области просмотра вы хотите перейти.
  2. Или же щёлкните кнопку панели инструментов Показать область... и выберите из выпадающего списка, к какой именно области просмотра вы хотите перейти (эта кнопка принадлежит секции панели инструментов Вид, и возможно, чтобы она стала видна, вам нужно будет вначале показать эту секцию панели инструментов).

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

  1. В Палитре выделите Презентация. Перетащите элемент text, разместите и введите в поле Текст: Цех, как на Рис. 2.12.
  2. Перетащите второй элемент text, разместите и введите в поле Текст: Пункт окончательного контроля.
  3. На панели Свойства раскройте Специфические и в поле Действие по щелчку: введите следующий Java код: на_контроль.kontr.navigateTo();

Во введённом коде на_контроль - имя экземпляра нового типа агента Kontrol, а kontr - имя области просмотра, которую мы создадим позднее на новом типе агента Kontrol.

На Рис. 2.13 показан тип агента Kontrol с размещёнными на нём тремя сегментами модели. Создадим эти сегменты.

Тип агента Kontrol с размещёнными на нём тремя сегментами

увеличить изображение
Рис. 2.13. Тип агента Kontrol с размещёнными на нём тремя сегментами
Пункт окончательного контроля
  1. Из Презентации перетащите три элемента Прямоугольник и разместите так, как на Рис. 2.10. На странице Местоположение и размер панели Свойства для верхнего прямоугольника введите: X: 110, Y: 70, Ширина: 580, Высота: 240. Для нижних прямоугольников: X: 190, Y: 330, Ширина: 250, Высота: 140; X: 460, Y: 330, Ширина: 250, Высота: 140.
  2. Перетащите три элемента text и на странице Основные панели Свойства в поле Текст: каждого из них вместо имеющегося там слова text введите Пункт окончательного контроля, Склад готовых деталей, Склад бракованных деталей соответственно (Рис. 2.13).
  3. Из Библиотеки моделирования процессов перетащите два объекта selectOutput, объект queue, объект delay и один объект selectOutput5, разместите в верхнем прямоугольникe и соедините так, как показано на Рис. 2.13. Порты брОп1, брОп2 и брОп3 соединяются с входом объекта selectOutput. Выход T (true) объекта окКон3 соединяется с входом объекта selectOutput5.
  4. Выделите поочередно объекты, начиная с левого объекта selectOutput, и на странице Основные панели Свойства установите свойства согласно Рис. 2.13 и Табл. 2.5. Во всех объектах должен быть установлен флажок Отображать имя и На презентации.
Таблица 2.5.
Объект Свойства Значения
selectOutput Имя окКон1
Тип заявки Detail
Выход true выбирается При выполнении условия
Условие entity.a<2
queue Имя очКон
Тип заявки Detail
Максимальная вместимость Установите флажок
delay Имя окКон2
Тип заявки Detail
Тип Определённое время
Время задержки exponential (1/main.Tk)
Вместимость 1
selectOutput Имя окКон3
Тип заявки Detail
Выход true выбирается Заданной вероятностью
Вероятность 1-main.q4
Действия При выходе(true) entity.a=2
selectOutput5 Имя распределитель
Тип заявки Detail
Использовать: Условия
Условие 1 entity.n==1
Условие 2 entity.n==2
Условие 3 entity.n==3
Максимальная вместимость Установите флажок
delay1 Имя конОп31
Тип заявки Detail
Тип Определённое время
Время задержки exponential (1/Tk3)
Вместимость 1
Действия При выходе entity.n = 3
selectOutput Имя конОп32
Тип заявки Detail
Выход true выбирается Заданной вероятностью
Вероятность 1-q3
Склад готовых деталей. Вывод результатов моделирования
  1. Из библиотеки Основная перетащите на левый нижний прямоугольник три элемента Переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на Рис. 2.13. Установите Тип: double.
  2. Из Библиотеки моделирования процессов перетащите объект sink.
  3. На странице Основные установите следующие свойства:
    • Имя: склГотДет
    • Отображать имя сбросьте флажок;
    • Тип заявки: Detail
    • Действия При входе
    готДетали = склГотДет.count()/main.колПрог;
    доляГотДет = готДетали/(готДетали + бракДетали);
    срВрПодгДет = (main.врМод*main.колПрог)/склГотДет.count();

    Код предназначен для расчёта результатов моделирования: абсолютного готДетали и относительного доляГотДет количества готовых деталей, среднего времени срВрПодгДет подготовки одной детали.

  4. Из библиотеки Картинки перетащите картинку Склад и разместите как на Рис. 2.13.
Склад бракованных деталей. Вывод результатов моделирования
  1. Из библиотеки Основная перетащите на правый нижний прямоугольник два элемента Переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на Рис. 2.13. Тип: double.
  2. Из Библиотеки моделирования процессов перетащите объект sink.
  3. На странице Основные панели Свойства установите следующие свойства:
    • Имя: склБракДет
    • Отображать имя сбросьте флажок;
    • Тип заявки: Detail
    • Действия При входе
    бракДетали = склБракДет.count()/main.колПрог;
    доляБрДет = бракДетали/(готДетали+бракДетали);

    Код предназначен для расчёта результатов моделирования: абсолютного бракДетали и относительного доляБрДет количества бракованных деталей.

  4. Из библиотеки Картинки перетащите картинку Склад и разместите как на Рис. 2.13.

Так как все исходные данные размещены на диаграмме типа агента Main, то ссылка на них из диаграммы Kontrol, производится, например, так: main.колПрог;

Создание областей просмотра и переключение между ними
  1. Из библиотеки Презентация перетащите элемент Область просмотра.
  2. Перейдите на страницу Основные панели Свойства.
  3. В поле Имя: введите kontr.
  4. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
  5. Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
  6. На странице Местоположение и размер панели Свойства введите: X: 30, Y: 10, Ширина: 670, Высота: 480.
  7. Сбросьте флажок Исключить, если он был установлен.
  8. Перетащите элемент text, разместите и введите в поле Текст: Цех, как на Рис. 2.13.
  9. На панели Свойства раскройте Специфические и в поле Действие по щелчку: введите следующий Java код: main.zex.navigateTo();
  10. Перетащите второй элемент text, разместите и введите в поле Текст: Пункт окончательного контроля.
  11. Теперь в ходе моделирования вы можете перемещаться между двумя областями просмотра. Чёрный цвет, например, Цех, означает, что открыта область просмотра, на которой размещен Пункт окончательного контроля. При этом цвет названия Пункт окончательного контроля другой.
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Игорь Маникин
Игорь Маникин

Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю?

Еще раз спасибо за прекрасный курс!

Артём Нагайцев
Артём Нагайцев

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

entity.time_vxod=time(); 

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