Разрабатывая дальше модель, мы будем задавать логику и процессы модели на диаграммах каждого агента в отдельности. Для начала мы добавим алгоритм Java, с помощью которого при запуске модели все наши грузовики и вертолеты будут размещены в сервисном центре.
Поместите транспорт в сервисный центр
- Откройте диаграмму Main в графическом редакторе.
- Перетащите элемент Функция из палитры Агент на диаграмму Main.
- Назовите функцию setTransportBase. Эта функция ничего не возвращает, поэтому оставьте выбранной опцию Действие (не возвращает ничего).
-
Разверните секцию свойств Тело функции и введите код Java как указано на изображении:
for (Helicopter h : helicopters) { h.setLocation(center); } for (Truck t : trucks) { t.setLocation(center); }
Мы создали функцию, которая разместит транспорт в сервисном центре. Алгоритм этой функции содержит два цикла for.
Первый цикл выполняет итерирование по всем агентам, входящим в популяцию вертолетов. В строке инициализации цикла for используется следующий синтаксис: в круглых скобках вы сначала указываете имя типа агентов, находящихся в популяции (Helicopter). Затем h — имя локальной переменной, которую мы задаем на этом участке кода. Вы можете использовать любое другое допустимое имя (hel, a, item, и так далее). После этого необходимо указать helicopters — имя популяции агентов, итерирование по которой мы будем выполнять.
Поскольку иногда мы хотим совершить не одно, а несколько действий с каждым агентом популяции, необходимо сказать компилятору Java, какие именно выражения Java должны выполняться во время каждой итерации цикла. Для этого мы помещаем необходимые действия в фигурные скобки. В нашем случае это всего лишь одна строка кода: { h.setLocation(center) }
C помощью этого кода мы выполняем следующее: мы задаем местоположение для агента популяции, по которому выполняется итерирование в данный момент, используя ранее заданную локальную переменную h. Местоположение (в нашем случае это сервисный центр center) передается в качестве аргумента функции setLocation().
Второй цикл for выполняет то же самое для популяции trucks.
Теперь, чтобы функция заработала, ее нужно вызвать из кода.
Выделите Main в дереве модели (или сделайте щелчок мышью в пустом месте графического редактора этого типа агента) и перейдите в панель Свойства. Разверните секцию свойств Действия агента и поместите вызов нашей функции в поле При запуске:
setTransportBase();
Снова запустите модель. Вы увидите, что все грузовики и вертолеты находятся в сервисном центре. Мы зададим движение транспорта и поведение других агентов на следующих этапах нашего учебного пособия.
Демо-модель: Maintenance - Phase 2 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.-
Как мы можем улучшить эту статью?
-