В Vensim PLE есть ряд функций (они здесь не рассматриваются), определяющих типы переменных. Доступ к ним обеспечивает Редактор уравнений, с помощью которого можно выбирать тип и подтип переменной. Наиболее важной среди них является функция INTEG, которая позволяет задать переменную-уровень.
Таблица встроенных функций
A FUNCTION OF (#,A,B,C,,,) | Показывает отношения «генезиса» (автоматически реализуется инструментом построения диаграмм). |
ABS (A) | Функция модуля (абсолютная величина A). |
ACTIVE INITIAL (A,N) | Определяет дополнительную переменную с различными активным и начальным значениями |
DELAY FIXED (I,T,N) | Задерживает значение входной переменной на фиксированное время T,начиная с момента N. |
DELAY1 (I,T) | Экспоненциальная задержка первого порядка величины Iна время T,сохраняющая I. |
DELAY1I (I,T,N) | То же, что DELAY1, но, начиная с момента N. |
DELAY3 (I,T) | Экспоненциальная задержка третьего порядка величины Iна время T,сохраняющая I. |
DELAY3I (I,T,N) | То же, что DELAY3, но, начиная с момента N. |
EXP (X) | Равна e (2.718...) в степени X. |
IFTHEN ELSE (cond,X,Y) | Равна X,если condition(условие) ≠ 0, иначе − Y. |
INITIAL (A) | Функция инициализации A(сохраняется как константа). |
INTEG (R,N) | Функция численной интеграции R, начиная с момента N(задает Уровень). |
INTEGER (X) | Равна целой части Х. |
LN (X) | Натуральный логарифм X. |
MAX (A,B) | Максимум из Aи B. |
MIN (A,B) | Минимум из Aи B |
MODULO (X,B) | Равна остатку от деления Хна В. |
PULSE (A,B) | Импульсная функция амплитуды 1.0, начинающая в момент Aпродолжительностью Bединиц времени. |
RAMP (S,T1,T2) | Равна 0 до момента Т1, затем линейно возрастающая с наклоном Sдо момента Т2, затем − константа. |
RANDOM NORMAL (m,x,h,r,s) | Равна значению нормально распределенной случайной величины между mи xс математическим ожиданием hи дисперсией r,полученному с использованием датчика (источника) s. |
RANDOM UNIFORM (m,x,s) | Генератор значений случайной величины, равномерно распределенной на интервале от mдо x, s –источник псевдослучайных чисел. |
SIN (X) | Синус величины X,измеренной в радианах. |
SMOOTH (X,T) | Функция экспоненциального сглаживания первого порядка величины Xза время T. |
SMOOTH3 (X,T) | Функция экспоненциального сглаживания третьего порядка величины Xза время T. |
SMOOTH3I (X,T,N) | Функция экспоненциального сглаживания третьего порядка величины Xза время T,начиная с момента N. |
SMOOTHI (X,T,N) | Функция экспоненциального сглаживания первого порядка величины Xза время T,начиная с момента N. |
SQRT (X) | Корень квадратный из X. |
STEP (H,T) | Функция шага: равна 0 до момента T,а затем − H. |
WITH LOOKUP (x,(L#)) | Равна значению yдля пар (x,y)таблицы L#,соответствующему х. |
XIDZ (A,B,X) | Равна X,если B= 0, иначе − A / B. |
ZIDZ (A,B) | Равна (0.0), если B= 0, иначе − A / B. |
|
|
В Vensim PLE также есть специальные встроенные функции, предназначенные для проверки правдоподобия модели (автоматической проверки адекватной реакции модели на изменение условий имитации), т.е. для проверки того, «что будет, если…», и оценки жизнесообразности получаемых результатов. Имена подобных функций в пакете начинаются с RC (Контроль Реалистичности).
|
|
Детальное описание отдельных функций
A FUNCTION OF (#,A,B,C,...)
Замечание: Эта функция создается автоматически инструментом построения диаграмм, и ее использование не предполагается при написании уравнений модели
A FUNCTION OF отражает только наличие связей между переменными, она не описывает форму связи и, следовательно, не может быть вычислена. Эта функция недоступна в Редакторе Уравнений. В Текстовом Редакторе за уравнением, использующим функцию A FUNCTION OF, могут следовать одно или два уравнения, содержащие синтаксические ошибки или неполные причинные списки. В отличие от других функций, у функции A FUNCTION OF неопределенное число аргументов.
ACTIVE INITIAL(active eq, initial eq) − различает активные и начальные уравнения.
Эта функция описывает действующее уравнение для вычисления переменной во время имитации, кроме ситуации задания начальных условий − тогда она выдает начальное уравнение. Эта функция обычно используется для разрыва замкнутых циклов вычисления значений переменных.
Замечание: В редакторе формул (Equation Editor) функция ACTIVE INITIAL вводится автоматически, если выбрать тип Auxiliary (Дополнительная переменная) и подтип Initial.
ACTIVE INITIAL (входн. ед., входн. ед.) --> те же ед.
Пример.
Capacity = Integ (capacity adjust, target capacity)
target capacity = Capacity*adjust from utilization
Здесь начальное значение переменной Capacity требует значения переменной target capacity, которое, в свою очередь, требует значения Capacity. Поэтому для переменной target capacity должно использоваться уравнение:
target capacity = ACTIVE INITIAL (Capacity*adjust from utilization, 100)
Это позволит присвоить переменной Capacity начальное значение 100; первое значение target capacity будет равно Capacity*adjust from utilization, т.е. в общем случае не будет равно 100; начальное выражение используется только для вычисления начальных значений переменных состояния (уровней).
DELAY1 (input, delay time) – экспоненциальная задержка.
DELAY1I (input, delay time, initial value) – экспоненциальная задержка с заданным начальным значением.
Значение функции DELAY равно задержанному значению входной переменной. Экспоненциальная задержка первого порядка эквивалентна следующим уравнениям:
DELAY1=LV/delay time
LV=INTEG (input-DELAY1,input*delay time)
Таким образом, если входная переменная input принимает значения 50, 55, 60, и т.д., а время задержки составляет 3, то переменные LV и DELAY1 будут принимать значения:
Time | input | LV | DELAY1 |
0 | 50 | 150 | 50 |
1 | 55 | 150 | 50 |
2 | 60 | 155 | 51.6667 |
3 | 65 | 163.3333 | 54.4444 |
Функция DELAY1I отличается тем, что можно произвольно задать начальное значение LV:
DELAY1I=LV/delay time
LV=INTEG (input-DELAY1I,initial value*delay time)
См. также: DELAY3, DELAY3I, SMOOTH, SMOOTH3
DELAY1 (ед., время) --> единицы.
DELAY1I (ед., время, ед.) --> единицы.
Единицы измерения входных переменных соответствуют единицам измерения выходных переменных. Время задержки должно быть кратным временному шагу (TIME STEP) и измеряться в тех же единицах. Для функции DELAY1I единицы измерения начальных значений должны соответствовать единицам измерения входной переменной.