AnyLogic позволяет пользователям создавать свои собственные функции. С помощью функций Вы можете единожды задать определенную последовательность действий (обычно - вычислений, возвращающих результат), которую нужно будет выполнять из разных мест (или в разные моменты жизни) модели. Функции пишутся на языке Java, поэтому в Вашем распоряжении имеются все преимущества этого языка, такие, как, например, условные операторы (if-then-else), циклические операторы (while, for), операторы ветвления (switch) и т.д.
AnyLogic поддерживает диаграммы действий - структурированные блок-схемы, позволяющие задавать алгоритмы графически в стиле структурированного программирования. Диаграммы действий облегчают задание алгоритмов, делая необязательным знание синтаксиса Java операторов. Использование диаграмм действий дает еще одно преимущество: с их помощью Вы можете визуализировать алгоритмы, делая их более понятными для других пользователей модели.
AnyLogic поддерживает специальный тип функций – табличные функции. Табличная функция – это функция, заданная в табличной форме. Она может быть сделана непрерывной с помощью интерполяции и экстраполяции. Табличные функции обычно используются для задания сложных нелинейных зависимостей, которые не могут быть описаны с помощью стандартных функций, или для приведения собранных с какой-то периодичностью и заданных в виде таблицы экспериментальных данных к непрерывному виду.
Чтобы задать функцию
из
палитры Основная
на диаграмму класса активного объекта (или эксперимента).Имя – Имя функции.
Отображать имя – Если опция выбрана, то имя функции будет отображаться в графическом редакторе.
Исключить – Если опция выбрана, то функция будет исключена из модели.
На презентации – Если опция выбрана, то функция будет отображаться на презентации во время выполнения модели.
Уровень
доступа – Уровень доступа к функции.
Есть четыре уровня доступа:
private
– функция доступна только из этого класса активного объекта
protected
- функция
доступна из этого класса активного объекта и
его подклассов
default
- функция
доступна из любого места модели
public
- функция
доступна из всех открытых моделей.
Статическая – Если опция выбрана, то функция будет статической. Статическая функция не требует создания экземпляров того класса активного объекта, в котором она задана. Статическая функция мояфункция, объявленная в классе активного объекта MyClass, будет доступна из любого места модели как MyClass.мояфункция().
Тип возвращаемого значения–
Тип возвращаемого функцией значения. Если Вам нужно, чтобы функция
возвращала результат проведенных ею вычислений, то Вам нужно будет
указать здесь, какого типа будет возвращаемое значение. Функция может
возвращать как значение одного из наиболее часто используемых типов (int, double, boolean, String), так и
значение любого другого (и это уникальная особенность AnyLogic)
Java класса (в этом случае Вам нужно будет выбрать опцию Другой и ввести имя
класса в расположенном справа поле).
Если функция не возвращает ничего, выберите void.
Использовать единицы измерения – Если опция выбрана, то Вы можете задать единицы измерения для возвращаемого функцией значения (в расположенном справа поле Единица измерения).
Аргументы функции – Здесь Вы можете задать аргументы функции, с помощью которых Вы сможете передавать функции данные, необходимые для вычислений. Каждый аргумент задается в отдельной строке таблицы.
Тело функции
– Введите здесь тело функции. Функции пишутся на языке
Java, поэтому в Вашем распоряжении имеются все преимущества этого
языка, такие, как, например, условные операторы (if-then-else),
циклические
операторы (while, for),
операторы ветвления (switch)
и т.д. Также Вы можете оперировать здесь аргументами
функции.
Последняя строка должна возвращать значение с помощью оператора return.
Если Вам будет нужно передавать функции какие-то данные, необходимые для проведения вычислений, Вы можете использовать для этого аргументы функции.
Чтобы задать
аргументы
функцииЕсли Вы зададите у функции аргументы, то при каждом вызове этой функции Вам будет нужно передавать ей значения этих аргументов (в том же порядке, в каком они заданы в таблице Аргументы функции).
AnyLogic
позволяет изменять порядок следования аргументов в таблице с
помощью кнопок
и
. Чтобы
удалить аргумент, выделите соответствующую строку в таблице и щелкните
по кнопке
.
По умолчанию функции могут вызываться из любого места модели, в которой они заданы. Вы можете ограничить доступ к функции, изменив ее уровень доступа с помощью выпадающего списка Уровень доступа.
Есть четыре уровня доступа:
private – функция доступна только из этого класса активного объекта
protected - функция доступна из этого класса активного объекта и его подклассов
default - функция доступна из любого места модели
public - функция доступна из всех открытых моделей.