Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель процесса изготовления в цехе деталей
Пункт окончательного контроля
- Из Презентации перетащите три элемента Прямоугольник и разместите так, как на рис. 2.10. На странице Дополнительные панели Свойства для верхнего прямоугольника введите в поле Ширина: 580, в поле Высота: 240. Для нижних прямоугольников: Ширина: 250, Высота: 140.
- Перетащите три элемента text и на странице Основные панели Свойства в поле Текст: каждого из них вместо имеющегося там слова text введите Пункт окончательного контроля, Склад готовых деталей, Склад бракованных деталей соответственно (рис. 2.10).
- Из Основной библиотеки (Enterprise Library) перетащите два объекта selectOutput, объект queue, объект delay и один объект selectOutput5 на диаграмму класса Kontrol, разместите в верхнем прямоугольникe и соедините так, как показано на рис. 2.10. Порты брОп1, брОп2 и брОп3 соединяются с входом объекта selectOutput. Выход T (true) объекта окКон3 соединяется с входом объекта selectOutput.
- Выделите поочередно объекты, начиная с левого объекта selectOutput, и на странице Основные панели Свойства установите свойства согласно рис. 2.10 и табл. 2.5. Во всех объектах должен быть установлен флажок Отображать имя и На презентации.
Объект | Свойства | Значения |
---|---|---|
selectOutput | имя | окКон1 |
Класс заявки | Detail | |
Выход true выбирается | При выполнении условия | |
Условие | entity.a<2 | |
queue | имя | очКон |
Класс заявки | Detail | |
Максимальная вместимость | Установите флажок | |
delay | имя | окКон2 |
Класс заявки | Detail | |
Задержка задаётся | Явно | |
Время задержки | exponential (1/get_Main().Tk) | |
Вместимость | 1 | |
selectOutput | имя | окКон3 |
Класс заявки | Detail | |
Выход true выбирается | С заданной вероятностью | |
Вероятность [0..1] | 1-get_Main().q4 | |
Действие при выходе(true) | entity.a=2 | |
selectOutput5 | имя | распределитель |
Класс заявки | Detail | |
Использовать: | Условия | |
Условие 0 | entity.n==1 | |
Условие 1 | entity.n==2 | |
Условие 2 | entity.n==3 |
Склад готовых деталей. Вывод результатов моделирования
- Из библиотеки Основная перетащите на левый нижний прямоугольник три элемента Простая переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на рис. 2.10. Установите Тип: double.
- Из Основной библиотеки перетащите объект sink.
- На странице Основные панели Свойства установите следующие свойства:
- Имя: склГотДет
- Отображать имя сбросьте флажок;
- Класс заявки: Detail
-
Действие при входе
готДетали = склГотДет.count()/get_Main().колПрог; доляГотДет = готДетали/(готДетали + бракДетали); срВрПодгДет = (get_Main().врМод*get_Main().колПрог)/склГотДет.count();
Код предназначен для расчёта результатов моделирования: абсолютного готДетали и относительного доляГотДет количества готовых деталей, среднего времени срВрПодгДет подготовки одной детали.
- Из библиотеки Картинки перетащите картинку Склад и разместите как на рис. 2.10.
Склад бракованных деталей. Вывод результатов моделирования
- Из библиотеки Основная перетащите на правый нижний прямоугольник два элемента Простая переменная. На странице Основные панели Свойства в поле Имя: каждого элемента введите соответствующие имена, показанные на рис. 2.10. Установите Тип: double.
- Из Enterprise Library перетащите объект sink.
- На странице Основные панели Свойства установите следующие свойства:
- Имя: склБракДет
- Отображать имя сбросьте флажок;
- Класс заявки: Detail
-
Действие при входе
бракДетали = склБракДет.count()/get_Main().колПрог; доляБрДет = бракДетали/(готДетали+бракДетали);
Код предназначен для расчёта результатов моделирования: абсолютного бракДетали и относительного доляБрДет количества бракованных деталей.
- Из библиотеки Картинки перетащите картинку Склад и разместите как на рис. 2.10.
Так как все исходные данные размещены на диаграмме класса Main, то ссылка на них из диаграммы класса Kontrol, производится, например, так: get_Main().колПрог;
Создание областей просмотра и переключение между ними
- Из библиотеки Презентация перетащите элемент Область просмотра.
- Перейдите на страницу Основные панели Свойства.
- В поле Имя: введите kontr.
- Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
- Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
- На странице Дополнительные панели Свойства введите в поля X: 30, Y: 10, Ширина: 670, в поле Высота: 480.
- Сбросьте флажок Исключить, если он был установлен.
- Перетащите элемент text, разместите и введите в поле Текст: Цех, как на рис. 2.10.
- На панели Свойства выделите Динамические и в поле Действие по щелчку: введите следующий Java код:
get_Main().zex.navigateTo();
- Перетащите второй элемент text, разместите и введите в поле Текст: Пункт окончательного контроля.
- Теперь в ходе моделирования вы можете перемещаться между двумя областями просмотра. Чёрный цвет, например, Цех, означает, что открыта область просмотра, на которой размещен Пункт окончательного контроля. При этом цвет названия Пункт окончательного контроля другой.
Проведение исследований в AnyLogic
Для удобства считывания статистических данных о коэффициентах использования (загрузки) пункта подготовки заготовок и пунктов выполнения операций 1…3 дополним модель элементами Простая переменная и необходимыми java-кодами.
- Из Презентации перетащите элемент Скругленный прямоугольник на диаграмму класса Kontrol и разместите как на рис. 2.11. Можно было бы всё это сделать на диаграмме класса Main, но тогда бы пришлось каждый раз после проведения эксперимента для считывания результатов переключаться между областями просмотра.
- Перетащите элемент text, разместите и введите в поле Текст: Коэффициенты использования.
- Из библиотеки Основная перетащите элемент Простая переменная. Разместите и дайте имя коэфИспПодЗаг, как на рис. 2.11. Оставьте тип double.
- Перетащите ещё один элемент Простая переменная и дайте ему имя коэфИспВыпОп1. Оставьте тип double.
- Скопируйте элемент с именем коэфИспВыпОп1. Вставьте ещё два таких элемента, которым системой будут присвоены имена коэфИспВыпОп2 и коэфИспВыпОп3 (см. рис. 2.11).
- Выделите объект подЗаг. В поле Действие при выходе добавьте код:
на_контроль.коэфИспПодЗаг= подЗаг.statsUtilization.mean();
- Выделите объект выпОп1. В поле Действие при выходе введите код:
на_контроль.коэфИспВыпОп1= выпОп1.statsUtilization.mean()
- Выделите объект выпОп2. В поле Действие при выходе введите код:
на_контроль.коэфИспВыпОп2= выпОп2.statsUtilization.mean()
- Выделите объект выпОп3. В поле Действие при выходе введите код:
на_контроль.коэфИспВыпОп3= выпОп3.statsUtilization.mean()
- Перейдите на диаграмму класса Main. В панели Проекты выделите Simulation:Main.
В AnyLogic начальное число генератора случайных чисел устанавливается один раз перед запуском модели.
Нужно в панели Проект щёлкнуть Эксперимент. На странице Основные установить Фиксированное начальное число (воспроизводимые прогоны). В соответствующее поле ввести начальное число.
В GPSS World при обращении к датчикам случайных чисел (в нашей модели распределенных по экспоненциальному закону) можно указывать различные начальные числа, или те же, что и в GPSS World.
Чтобы не связывать разработчиков моделей выполнением условия одинаковости начальных чисел датчиков случайных чисел, в AnyLogic используем опцию Случайное начальное число (уникальные прогоны), а в GPSS-модели произвольным образом будем устанавливать различные начальные числа во всех обращениях к генераторам случайных чисел в каждом эксперименте. Это вполне корректно, так как в [1, 2, 3, 4] показано, что и при условии неодинаковости начальных чисел генераторов тенденция изменения количественных показателей, а значит и величины различия результатов моделирования в GPSS World и AnyLogic практически одни и те же.
- На странице Модельное время в поле Остановить: введите 7987 680.0 (480*16 641 = 7 987 680.0).