Инициализация массива

Некоторые переменные системной динамики типа массив (накопители, параметры а также объявленные константами потоки и динамические переменные) должны быть проинициализированы (то есть, должны быть заданы начальные значения элементов этих массивов). 

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

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

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

 Чтобы открыть редактор начальных значений массива

  1. Выберите переменную или параметр типа массив в графическом редакторе или в панели Проекты.
  2. Перейдите в панель Свойства.
  3. Щелкните мышью по кнопке Редактировать....
  4. Откроется окно редактора начальных значений массива. Редактор состоит из двух панелей. В левой панели редактора задается срез массива, элементы которого вы хотите проинициализировать. В правой панели отображается таблица, в ячейках которой вы собственно и задаете значения элементов выбранного среза массива.

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

 Чтобы проинициализировать все элементы массива одним значением

  1. Откройте редактор начальных значений этого массива.
  2. Убедитесь в том, что в столбце Элементы расположенной слева таблицы во всех ячейках выбрано значение [ВСЕ].
  3. Уберите галочки из обоих столбцов таблицы - как , так и .
  4. Введите значение, которым вы хотите проинициализировать все элементы этого массива, в расположенной справа таблице. 
  1. Когда вы закончите, щелкните мышью по кнопке ОК.
Для того, чтобы объяснить, как нужно инициализировать массив различными значениями, приведем небольшой пример. 

Предположим, вы создаете модель, изучающую динамику изменения численности населения в Москве и Санкт-Петербурге. Пусть люди в нашей модели условно разделяются по трем характеристикам: полу, возрасту и месту проживания. Эти характеристики удобно описываются с помощью перечислений: Пол(мужчина, женщина), Возраст(ребенок, подросток, взрослый, пожилой) и Регион(СПб, Москва)

Давайте рассмотрим, как можно проинициализировать массив с тремя размерностями Население[Регион, Возраст, Пол]:

 Чтобы проинициализировать элементы массива различными значениями

  1. Откройте редактор начальных значений этого массива.
  2. Вы увидите, что две размерности в расположенной слева таблице будут выделены галочками - одна в столбце , а другая - в столбце . Так вы можете выбрать, элементы каких размерностей вы будете задавать в таблице справа. Элементы размерности, выбранной в столбце , будут отображаться в ней в качестве строк, а размерности выбранной в столбце - в виде столбцов:
  1. Если вы сейчас будете вводить значения в расположенной справа таблице, то они будут присваиваться всем соответствующим элементам остальных размерностей массива. То есть, если вы введете, например, 1000000 в ячейке взрослый - СПб, то тем самым вы проинициализируете этим числом и количество взрослых мужчин и количество взрослых женщин, проживающих в Санкт-Петербурге. 
  2. Если же вы хотите задавать различные значения для элементов размерности Пол, то нужно будет ее зафиксировать, как мы говорили ранее. 
  3. Давайте для начала проинициализируем количество мужчин. Для этого выберите в левой таблице мужчина в ячейке Пол - Элементы. Теперь в расположенной справа таблице вы можете задавать количество мужчин в вашей модели - в каждой ячейке будет задаваться значение соотвествующего элемента массива, например, в ячейке пожилой - Москва будет задаваться количество мужчин преклонного возраста, проживающих в Москве. Задайте все значения согласно имеющимся у вас данным:
  1. Затем нужно будет аналогично задать начальное количество женщин. Это делается абсолютно аналогично - только на этот раз мы выбираем у фиксированной размерности другой элемент, значения для которого еще не были нами заданы. Выберите в левой таблице женщина в ячейке Пол - Элементы и задайте количество женщин каждой категории в расположенной справа таблице.
  1. Когда вы закончите, щелкните мышью по кнопке ОК.

Вы можете проверить, правильно ли вы задали начальные значения с помощью инспектирования значения переменной во время выполнения модели:


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

См.также

Накопители

 Массивы

 Размерности

 Задание переменной-массива

 Задание уравнений для массивов

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