Если у вас в модели должны присутствовать транспортеры с определенными нестандартными параметрами (к примеру, ширина, заряд батареи и т.д.), и вы хотите, чтобы во время воспроизведения модели они отличались друг от друга, нужно создать отдельные типы транспортеров.
Как создать нестандартный тип транспортера
- Перетащите элемент Тип транспортера из палитры Библиотеки производственных систем в графический редактор.
- Появится диалоговое окно Мастера для Создания агентов.
- Укажите Имя нового типа (к примеру, AGV) на первой странице Мастера. Щелкните по кнопке Далее, чтобы перейти к следующему шагу.
- Выберите тип анимации для транспортера этого типа. Если вы хотите, чтобы агенты отображались и в 2D, и в 3D, выберите 3D и укажите 3D фигуру анимации в списке ниже, в ином случае, выберите 2D и укажите фигуру из другого списка. Если ни одна фигура вам не подходит, выберите опцию Нет. Вы можете задать фигуру анимации на диаграмме агента позже в любое время. Выбрав фигуру анимации, щелкните по кнопке Далее, чтобы перейти к следующему шагу.
- Укажите параметры для этого типа транспортера. Щелкните <добавить... >, чтобы добавить новый параметр. Выделив этот параметр в списке, вы можете настроить его имя, тип и значение по умолчанию в настройках на панели справа. Чтобы удалить параметр, щелкните по кнопке .
- Щелкните Готово внизу диалогового окна. Откроется окно графической диаграммы только что созданного типа транспортера с выбранной анимацией в начале координат этой диаграммы.
Теперь вы можете использовать этот тип транспортеров в параметрах блоков диаграммы процесса, например, в блоке TransporterFleet:
- Основные свойства
-
Имя — имя типа транспортера. Так как AnyLogic создает класс Java для каждого типа агентов, следуйте правилам Java при именовании. Имя должно начинаться с заглавной буквы.
Исключить — Если опция выбрана, то тип транспортера будет исключен из модели.
- Предв. просмотр параметров
-
Секция свойств Предв. просмотр параметров доступна, только если данный тип транспортера имеет какие-либо параметры. Здесь вы можете изменить порядок, в котором параметры будут отображены в свойствах транспортеров этого типа.
- Действия агента
-
Параметры в этой секции унаследованы от типа агента и редко используются для транспортеров. Более подробное описание этих параметров вы можете найти здесь.
- Агент в диаграмме процесса
-
Использовать в диаграммах процесса как — Здесь вы можете выбрать роль агента в диаграммах процесса. Чтобы использовать агентов этого типа в качестве транспортеров в блоках Библиотеки производственных систем, оставьте выбранной опцию Транспортер. Тем самым вы также получите доступ к дополнительным функциям транспортера: getFleet(), getUtilization(), getCargoPosition() и т.д.
При входе в блок диаграммы процесса — Сюда вы можете вписать код, выполняемый, когда агент вступает в диаграмму процесса.
При выходе из блока диаграммы процесса — Сюда вы можете вписать код, выполняемый, когда агент покидает диаграмму процесса.
При занятии ресурса — Сюда вы можете вписать код, выполняемый, когда агент захватывает ресурс, еще находясь в диаграмме процесса.
При освобождении ресурса — Сюда вы можете вписать код, выполняемый, когда агент освобождает ранее захваченный ресурс, еще находясь в диаграмме процесса.
- Размеры и движение
-
Длина — Длина транспортера.
Ширина — Ширина транспортера.
Высота — Высота транспортера.
Начальная скорость — Скорость транспортера.
Поворачивать анимацию согласно направлению движения — Если эта опция выбрана, фигура анимации агента будет направлена к цели во время движения агента.
Также наклонять и вертикально — Если эта опция выбрана, то фигура анимации агента будет также вращаться вдоль оси Z.
- Пространство и сеть
-
Параметры в этой секции унаследованы от типа агента и редко используются для транспортеров. Более подробное описание этих параметров вы можете найти здесь.
- Java для экспертов
-
Параметры в этой секции унаследованы от типа агента и редко используются для транспортеров. Более подробное описание этих параметров вы можете найти здесь.
- Специфические
-
Параметры в этой секции унаследованы от типа агента и редко используются для транспортеров. Более подробное описание этих параметров вы можете найти здесь.
Поскольку движение транспортеров, как правило, происходит в физическом пространстве, необходимо учитывать размеры транспортеров, если вы хотите получить достоверные результаты симуляции. Размер каждого транспортера задан тремя параметрами (длина, ширина, высота), значение по умолчанию для которых равно 1 метру. Здесь описано, как задавать и изменять размеры транспортеров.
Поскольку нестандартные транспортеры являются типами агентов, в AnyLogic возможно расширить их функциональность с помощью дополнительных переменных, параметров, функций и других элементов.
При использовании такого транспортера в диаграмме процесса — например, с помощью взаимодействующих с этим транспортером блоков SeizeTransporter, ReleaseTransporter и MoveByTransporter — вам может понадобиться получить доступ к этим внутренним элементам агента в контексте активного транспортера. Для получения доступа к вложенным элементам транспортера вам необходимо явно указать тип задействованного агента.
Предположим, в модели имеется парк транспортеров (нестандартных), который называется AGVs и состоит из нескольких транспортеров: агентов типа AGV. На диаграмме агента AGV присутствует параметр булева типа isBusy, которому по умолчанию присвоено значение false. Мы хотим изменить значение на true, когда транспортер начнет работу.
Чтобы сделать это, введите следующий код в поле При захвате транспортера в разделе Действия панели свойств блока SeizeTransporter:
((AGV)unit).isBusy = false;
Обратите внимание, что мы обращаемся к типу агента AGV, а не к парку транспортеров AGVs.
Используя аналогичный подход, вы можете получить доступ к другим элементам типа агента нестандартного транспортера, чтобы изменить их значения, выполнять функции и так далее.
Чтобы узнать больше о параметрах нестандартных агентов, изучите данный материал: Получение доступа к параметрам нестандартных агентов в свойствах блоков диаграммы процесса.
-
Как мы можем улучшить эту статью?
-