AnyLogic поддерживает специальный тип функций – табличные функции. Табличная функция – это функция, заданная в табличной форме. Она может быть сделана непрерывной с помощью интерполяции и экстраполяции.
Табличные функции обычно используются для задания сложных нелинейных зависимостей, которые не могут быть описаны с помощью стандартных функций, или для приведения собранных с какой-то периодичностью и заданных в виде таблицы экспериментальных данных к непрерывному виду.
Табличная функция работает следующим образом: пользователь задает функцию путем задания пар значений (аргумент, значение), т.е. определенного количества базовых точек графика XY. Основываясь на этих данных и на выбранном типе интерполяции, AnyLogic строит табличную функцию.
Для того, чтобы получить значение, которое принимает табличная функция для заданного аргумента, вызовите табличную функцию (так же, как и обычную функцию) по ее имени, передав ей в качестве параметра значение аргумента. Если аргумент будет лежать за областью допустимых значений, то функция вернет значение в соответствии с заданным Вами поведением (задается в свойстве функции Если аргумент выходит за пределы).
Чтобы задать
табличную функцию
из
палитры Системная
динамика
на диаграмму
класса активного объекта (или эксперимента).
.
.Имя – Имя табличной функции.
Отображать имя – Если опция выбрана, то имя табличной функции будет отображаться в графическом редакторе.
Исключить – Если опция выбрана, то табличная функция будет исключена из модели.
На презентации – Если опция выбрана, то табличная функция будет отображаться на презентации во время выполнения модели.
Уровень
доступа –
Уровень доступа к функции.
Есть четыре уровня доступа:
private
–
функция доступна только из этого класса активного объекта
protected
- функция
доступна из этого класса активного объекта и его подклассов
default
- функция
доступна из любого места модели
public
- функция
доступна из всех открытых моделей.
Статическая – Если опция выбрана, то функция будет статической. Статическая функция инициализируется только однажды и имеет одинаковые данные для всех элементов класса активного объекта, в котором она задана. Это очень полезно в агентных моделях, в том случае, если у агентов задана табличная функция. Сделав такую функцию статической, Вы предотвратите многократную инициализацию функции в каждом активном объекте.
Использовать единицы измерения – Если опция выбрана, то Вы можете задать единицы измерения для возвращаемого функцией значения (в расположенном справа поле Единица измерения).
Интерполяция – Тип интерполяции табличной функции:
Если аргумент выходит за пределы – определяет, как ведет себя функция, если аргумент выходит за границы заданного диапазона:
Ошибка – Если аргумент будет лежать за пределами допустимой области, то будет показано сообщение об ошибке.
Ближайший – Для всех аргументов слева (справа) от допустимой области функция равна значению, которое она принимает в самой левой (правой) точке допустимой области.
Повторение – Функция делается периодической. Периодом функции будет являться ее диапазон значений.
Другой – Если аргумент будет лежать за пределами допустимой области, то табличная функция будет возвращать значение, заданное в соседнем с этой опцией поле Значение.
Экстраполяция – Функция экстраполируется за пределы области в соответствии с выбранным типом интерполяции.
Табличные
данные –
В этой таблице задаются данные табличной функции. Каждая пара Аргумент-Значение
задается
в отдельной строке таблицы. Чтобы задать новую пару
"аргумент-значение", перейдите в последнюю строку таблицы и введите
значение аргумента в ячейке Аргумент,
а соответствующее этому аргументу значение функции - в ячейке Значение. Чтобы
удалить
какую-то пару
значений, выделите соответствующую строку таблицы и щелкните по
кнопке Удалить
.
Если данные табличной функции уже заданы в каком-то файле или
приложении, то Вы можете просто скопировать их в Буфер обмена, а затем
вставить их в таблицу Табличные
данные, щелкнув по
кнопке Вставить
из буфера
.
Интерполяция
табличной
функции
Поведение
функции за пределами области допустимых значений