В Java, чтобы вызвать функцию (или метод, что является более точным термином в объектно-ориентированных языках наподобие Java, поскольку функция является методом класса), Вам нужно написать имя функции, за которым будут следовать значения ее аргументов (в скобках). Например, ниже приведен вызов функции треугольного вероятностного распределения с тремя численными аргументами:
triangular( 2, 5, 14 )
А следующий вызов функции распечатывает в лог модели координаты агента вместе с временной меткой:
traceln( time() ": X = " getX() " Y = " getY() );
Аргумент этого вызова функции является строковым выражением, состоящим из пяти компонент, три из которых также являются вызовами функций: time(), getX() и getY().
Функция может либо возвращать значение, либо нет. Например, вызов функции time() возвращает текущее модельное время - значение типа double, а вызов функции traceln() не возвращает никакого значения. Если функция возвращает значение, она может быть использована в выражении (например, функция time() была использована в выражении traceln()). Если функция не возвращает значение, она может быть вызвана только в операторе - (точка с запятой после вызова traceln() показывает, что это оператор).
Большая часть кода, который Вы пишете в AnyLogic, является кодом подкласса
Agent
(основного класса исполняющего модуля AnyLogic). Для Вашего удобства системные функции AnyLogic и наиболее часто используемые стандартные функции Java доступны там напрямую (Вам не нужно думать, какому классу или пакету они принадлежат, и Вы
можете вызывать эти функции без каких бы то ни было префиксов). Ниже приведены примеры (это лишь некоторые функции из нескольких сотен, полный список Вы можете найти в Справочнике классов AnyLogic ).
Математические функции
(импортированы из класса
java.lang.Math, всего около 45 функций):
Функции, связанные с модельным временем, датой или элементами даты (около 20 функций):
Функции вероятностных распределений
(поддерживается более 30 распределений):
Вывод в лог модели и форматирование:
Управление выполнением модели:
Навигация по структуре и окружению модели:
Если объект является агентом,
то он поддерживает дополнительные функции:
Функции, связанные с сетями и взаимодействием агентов:
Функции, связанные с пространством и движением:
Вы можете получить список всех функций, доступных в текущем
контексте, например, в поле свойства элемента, вызвав Мастер подстановки кода
(нажав Ctrl пробел (Mac OS:
Alt пробел)).
Все элементы модели AnyLogic (события, диаграммы состояний, табличные функции, графики, графические фигуры, элементы управления, объекты библиотек и т.д.) отображаются в Java объекты и предоставляют в пользование свои поля и методы, с помощью которых Вы можете получить информацию об объектах и управлять ими.
Вот некоторые примеры вызова функций элементов текущего агента:
Планирование и отмена запланированных событий:
Посылка сообщений диаграмме состояний и проверка текущего состояния:
Отображение области просмотра:
Изменение цвета фигуры:
Получение текущего значения элемента управления - флажка:
Эта строка кода прячет или показывает фигуру, в зависимости от текущего состояния флажка checkbox:
Изменение состояний и значений параметров вложенных агентов:
Обратите внимание, что параметр rate
отображается на панели свойств объекта как Интенсивность прибытия.
Вы можете получить список всех функций объекта, вызвав Мастер подстановки кода. Для этого напишите в коде имя объекта, поставьте точку и затем вызовите Мастер, нажав Ctrl пробел (Mac OS: Alt пробел).
Вы можете задавать свои собственные функции в агентах, экспериментах, Ваших собственных Java классах. Для типов агента и экспериментов функции могут задаваться графически, как элементы графического редактора.
Другой способ задания функции - написание ее в Дополнительном коде класса в секции
свойств типа агента или эксперимента Java
для экспертов, см. рисунок ниже.