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

Шаг 3. Настройка логических процессов транспорта

На этом этапе мы зададим начальную конфигурацию типа агента Transport.

Если у агента можно выделить несколько состояний, выполняющих различные действия при происхождении каких-то событий, или если у агента есть несколько качественно различных поведений, последовательно сменяющих друг друга при происхождении определенных событий, то поведение такого объекта может быть описано в терминах диаграммы состояний. Диаграмма состояний позволяет графически задать пространство состояний алгоритма поведения объекта, а также события, которые являются причинами срабатывания переходов из одних состояний в другие, и действия, происходящие при смене состояний.

С помощью диаграмм состояний можно графически задать дискретные поведения объектов любой сложности, куда более разнообразные, чем элементарные состояния свободен/занят (idle/busy), открыт/закрыт (open/closed), исправен/неисправен (up/down) и т.п., предлагаемые большинством блочных инструментов моделирования.

Диаграмма состояний представляет собой состояния, соединенные переходами. Переходы могут сработать в результате заданного в качестве условия перехода события - это может быть истечение заданного таймаута, получение диаграммой состояний сообщения, выполнение заданного логического условия и т.д. Срабатывание перехода приводит к переходу управления диаграммы состояний в то состояние, в которое ведет этот переход. Состояния могут быть иерархическими, т.e. содержать другие состояния и переходы.

Добавьте необходимые переменные

  1. Перейдите в панель Проекты и откройте двойным щелчком тип агента Transport.
  2. Добавьте элемент Переменная из палитры Агент.
  3. Назовите переменную request и выберите в качестве ее типа ServiceRequest:

  4. Таким же образом добавьте еще одну переменную. Назовите эту переменную type и в качестве ее типа выберите TransportType.

Нарисуйте диаграмму состояний транспорта

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

  1. Перетащите элемент Начало диаграммы состояний в графический редактор типа агента Transport. Этот элемент задает начало всей диаграммы.
  2. Добавьте Состояние , перетащив этот элемент из палитры Диаграмма состояний, и поместите его в конец стрелки начала диаграммы состояний.
  3. Чтобы добавить переход, сделайте двойной щелчок по элементу Переход в палитре. Его иконка поменяется на , это значит, что элемент теперь в режиме рисования. Вы можете рисовать переходы, делая щелчки по состояниям. Удостоверьтесь, что элементы соединяются друг с другом. Когда они соединены, AnyLogic отображает зеленую точку в месте соединения.

  4. На этом шаге мы создадим "пустую" диаграмму состояний, которая состоит из четырех состояний, шести переходов разных типов и одного ветвления.
  5. Состояния называются AtCenter (в сервисном центре), MovingToMC (движение к сервисному центру), Servicing (обслуживание турбины), MovingToTurbine (движение к турбине). Это, собственно, все действия и передвижения грузовиков и вертолетов в нашей модели. Пожалуйста, следуйте структуре диаграммы, представленной на рисунке ниже.

  6. Внутренние настройки и условия некоторых состояний и переходов должны будут ссылаться на элементы модели, которые мы еще не создали. С другой стороны, нам уже сейчас необходима эта диаграмма, поскольку на нее ссылаются некоторые из тех элементов, которые мы зададим позднее. Поэтому в следующих фазах мы продолжим разрабатывать другие типы агентов, а логику типа Transport закончим в самом конце разработки модели.
Демо-модель: Maintenance — Phase 3 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Давайте теперь зададим выбор типа транспортного средства в зависимости от запроса и доступность этих средств в сервисном центре.

Как мы можем улучшить эту статью?