На этом этапе мы зададим начальную конфигурацию типа агента Transport.
Если у агента можно выделить несколько состояний, выполняющих различные действия при происхождении каких-то событий, или если у агента есть несколько качественно различных поведений, последовательно сменяющих друг друга при происхождении определенных событий, то поведение такого объекта может быть описано в терминах диаграммы состояний. Диаграмма состояний позволяет графически задать пространство состояний алгоритма поведения объекта, а также события, которые являются причинами срабатывания переходов из одних состояний в другие, и действия, происходящие при смене состояний.
С помощью диаграмм состояний можно графически задать дискретные поведения объектов любой сложности, куда более разнообразные, чем элементарные состояния свободен/занят (idle/busy), открыт/закрыт (open/closed), исправен/неисправен (up/down) и т.п., предлагаемые большинством блочных инструментов моделирования.
Диаграмма состояний представляет собой состояния, соединенные переходами. Переходы могут сработать в результате заданного в качестве условия перехода события - это может быть истечение заданного таймаута, получение диаграммой состояний сообщения, выполнение заданного логического условия и т.д. Срабатывание перехода приводит к переходу управления диаграммы состояний в то состояние, в которое ведет этот переход. Состояния могут быть иерархическими, т.e. содержать другие состояния и переходы.
Добавьте необходимые переменные
- Перейдите в панель Проекты и откройте двойным щелчком тип агента Transport.
- Добавьте элемент Переменная из палитры Агент.
- Назовите переменную request и выберите в качестве ее типа ServiceRequest:
- Таким же образом добавьте еще одну переменную. Назовите эту переменную type и в качестве ее типа выберите TransportType.
Нарисуйте диаграмму состояний транспорта
Мы используем элементы палитры Диаграмма состояний, чтобы задать поведение этого типа агента.
- Перетащите элемент Начало диаграммы состояний в графический редактор типа агента Transport. Этот элемент задает начало всей диаграммы.
- Добавьте Состояние , перетащив этот элемент из палитры Диаграмма состояний, и поместите его в конец стрелки начала диаграммы состояний.
- Чтобы добавить переход, сделайте двойной щелчок по элементу Переход в палитре. Его иконка поменяется на , это значит, что элемент теперь в режиме рисования. Вы можете рисовать переходы, делая щелчки по состояниям. Удостоверьтесь, что элементы соединяются друг с другом. Когда они соединены, AnyLogic отображает зеленую точку в месте соединения.
- На этом шаге мы создадим "пустую" диаграмму состояний, которая состоит из четырех состояний, шести переходов разных типов и одного ветвления.
- Состояния называются AtCenter (в сервисном центре), MovingToMC (движение к сервисному центру), Servicing (обслуживание турбины), MovingToTurbine (движение к турбине). Это, собственно, все действия и передвижения грузовиков и вертолетов в нашей модели. Пожалуйста, следуйте структуре диаграммы, представленной на рисунке ниже.
- Внутренние настройки и условия некоторых состояний и переходов должны будут ссылаться на элементы модели, которые мы еще не создали. С другой стороны, нам уже сейчас необходима эта диаграмма, поскольку на нее ссылаются некоторые из тех элементов, которые мы зададим позднее. Поэтому в следующих фазах мы продолжим разрабатывать другие типы агентов, а логику типа Transport закончим в самом конце разработки модели.
Давайте теперь зададим выбор типа транспортного средства в зависимости от запроса и доступность этих средств в сервисном центре.
-
Как мы можем улучшить эту статью?
-