Применение сложных аналитических функций в имитационных моделях
DELAYPPL (INPut, ‘Delay Time', Initial = INPut) — функция для получения датированного значения переменной INPut с лагом ‘Delay Time' и начальным значением Initial = INPut; В этом случае для доступа к значениям переменных верхнего уровня по отношению к текущей подмодели по прежнему используется синтаксис. На верхнем (родительском) уровне переменная Output использует следующий синтаксис для доступа… Читать ещё >
Применение сложных аналитических функций в имитационных моделях (реферат, курсовая, диплом, контрольная)
Следует отметить, что в системе Powersim поддерживается много аналитических (в том числе математических, статистических, финансовых и др.) функций, подробное описание которых имеется в работе [ 141. Тем не менее среди данных функций можно выделить некоторые, применение которых существенно расширяет возможности имитационного моделирования.
К таким функциям, в частности, можно отнести следующие:
- • DELAYPPL (INPut, ‘Delay Time', Initial = INPut) — функция для получения датированного значения переменной INPut с лагом ‘Delay Time' и начальным значением Initial = INPut;
- • GRAPH (X, XI, Dx, Y (N)) — функция для построения графика зависимости значений переменной У от переменной Х
- • VBFUNCTION (Dimensions | Expressions | Script) — функция, позволяющая разрабатывать собственные программы на VBScript.
- • NORMAL ([Mean = 0 |, Deviation = 1 [ Seed] 11) — функция, обеспечивающая генерацию случайных значений в соответствии с нормальным распределением;
- • TIME — системное время;
- • XLDATA (File, Sheet, Area [, Options])["unit>>] — функция, возвращающая в систему Powersim величины ячеек области листа MS Excel как скалярные, векторные, двумерные и трехмерные массивы;
- • Parent~ — синтаксис, используемый для доступа к значению переменной Variable Name в иерархических моделях.
Рассмотрим данные функции немного подробнее. Например, с помощью функции DELAYPPL можно реализовать рекурсивные зависимости следующего тина:
гдех (?) — переменная вспомогательного типа; t — время; а — временной лаг (например, а = 1); k — некоторый коэффициент (рис. 6.19).
Рис. 6.19. Реализация рекурсивной зависимости в системе Powersim.
Соответственно, в переменных х и х — 1 используются следующие формулы:
аих х = ‘х-1'*1,1.
аих ‘х-1' = DELAYPPL (x;l"mo"; 10).
В результате при прогоне модели на интервале с 2013 но 2014 г. с шагом 1 мес. формируются следующие значения переменных х и х — 1, что соответствует заданной рекурсивной зависимости с начальным значением 10 и коэффициентом роста 1,1:
Время. | 1 января 2013 г. | 1 апреля 2013 г. | 1 июля 2013 г. | 1 октября 2013 г. | 1 января 2014 г. |
X | 11,00. | 14,64. | 19,49. | 25,94. | 34,52. |
х- 1. | 10,00. | 13,31. | 17,72. | 23,58. | 31,38. |
Далее рассмотрим использование функции GRAPH. Следующий пример обеспечивает построение графика, изображенного на рис. 6.20.
aux Л = GRAPH (‘Period Number', 30,30,.
{0.45,0.49,0.61,0.91,0.93,0.64,0.14,0.25,0.63,0.58,0.53}).
аих ‘Period Number' = (TIME — STARTTIME)/TIMESTEP.
Puc. 6.20. Построение графика в системе Powersim.
Здесь функция TIME используется для определения текущего модельного времени, STARTTIME — начальное модельное время, TIMESTEP — шаг модельного времени.
Далее рассмотрим функцию VBFUNCTION, используемую для разработки собственных пользовательских функций на языке VBScript.
В результате выполнения следующей программы формируется числовой массив {10; 60; 30}:
VBFUNCTION (1.3 | {1,6,3} |.
«for i = 0 to 2».
«Result (i) = Paraml (i)*10».
«next».
> = {10,60,30}.
При этом входной параметр РагатЛ принимает значения из массива {1; 6; 3}.
Следующая программа обеспечивает пузырьковую сортировку массива Array (рис. 6.21):
range cells = 1.10 // Создан глобальный диапазон 1.10 const Array= FOR (cells | ROUND (100*RANDOM ())).
// Массив с измерением cells, заполненный случайными числами от 1 до 100 aux BubbleSort =.
V В FUN CTI ON («arrSorted» = cells | «arrINPut» = Array |.
«arrSorted = arrINPut».
«for i = 0 to ubound (arrSorted) — 1».
«for j = 0 to ubound (arrSorted) — 1».
«if arrSorted (j) > arrSorted (j + 1) then».
«temp = arrSorted (j+l>».
«arrSorted (j+l> = arrSortcd (j)».
«arrSortedfj) = temp».
«end if'.
«next».
«next»).
Функция NORMAL обеспечивает генерацию случайных значений в соответствии с нормальным распределением. Входными параметрами данной функции является математическое ожидание {Mean) и стандартное отклонение (Deviation). Параметр Seed используется в качестве начального значения для датчика псевдослучайных чисел.
Функция XLDATA используется для загрузки данных из программы MS Excel в систему Powersim.
Например, следующий синтаксис:
XLDATA («C:/Users/l/Documents/New.xlsx»; «Лист1»; «R2C2:R3C3»),.
обеспечивает загрузку значений ячеек диапазона R2C2: R3C3 из листа «Лист1» рабочей книги «New.xlsx» (рис. 6.22).
Рис. 6.21. Реализация алгоритма пузырьковой сортировки в системе Powersim.
Рис. 6.22. Загрузка значений ячеек программы MS Excel в модель системы Powersim.
Далее рассмотрим вопрос проектирования иерархических моделей в системе Powersim.
Синтаксис.
Parent~.
используется для доступа к переменным (любого типа) верхнего уровня. Для создания иерархической модели используется специальный элемент SubModel (рис. 6.23).
Рис. 6.23. Проектирование иерархических моделей в системе Powersim.
Подмодель Model_ 1 в рассматриваемом примере содержит элементы, представленные на рис. 6.24.
Рис. 6.24. Пример реализации подмодели в системе Powersim.
Данные элементы содержат следующие записи:
aux INPut = Parent-INPut.
const Constant_l = 11,5.
aux Output = INPut*Constant_l.
На верхнем (родительском) уровне переменная Output использует следующий синтаксис для доступа к соответствующей переменной подмодели:
aux Output = Model_l.Output.
Следует отметить, что для доступа к значениям входных родительских переменных (Parent ~ Input.) и выгрузки соответствующего выходного значения переменные Input и Output на уровне подмодели должны иметь тип Public (который устанавливается на вкладке Advanced — свойства переменной).
Важным аспектом построения иерархических моделей является использование объектов типа уровень {Level) со свойством Public на уровне подмодели (рис. 6.25).
Рис. 6.25. Пример реализации подмодели в системе Powersim.
В результате имеется возможность автоматической загрузки и выгрузки потоков в подмодель.
Следует отметить, что возможна реализация иерархической модели с несколькими вложенными подмоделями. Например, основная модель включает подмодель Model l, которая содержит подмодель Model_2 и т. д. (рис. 6.26).
Рис. 6.26. Пример реализации нескольких вложенных подмоделей.
в системе Powersim
В этом случае для доступа к значениям переменных верхнего уровня по отношению к текущей подмодели по прежнему используется синтаксис.
Parent~.