AnyLogic
Развернуть
Размер шрифта

Шаг 2. Моделирование погрузчиков с произвольной навигацией

Собрав электроды в партии, мы перевозим эти партии в сушильные камеры, где пройдет процесс дегидратации электродов. Моделирование текущего этапа мы начнем с добавления погрузчиков в модель.

Чтобы промоделировать погрузчики, мы будем использовать транспортеры - отдельный тип агента, который задается с помощью блока TransporterFleet Библиотеки производственных систем. У транспортеров бывают разные режимы навигации: навигация по заданным путям или произвольная навигация.

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

Создайте погрузчики

  1. Перетащите элемент Тип транспортера из палитры Библиотеки производственных систем на графическую диаграмму агента Main.
  2. В диалоговом окне Создание агента укажите Имя типа агента: Forklift.
  3. Щелкните по кнопке Готово.
  4. Откройте секцию Склады и контейнерные терминалы палитры 3D объекты и перетащите элемент Погрузчик на графическую диаграмму агента Forklift.
  5. Приведите размер 3D объекта в соответствие с масштабом агента.
  6. В секции Размеры и движение свойств агента Forklift укажите следующее:
    a. Длина: 2 метра
    b. Ширина: 1.3 метра
    c. Высота: 1.5 метра
  7. В поле При запуске в секции свойств агента Действия агента добавьте строку кода, которая позволит задать местоположение перевозимого объекта по отношению к центральной точке погрузчика: setCargoPosition(1, 0, 0, METER);

    Теперь во время выполнения модели на анимации груз будет отображаться точно на вилах погрузчика.

Нарисуйте базовое местоположение погрузчиков

  1. Перетащите Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента Main.
  2. Назовите его forkliftsHomeLocation.
  3. В свойствах узла выберите опцию Видимость: нет.
  4. Разместите узел в соответствии с изображением ниже:

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

  1. В свойствах узла щелкните по кнопке Аттракторы... и задайте в диалоговом окне Аттракторы необходимое Количество аттракторов: 2.

  2. Щелкните по кнопке OK, чтобы закрыть диалоговое окно.

Нарисуйте сушильную камеру

  1. Перетащите Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента Main.
  2. Назовите curingOven.
  3. В свойствах узла выберите опцию Видимость: нет.
  4. Измените размер узла и его местоположение так, чтобы они соответствовали изображению ниже:

  5. В свойствах узла щелкните по кнопке Аттракторы..., чтобы задать местоположение агентов в узле.
  6. В диалоговом окне выберите опцию Сетка и задайте значения 5 x 1. Перетащите аттракторы, чтобы изменить их местоположение.

Добавьте 3D анимацию

  1. Откройте палитру 3D объекты.
  2. Перетащите элемент Сушильная камера из секции Производство на графический редактор агента Main и разместите его поверх аттрактора в узле curingOven.
  3. В открывшемся диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
  4. Расположите объект так, чтобы он находился в пределах стен нашего плана и полностью закрывал собой аттрактор.

  5. Скопируйте 3D объект (Ctrl + перетаскивание) и разместите копию на следующем аттракторе. Повторяйте процесс, пока все аттракторы в узле curingOven не будут закрыты 3D объектами.

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

Задайте управление погрузчиками в диаграмме процесса

  1. Откройте палитру Библиотеки производственных систем и перетащите блок Transporter Fleet на графическую диаграмму агента Main.
  2. Назовите его forklifts.

  3. В свойствах блока укажите следующее:
    a. В параметре Тип навигации выберите опцию Произвольное перемещение. Теперь погрузчики в нашей модели будут перемещаться в пространстве самостоятельно и сами смогут объезжать препятствия в производственном цехе.
    b. Задайте Количество транспортеров: 2. Двух погрузчиков будет достаточно, чтобы перевозить партии электродов между областью ожидания и сушильными камерами.
    c. В параметре Базовое местоположение (узлы) выберите узел forkliftsHomeLocation.
    d. Задайте Радиус поворота: 1 метр
    e. В параметре Новый транспортер выберите тип агента Forklift.
    f. Задайте Максимальную скорость: 0.5 м/с.

  4. Перетащите блок MoveByTransporter с палитры Библиотеки производственных систем на графическую диаграмму агента Main и поместите его в диаграмму процесса после блока batch.

  5. В свойствах блока укажите следующее:
    a. Имя: toOven
    b. Место назначения: Узел
    c. Узел: curingOven
    d. Автопарк: forklifts
    e. Время погрузки: 1 минута
    f. Время разгрузки: 1 минута

Задать процесс сушки электродов

После того, как электроды были доставлены в сушильную камеру, начнется процесс дегидратации. В реальности такие процессы занимают от 12 до 24 часов. Для целей нашего учебного пособия мы значительно сократили это время.

  1. Перетащите блок Delay с палитры Библиотеки моделирования процессов на графическую диаграмму Main и разместите ее в диаграмме процесса после блока toOven.

  2. В свойствах блока delay задайте Время задержки: 2 минуты.
  3. Запустите модель и посмотрите, как погрузчики перевозят партии электродов.

Задайте перемещение электродов в область ожидания

  1. Нарисуйте прямоугольный узел на плане в соответствии с изображением ниже.
  2. Назовите его preassembleElectrodeBuffer. С помощью этого узла мы задаем место, куда погрузчики будут доставлять партии электродов, прошедших дегидратацию.

  3. В свойствах узла выберите опцию Видимость: нет.
  4. Задайте Расположение внутри: Упорядоченное.
  5. Добавьте в диаграмму процесса еще один блок MoveByTransporter и расположите его после блока delay.

  6. Назовите новый блок toElectrodeBuffer.
  7. В свойствах блока toElectrodeBuffer укажите следующее:
    a. Узел: preassembleElectrodeBuffer
    b. Автопарк: forklifts
    c. Время погрузки: 0.5 минуты
    d. Время разгрузки: 0.5 минуты
  8. Запустите модель и посмотрите, как погрузчики выполняют перемещение груза и двигаются среди препятствий в режиме произвольной навигации.

Демо-модель: Lead Acid Battery Production — Phase 2 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Как мы можем улучшить эту статью?