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

Шаг 2. Задание транспортной базы

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

Поместите транспорт в сервисный центр

  1. Откройте диаграмму Main в графическом редакторе.
  2. Перетащите элемент Функция из палитры Агент на диаграмму Main.
  3. Назовите функцию setTransportBase
    . Эта функция ничего не возвращает, поэтому оставьте выбранной опцию Действие (не возвращает ничего).
  4. Разверните секцию свойств Тело функции и введите код 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. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Как мы можем улучшить эту статью?
Обратная связь