Обычно переменные, используемые в моделях системной динамики для представления содержимого накопителей, являются скалярами, принимающими вещественные значения. Например, население на некоторой территории на самом высоком уровне абстракции можно рассматривать как результат двух процессов: иммиграции и эмиграции, и изменение населения во времени описывается дифференциальным уравнением (рис. 13.16).
Однако в некоторых случаях для построения более адекватных и полных моделей все содержимое накопителей, так же, как и потоки в системе, удобно рассматривать на более детальном уровне как состоящие из отдельных фракций. Например, если необходимо рассмотреть миграцию по регионам, то все население, потоки и интенсивности в модели можно представить массивами (рис. 13.17).
Чтобы функциональные соотношения при этом можно было бы записывать в той же форме, что и соотношения со скалярными величинами, эти массивы должны быть специального вида: все операции в них должны выполняться покомпонентно. В AnyLogic соответствующие типы данных существуют. Они называются гипермассивами — объектами специального класса нуреrArray AnyLogic. Гипермассивы в AnyLogic — это массивы вещественных чисел произвольной размерности, операции над которыми выполняются покомпонентно. Если представить переменные, описывающие содержимое накопителей и потоки как гипермассивы одного и того же размера, то динамика потоков будет записываться в точности так, как она записывалась для скаляров:
d(population)
= inmigration - outmigration
dt
Если желательно исследовать динамику популяции, разделенной по полу и возрасту, то можно использовать гипермассивы размерности 2. При этом опять-таки, соотношения для динамики потоков не изменятся (рис. 13.18).
В справочнике классов AnyLogic содержится описание класса HуреrArrау. Мы приведем здесь лишь некоторые примеры, позволяющие понять идею операций над гипермассивами.
Рассмотрим четыре гипермассива, а также некоторые операции, которые с таким типом данных можно выполнять. Еще раз подчеркнем, что все операции с гипермассивами выполняются покомпонентно. На рис. 13.19 представлено несколько гипермассивов различных размерностей, ниже приведены примеры операций над ними. Если размерности операндов в операциях не совпадают, то результат подстроится под этот случай.
Последнюю форму, расширяющую, фактически, возможности арифметических операций на гипермассивы, можно использовать только в окне свойств переменных.