Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель процесса изготовления в цехе деталей
Создание области просмотра
В случае сложных моделей, активные объекты которых содержат большое количество элементов, может возникнуть неудобство: все элементы активного объекта могут просто физически не поместиться в ту область диаграммы, которая будет отображена в окне презентации во время выполнения модели.
Версия 7 AnyLogic предоставляет в распоряжение пользователей специальный элемент для решения этой проблемы - область просмотра. С помощью этого элемента вы можете выделить на диаграмме активного объекта некоторые области, содержащие логически обособленные группы элементов или участки диаграммы. Задав такие области, вы сможете легко переключаться между ними во время выполнения модели с помощью специальных средств навигации, что позволит быстро переходить к тому или иному участку диаграммы активного объекта. При этом в окне презентации запущенной модели будут отображаться те элементы активного объекта, которые попали в заданную вами ранее и сделанную в текущий момент активной область просмотра.
Используем две области просмотра. В первой области просмотра разместим объекты первых пяти сегментов (см. Рис. 2.12), во второй - сегменты Пункт окончательного контроля, Склад готовых деталей и Склад бракованных деталей.
Создайте область просмотра на диаграмме типа агента Main для размещения объектов сегмента Постановка на дежурство.
- В Палитре выделите Презентация. Перетащите элемент Область просмотра.
- Вы увидите на диаграмме значок якоря этой области просмотра . Чтобы в дальнейшем изменить свойства этой области, Вам нужно будет выделить этот значок мышью.
- Перейдите на страницу Основные панели Свойства.
- В поле Имя: введите zex.
- Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
- Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
- На странице Местоположение и размер установите: X: 0, Y: 0, Ширина: 780, Высота: 530.
Переключение между областями просмотра
Области просмотра используются как для навигации по графическому редактору во время создания модели, так и для навигации по окну презентации во время выполнения модели.
Чтобы перейти к другой области просмотра в режиме создания модели:
- Щёлкните мышью в графическом редакторе, чтобы сделать его активным.
- Щёлкните по кнопке панели инструментов Области просмотра и выберите из выпадающего списка, к какой именно области просмотра вы хотите перейти.
Чтобы перейти к другой области просмотра в режиме выполнения модели:
- Щёлкните правой кнопкой мыши в области обрисовки окна презентации, выберите пункт контекстного меню Область и, затем выберите из списка, к какой именно области просмотра вы хотите перейти.
- Или же щёлкните кнопку панели инструментов Показать область... и выберите из выпадающего списка, к какой именно области просмотра вы хотите перейти (эта кнопка принадлежит секции панели инструментов Вид, и возможно, чтобы она стала видна, вам нужно будет вначале показать эту секцию панели инструментов).
Вы можете также добавлять свои собственные элементы презентации, щелчком на которых будет производиться переход к той или иной области просмотра. Воспользуйтесь последним.
- В Палитре выделите Презентация. Перетащите элемент text, разместите и введите в поле Текст: Цех, как на Рис. 2.12.
- Перетащите второй элемент text, разместите и введите в поле Текст: Пункт окончательного контроля.
- На панели Свойства раскройте Специфические и в поле Действие по щелчку: введите следующий Java код: на_контроль.kontr.navigateTo();
Во введённом коде на_контроль - имя экземпляра нового типа агента Kontrol, а kontr - имя области просмотра, которую мы создадим позднее на новом типе агента Kontrol.
На Рис. 2.13 показан тип агента Kontrol с размещёнными на нём тремя сегментами модели. Создадим эти сегменты.
Пункт окончательного контроля
- Из Презентации перетащите три элемента Прямоугольник и разместите так, как на Рис. 2.10. На странице Местоположение и размер панели Свойства для верхнего прямоугольника введите: X: 110, Y: 70, Ширина: 580, Высота: 240. Для нижних прямоугольников: X: 190, Y: 330, Ширина: 250, Высота: 140; X: 460, Y: 330, Ширина: 250, Высота: 140.
- Перетащите три элемента text и на странице Основные панели Свойства в поле Текст: каждого из них вместо имеющегося там слова text введите Пункт окончательного контроля, Склад готовых деталей, Склад бракованных деталей соответственно (Рис. 2.13).
- Из Библиотеки моделирования процессов перетащите два объекта selectOutput, объект queue, объект delay и один объект selectOutput5, разместите в верхнем прямоугольникe и соедините так, как показано на Рис. 2.13. Порты брОп1, брОп2 и брОп3 соединяются с входом объекта selectOutput. Выход T (true) объекта окКон3 соединяется с входом объекта selectOutput5.
- Выделите поочередно объекты, начиная с левого объекта selectOutput, и на странице Основные панели Свойства установите свойства согласно Рис. 2.13 и Табл. 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 |
Склад готовых деталей. Вывод результатов моделирования
- Из библиотеки Основная перетащите на левый нижний прямоугольник три элемента Переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на Рис. 2.13. Установите Тип: double.
- Из Библиотеки моделирования процессов перетащите объект sink.
- На странице Основные установите следующие свойства:
- Имя: склГотДет
- Отображать имя сбросьте флажок;
- Тип заявки: Detail
- Действия При входе
готДетали = склГотДет.count()/main.колПрог; доляГотДет = готДетали/(готДетали + бракДетали); срВрПодгДет = (main.врМод*main.колПрог)/склГотДет.count();
Код предназначен для расчёта результатов моделирования: абсолютного готДетали и относительного доляГотДет количества готовых деталей, среднего времени срВрПодгДет подготовки одной детали.
- Из библиотеки Картинки перетащите картинку Склад и разместите как на Рис. 2.13.
Склад бракованных деталей. Вывод результатов моделирования
- Из библиотеки Основная перетащите на правый нижний прямоугольник два элемента Переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на Рис. 2.13. Тип: double.
- Из Библиотеки моделирования процессов перетащите объект sink.
- На странице Основные панели Свойства установите следующие свойства:
- Имя: склБракДет
- Отображать имя сбросьте флажок;
- Тип заявки: Detail
- Действия При входе
бракДетали = склБракДет.count()/main.колПрог; доляБрДет = бракДетали/(готДетали+бракДетали);
Код предназначен для расчёта результатов моделирования: абсолютного бракДетали и относительного доляБрДет количества бракованных деталей.
- Из библиотеки Картинки перетащите картинку Склад и разместите как на Рис. 2.13.
Так как все исходные данные размещены на диаграмме типа агента Main, то ссылка на них из диаграммы Kontrol, производится, например, так: main.колПрог;
Создание областей просмотра и переключение между ними
- Из библиотеки Презентация перетащите элемент Область просмотра.
- Перейдите на страницу Основные панели Свойства.
- В поле Имя: введите kontr.
- Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
- Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
- На странице Местоположение и размер панели Свойства введите: X: 30, Y: 10, Ширина: 670, Высота: 480.
- Сбросьте флажок Исключить, если он был установлен.
- Перетащите элемент text, разместите и введите в поле Текст: Цех, как на Рис. 2.13.
- На панели Свойства раскройте Специфические и в поле Действие по щелчку: введите следующий Java код: main.zex.navigateTo();
- Перетащите второй элемент text, разместите и введите в поле Текст: Пункт окончательного контроля.
- Теперь в ходе моделирования вы можете перемещаться между двумя областями просмотра. Чёрный цвет, например, Цех, означает, что открыта область просмотра, на которой размещен Пункт окончательного контроля. При этом цвет названия Пункт окончательного контроля другой.