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

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

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

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

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

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

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

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

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

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

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

Контрольная модель: Maintenance - Phase 3

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


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

          Шаг 4. Настройка поведения сервисного центра