Табличная функция

AnyLogic поддерживает специальный тип функций – табличные функции. Табличная функция – это функция, заданная в табличной форме. Она может быть сделана непрерывной с помощью интерполяции и экстраполяции.

Табличные функции обычно используются для задания сложных нелинейных зависимостей, которые не могут быть описаны с помощью стандартных функций, или для приведения собранных с какой-то периодичностью и заданных в виде таблицы экспериментальных данных к непрерывному виду.

Табличная функция работает следующим образом: пользователь задает функцию путем задания пар значений (аргумент, значение), т.е. определенного количества базовых точек графика XY. Основываясь на этих данных и на выбранном типе интерполяции, AnyLogic строит табличную функцию. 

Для того, чтобы получить значение, которое принимает табличная функция для заданного аргумента, вызовите табличную функцию (так же, как и обычную функцию) по ее имени, передав ей в качестве параметра значение аргумента. Если аргумент будет лежать за областью допустимых значений, то функция вернет значение в соответствии с заданным Вами поведением (задается в свойстве функции Если аргумент выходит за пределы).

 Чтобы задать табличную функцию

  1. Перетащите элемент Табличная функция  из палитры Системная динамика на диаграмму класса активного объекта (или эксперимента).
  2. Перейдите на страницу Основные панели Свойства и задайте свойства табличной функции.
  3. Введите имя функции в поле Имя.
  4. Задайте данные табличной функции в таблице Табличные данные. Каждая пара Аргумент-Значение задается в отдельной строке таблицы. Чтобы задать новую пару "аргумент-значение", перейдите в последнюю строку таблицы и введите значение аргумента в ячейке Аргумент, а соответствующее этому аргументу значение функции - в ячейке Значение. Вы можете отсортировать данные по аргументу (в возрастающем порядке) с помощью кнопки Сортировать .
  5. Если данные табличной функции уже заданы в каком-то файле или приложении, то Вы можете просто скопировать их в Буфер обмена, а затем вставить их в таблицу Табличные данные, щелкнув по кнопке Вставить из буфера .
  6. Выберите тип интерполяции функции из выпадающего списка Интерполяция.
  7. Выберите требуемый тип поведения функции при выходе аргумента за пределы заданного диапазона из выпадающего списка Если аргумент выходит за пределы.
График табличной функции Вы можете увидеть в секции предварительного просмотра на странице свойств этой функции. Красная область на этом графике обозначает область недопустимых значений функции.
Основные свойства

Имя – Имя табличной функции

Отображать имя – Если опция выбрана, то имя табличной функции будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то табличная функция будет исключена из модели.

На презентации – Если опция выбрана, то табличная функция будет отображаться на презентации во время выполнения модели.

Уровень доступа – Уровень доступа к функции. Есть четыре уровня доступа:
    private – функция доступна только из этого класса активного объекта
    protected
функция доступна из этого класса активного объекта и его подклассов
    default
функция доступна из любого места модели
    public
функция доступна из всех открытых моделей.

Статическая – Если опция выбрана, то функция будет статической. Статическая функция инициализируется только однажды и имеет одинаковые данные для всех элементов класса активного объекта, в котором она задана. Это очень полезно в агентных моделях, в том случае, если у агентов задана табличная функция. Сделав такую функцию статической, Вы предотвратите многократную инициализацию функции в каждом активном объекте.

Использовать единицы измеренияЕсли опция выбрана, то Вы можете задать единицы измерения для возвращаемого функцией значения (в расположенном справа поле Единица измерения). 

Интерполяция – Тип интерполяции табличной функции:

Нет – Интерполяция не используется.
Ступенчатая – Ступенчатая интерполяция. Значение функции на интервале между двумя точками равно значению функции в точке с меньшим аргументом.
Линейная – Линейная интерполяция. Точки соединяются прямыми линиями.
Сплайн – Сплайн-интерполяция 4-го порядка. Точки соединяются  полиномом четвертой степени. В каждой точке значения функции, а также первой и второй производных, должны быть равны слева и справа. Вторая производная в крайних точках должна быть равна нулю.
Аппроксимация – Функция будет аппроксимирована полиномом порядка, заданного в поле Порядок, у которого сумма среднеквадратичных погрешностей в точках минимальна.

Если аргумент выходит за пределы – определяет, как ведет себя функция, если аргумент выходит за границы заданного диапазона:

Ошибка – Если аргумент будет лежать за пределами допустимой области, то будет показано сообщение об ошибке.

Ближайший – Для всех аргументов слева (справа) от допустимой области функция равна значению, которое она принимает в самой левой (правой) точке допустимой области.

Повторение – Функция делается периодической. Периодом функции будет являться ее диапазон значений.

Другой – Если аргумент будет лежать за пределами допустимой области, то табличная функция будет возвращать значение, заданное в соседнем с этой опцией поле Значение.

Экстраполяция – Функция экстраполируется за пределы области в соответствии с выбранным типом интерполяции.

Табличные данные – В этой таблице задаются данные табличной функции. Каждая пара Аргумент-Значение задается в отдельной строке таблицы. Чтобы задать новую пару "аргумент-значение", перейдите в последнюю строку таблицы и введите значение аргумента в ячейке Аргумент, а соответствующее этому аргументу значение функции - в ячейке Значение. Чтобы удалить какую-то пару значений, выделите соответствующую строку таблицы и щелкните по кнопке Удалить .
Если данные табличной функции уже заданы в каком-то файле или приложении, то Вы можете просто скопировать их в Буфер обмена, а затем вставить их в таблицу Табличные данные, щелкнув по кнопке Вставить из буфера .


См. также

 Интерполяция табличной функции

 Поведение функции за пределами области допустимых значений

 Доступ к данным табличной функции

 Справочник классов: Класс TableFunction