
- •1. Главное меню
- •2. Главная панель инструментов
- •3. Панель инструментов для построения диаграмм
- •4. Статусная панель
- •5. Панель инструментов анализа
- •6. Панель управления
- •7. Встроенные функции и ключевые слова Vensim ple
- •8. Детальное описание отдельных функций
- •If then else (cond, X, y) – Традиционный оператор «если-то».
- •Initial (a) – начальное значение [ переменная].
- •Integ (rate, initial value) –численное интегрирование.
- •Xidz (a,b,X) – Функция деления с корректировкой деления на 0.
If then else (cond, X, y) – Традиционный оператор «если-то».
Равняется второму аргументу (X), если условие (cond) истинно; и третьему аргументу (Y), если условие ложно. Условие должно быть Булевым выражением или выражением, или переменной, которые могут интерпретироваться как Булевы. Вычисляется только то значение, которому будет равно значение функции, поэтому второе выражение может быть ошибочным. При задании условия в этом операторе могут использоваться логические операции И, ИЛИ, НЕ – они записываются в операторе как :AND:, :OR:, :NOT:
IF THEN ELSE (безразмерн., ед., ед.) --> ед.
Примеры
IF THEN ELSE ( 1.0<2.0, 3.0, 4.0 ) равняется 3.0
IF THEN ELSE ( 1.0>2.0, 3.0, 4.0 ) равняется 4.0
IF THEN ELSE (X = 0.0, 1.0, 1.0 / X ) равно 1/X пока X равен 1.0. Если X равен 0.0,
Vensim PLE не будет пытаться вычислить 1/X, и ошибка вычисления не возникнет.
Initial (a) – начальное значение [ переменная].
Данная функция равняется начальному значению A, которое сохраняется все время моделирования. Она используется для «запоминания» и сохранения начального значения переменной. Для ее описания используется тип Initial в Редакторе уравнений.
Initial (unit) --> unit.
Пример:
x init = INITIAL (x)
Здесь переменная x init устанавливается равной первому (начальному) значению переменной x.
Integ (rate, initial value) –численное интегрирование.
Функция равна результату численного интегрирования темпа. Аргумент initial value равен значению уровня (т.е. переменной, стоящей в левой части уравнения) в начальный момент имитации.
Ограничения: имя функции INTEG должно следовать непосредственно за знаком равенства в записи уравнения типа «уровень». Функция INTEG будет выбрана автоматически, если в Редакторе уравнений выбрать тип переменной Level (Уровень) и подтип Normal (для переменных, помещенных на диаграмме в прямоугольные рамки, это принято по умолчанию).
INTEG (unit/time, unit) --> unit.
Единицы измерения для интегральной функции должны быть те же, что и для начального условия. Интегрируемый темп должен иметь те же единицы измерения, деленные на единицы измерения временного шага (TIME STEP).
Примеры:
Правильно:
L = INTEG (R * SUM(A[ S1! ]),0.0)
L = INTEG (MAX(A, B),C)
Неправильно:
L = A + INTEG (R, 0.0)
L = INTEG (B, 0.0) + 1.0
L = 2.0 * INTEG (R, 0.0) + 1.0
Функция INTEG должна следовать сразу за знаком равенства и не может быть частью более сложного математического выражения. Приведенные выше неправильные выражения превращаются в корректные путем введения дополнительной переменной для выполнения соответствующих действий, а именно:
L = INTEG (R, 0.0)
aux = A + L
LN (X) – натуральный логарифм.
То же, что LOG (X, 2.718282). См. также: LOG, EXP, POWER.
LN (dimensionless) --> dimensionless (аргумент должен быть безразмерным).
Примеры:
LN (2.718282) равен 1.0.
LN (-5.0) вызовет ошибку (LN числа ≤0 не определен).
LN (EXP(2.0)) равен 2.0 (по определению).
MAX (A,B) – максимум из двух альтернатив.
То же, что IF THEN ELSE(A > B, A, B).
MAX (unit, unit) --> unit (все аргументы должны иметь одни и те же единицы измерения)
MIN (A,B) − минимум из двух альтернатив.
То же, что IF THEN ELSE(A < B, A, B).
MIN (unit, unit) --> unit (все аргументы должны иметь одинаковые единицы измерения).
PULSE (start, width) – импульсная функция единичной амплитуды с заданным
началом и продолжительностью импульса.
Функция принимает значение, равное единице, начиная с момента времени, определенного аргументом start, в течение интервала времени, задаваемого вторым аргументом (width);в остальные моменты времени равна нулю. То же, что:
IF THEN ELSE (time plus > start
:AND: time plus < (start + width)),1.0,0.0 )
time plus = Time + (TIME STEP / 2.0)
В функции PULSE Vensim PLE создает внутреннюю переменную time plus автоматически, чтобы избежать ошибок округления при сравнении значений Time (текущее время) и start+width.
Замечание: выходное значение функции PULSE изменяется только в соответствии с временным интервалом (TIME STEP), независимо от используемой техники интегрирования.
PULSE (time, time) --> dimensionless (начало и продолжительность импульса измеряются в тех же единицах, что и время, значение функции – безразмерная величина).
Пример:
task active = PULSE (task start, task duration)
RAMP (slope, start time, end time) – тестовая экзогенная переменная.
Функция равна нулю до момента, определенного вторым операндом (start time), затем линейно возрастает с наклоном slope до момента, заданного третьим аргументом (end time), после чего не меняется. То же, что:
IF THEN ELSE ( Time > start time, IF THEN ELSE ( Time < end time :AND: end time > Time, slope*(Time − start time), slope*(end time − start time), 0).
Замечание. Изменение значений функции RAMP происходит только на определенных шагах моделирования (TIME STEP), независимо от используемой схемы интегрирования.
RAMP (units, time, time) --> units*time (start time и end time измеряются в тех же единицах, что и время (Time), значение функции RAMP измеряется в единицах, равных произведению ед. наклона на время.
Пример:
RAMP (1, 10, 25) будет равняться 0 до 10-го момента времени, линейно возрастет до значения 15 в 25-й момент времени и на оставшихся шагах моделирования сохранит значение 25.
RANDOM NORMAL (m,x,h,r,s) – генератор значений нормально распределенной случайной величины. Генерирует нормальное распределение с математическим ожиданием 0 и дисперсией, равной 1, которое затем растягивается, смещается и усекается. В результате функция выдает значения нормально распределенной величины с мат. ожиданием h и дисперсией r, и отсечением значений меньше m и больше x. Единицы измерения r должны соответствовать единицам m, x и h.
Источник шума.
Когда в качестве источника (s) псевдослучайных чисел в функциях RANDOM используется ноль, формируется скрытый источник шума. Контролировать его можно, создав переменную в модели (обычно экзогенную), называемую NOISE SEED. Когда в модели есть такая переменная, она используется для инициализации потоков шума. Изменяя NOISE SEED, можно генерировать альтернативные потоки шума в разных прогонах.
Примеры:
driving error1 = RANDOM NORMAL (0,20,12,5,2)
driving error2 = RANDOM NORMAL (0,20,12,5,2)
Эти операторы будут генерировать u1076 два различных потока шума с одинаковыми статистическими характеристиками. Добавление к этим операторам третьего driving error3 = RANDOM UNIFORM (0,20,2) изменит их. А добавление вместо него оператора driving error3 = RANDOM UNIFORM (0,20,0) оставит первые два потока шума неизменными.
RANDOM UNIFORM (m,x,s) – генератор случайной величины, равномерно распределенной между m и x. Каждая такая процедура генерирует значение случайной величины. Числа, получаемые при каждом обращении к процедуре, различны. Эта функция также используется для введения «шума» в ходе имитации.
m – минимальное значение, которому может равняться функция. Меньшие значения будут отбрасываться. Отсечение происходит после растяжки и смещения выходных значений.
x – максимальное значение функции. Большие значения будут отсекаться.
s – источник (генератор) псевдослучайных чисел. Если s задается равным 0, будет использоваться скрытый поток шума. Он может контролироваться с помощью переменной NOISE SEED, описанной выше. Для каждого отличного от нуля значения s будет создан отдельный поток шума. Можно удваивать потоки шума, задавая для них один и тот же источник, но эти потоки не будут идентичными (см. примеры).
Замечание. Источник шума s должен задаваться числом или константой. Если в качестве s будет использоваться переменная, то каждое новое ее значение будет порождать новую последовательность значений случайной величины.
Примеры:
driving error1 = RANDOM UNIFORM (0,20,0)
driving error2 = RANDOM NORMAL (0,20,0)
Эти уравнения модели будут порождать два различных потока шума с одинаковыми статистическими характеристиками.
SIN (X) − равна синусу X.
Иногда SIN (X) полезно использовать для проверки динамического выхода (отклика) системы. SIN – периодическая функция X в диапазоне от 0 до 2pi радиан.
SIN (dimensionless) --> dimensionless
Примеры:
sin (0.0) равен 0.0
sin (1.0) равен 0.84147
SMOOTH (input, delay time) – функция экспоненциального сглаживания.
SMOOTHI (input, delay time, initial value) – функция экспоненциального сглаживания с заданным начальным значением.
Эквивалентна уравнениям:
SMOOTH=INTEG ((input-SMOOTH)/delay time,input)
SMOOTHI=INTEG ((input-SMOOTHI)/delay time, initial value)
См. также: DELAY1, DELAY3, SMOOTH3
SMOOTH (units,time) --> units
SMOOTHI (units,time,units) --> units
Единицы измерения входных переменных соответствуют единицам измерения функции. Единицы измерения времени задержки должны соответствовать временному шагу (TIME STEP). Для функции SMOOTHI единицы измерения начального значения должны совпадать с единицами измерения входной переменной.
Примеры:
S = STEP (10,40)
SS = SMOOTH (S,20)
SSI = SMOOTHI (S,20,5)
Приводимый рис. 14 иллюстрирует результат, получаемый при использовании данных операторов в модели:
Рис.3. Иллюстрация использования операторов SMOOTH
SMOOTH3 (input, delay time) – функция экспоненциального сглаживания третьего порядка.
SMOOTH3I (input, delay time, initial value) – то же с заданием начального значения.
Функции осуществляют экспоненциальное сглаживание третьего порядка входной переменной (input) эквивалентно уравнениям:
SMOOTH3=INTEG ((LV2-SMOOTH3)/DL,input)
LV2=INTEG ((LV1-LV2)/DL,input)
LV1=INTEG ((IN-LV1)/DL,input)
DL=delay time/3
SMOOTH3I=INTEG ((LV2-SMOOTH3I)/DL,initial value)
LV2=INTEG ((LV1-LV2)/DL,initial value)
LV1=INTEG ((IN-LV1)/DL,initial value)
DL=delay time/3
Замечание. Функция SMOOTH3 не сохраняет материал, если время задержки изменяется. Она предназначения для отображения информационных задержек.
SMOOTH3 (units, time) --> units.
SMOOTH3I (units, time,units) --> units.
Для единиц измерения справедливы те же правила, что и в функциях SMOOTH и SMOOTHI.
Пример:
S = STEP (10,40)
SS = SMOOTH3 (S,20)
SSI = SMOOTH3I (S,20,5)
Результат использования данных функций иллюстрируется приведенными ниже графиками (рис.15).
Рис. 4. Иллюстрация использования функций SMOOTH
SQRT (X) – квадратный корень из X.
То же, что: POWER (X, 0.5).
SQRT (dimensionless) --> dimensionless (аргумент и значение функции – безразмерные величины).
STEP (height, step time) – тестовая функция шага (аргументы – высота шага и время шага).
Функция равна нулю до момента шага, затем – значению высоты шага до конца имитации.
То же, что:
IF THEN ELSE (Time plus > step time,height,0)
time plus = Time + (TIME STEP / 2.0)
Замечание. Значение функции меняется только в соответствии с временным интервалом TIME STEP, независимо от используемой схемы интегрирования.
STEP (units,time) --> units (время шага имеет ту же размерность, что и системное время (Time), значение функции имеет ту же размерность, что и ее второй аргумент (step height).
Пример:
STEP (10,20) равняется 0 до двадцатого момента времени, а затем – 10.