Как вы, должно быть, уже видели в окне работающей модели, созданной на предыдущем шаге, вагоны в нашей модели отличались исключительно цветом. Шаг 3 будет посвящен созданию различных типов вагонов.
AnyLogic предоставляет удобный Мастер создания типа вагона. Просто укажите имя нового типа вагона и выберите фигуру анимации из списка готовых 3D объектов.
Задайте типы вагонов
- Создайте новый Тип вагона, перетащив элемент Тип вагона из палитры Железнодорожная библиотека на графическую диаграмму Main.
- Откроется окно Мастера Создание агентов. Укажите Имя нового типа как Locomotive, оставьте опцию Создать новый тип агента "с нуля" выбранной. Нажмите Далее.
- Выберите Locomotive 14.1m в качестве его фигуры анимации в 3D режиме.
-
Добавьте еще 5 типов вагонов таким же образом. Назовите их:
BoxCar
Выберите соответствующие 3D фигуры анимации для каждого типа вагона: Крытый вагон, Открытый вагон, Полувагон, Цистерна, Хоппер.
OpenCar
GondolaCar
TankCar
HopperCar - Таким же образом создайте тип поезда (перетащив элемент Тип поезда из палитры Железнодорожной библиотеки). Назовите его Train.
Измените свойства блока TrainSource
Давайте укажем блоку trainSource, чтобы он создавал поезда нашего типа Train:
- В поле Новый поезд выберите Train
- В поле Новый вагон переключитесь к полю для введения кода, щелкнув по иконке , которая сменится на , позволив написать Java выражение.
-
Введите следующее выражение:
carindex == 0 ? new Locomotive() : randomlyCreate(OpenCar.class, BoxCar.class, GondolaCar.class, HopperCar.class, TankCar.class)
При вводе Java-кода пользуйтесь Мастером подстановки кода, доступным по нажатию в поле ввода клавиш Ctrl + пробел (macOS: Alt + пробел). С его помощью вы узнаете список доступных функций и элементов модели и сможете просто выбрать нужное вам имя из списка, тем самым избежав возможных ошибок при написании имени.Здесь мы используем условный оператор Java для того, чтобы создавать вагоны различных типов. Когда блок TrainSource создает новый поезд, он последовательно вызывает выражение, заданное в поле Новый вагон, для каждого создаваемого вагона поезда. Локальная переменная carindex хранит индекс только что созданного вагона. Наше выражение проверяет выполнение условия carindex==0. Если индекс равен нулю (то есть, мы имеем дело с первым вагоном состава), то будет выполнено выражение, написанное после знака ?
Выражение new Locomotive() создаст вагон типа Locomotive.
Если заданное логическое условие вернет false, это будет значить, что сейчас создается не первый вагон состава. В этом случае мы воспользуемся функцией randomlyCreate(), чтобы случайным образом выбрать один из типов грузовых вагонов, заданных нами на прошлом шаге. Список типов вагонов мы передаем функции в качестве ее аргументов.
В результате, у нас будет поезд с локомотивом в качестве первого вагона, за которым следуют десять вагонов созданных нами типов.
Наблюдайте за моделью в 3D режиме
- Добавьте 3D окно из палитры Презентация и поместите его под диаграммой процесса и анимацией.
- Запустите модель. При создании 3D окна, AnyLogic добавляет область просмотра, которая позволяет легко переключаться к сцене 3D анимации во время выполнения модели. Чтобы переключиться к 3D анимации в запущенной модели, откройте панель отладки, щелкнув по кнопке Показать/скрыть панель разработчика в правом углу панели управления. В открывшейся панели отладки, раскройте список Выбрать область и показать и выберите опцию [window3d].
- Теперь вы видите поезд, который начинается с локомотива, за которым следуют десять вагонов других типов.
-
Как мы можем улучшить эту статью?
-