Простые переменные

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

Коллекция используется для задания объекта данных, объединяющего в себе сразу несколько однотипных элементов.

Переменная представляет собой переменную любого скалярного типа или Java класса. 

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

Вы можете динамически изменять значение переменной во время выполнения модели с помощью оператора присваивания. Следующая строка кода присваивает целочисленной( int) переменной myVariable значение 5:

myVariable = 5;

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

Если вы хотите задать для переменной дифференциальное уравнение, то вам нужно будет использовать Накопитель.

Если вам нужна переменная, изменяющая свое значение согласно алгебраической формуле, то используйте Динамическую переменную

Вы также можете объявить Java переменные в поле свойства Дополнительный код класса типа агентов. Такие переменные будут также доступны из кода агента, но мы рекомендуем задавать их визуально с помощью простых переменных.

Типы переменных

Как и многие другие инструменты имитационного моделирования, AnyLogic поддерживает переменные простых типов: вещественные переменные (double), целочисленные (integer) и логические (boolean).

Но только AnyLogic предоставляет уникальную возможность создания переменных любых Java классов (например, класса String для хранения текстовых строк), в том числе и переменных ваших собственных типов, созданных вами в рамках модели.

Создание переменной

 Чтобы создать переменную
  1. Перетащите элемент Переменная  из палитры Агент на диаграмму типа агентов (или эксперимента).
  2. Перейдите в панель Свойства.
  3. Введите имя переменной в поле Имя. Это имя будет использоваться для идентификации и доступа к переменной.
  4. Задайте тип переменной. Вы можете как выбрать один из наиболее часто используемых типов (intdouble, booleanString) с помощью выпадающего списка Тип, так и задать значение любого другого Java класса (в этом случае вам нужно будет выбрать опцию Другой и ввести имя класса в расположенном справа поле).
  5. Если ваша переменная будет всегда иметь одно и то же значение в течение всего моделируемого периода времени, можете объявить ее константой, выбрав флажок Константа в секции свойств Специфические. Сделав переменную константой, вы защищаете ее от изменения во время моделирования.
  6. Вы можете задать начальное значение переменной в поле Начальное значение. Это значение может быть впоследствии изменено во время работы модели. Если начальное значение не будет задано явно, то переменная будет проинициализирована в соответствии с правилами  Java, то есть, например, начальное значение переменной типа double будет равно 0. 
     Если вы объявили эту переменную константой, то вы не сможете использовать в выражении, задаваемом в поле Начальное значение, параметры, накопители, потоки и динамические переменные.
Основные свойства

Имя – Имя переменной. 

Отображать имя – Если опция выбрана, то имя переменной будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то переменная будет исключена из модели.

Видимость – Если опция выбрана, то переменная будет отображаться на презентации во время выполнения модели.

Тип – Тип переменной. Выберите один из наиболее часто используемых типов (intdouble, booleanString) или же, если вам нужно создать переменную другого Java класса - выберите опцию Другой и введите имя класса в расположенном справа поле.

Начальное значение – Здесь вы можете задать начальное значение переменной. Это значение может быть впоследствии изменено во время работы модели. Если начальное значение не будет задано явно, то переменная будет проинициализирована в соответствии с правилами  Java, то есть, например, начальное значение переменной типа double будет равно 0. 
 Если вы объявили эту переменную константой, то вы не сможете использовать в выражении, задаваемом в поле Начальное значение, параметры, накопители, потоки и динамические переменные.

Специфические

Уровень доступа – Уровень доступа к коллекции. Есть четыре уровня доступа:
    private – 
коллекция доступна только из этого типа агентов
    protected
коллекция доступна из этого типа агентов и его подклассов
    default
коллекция доступна из любого места модели
    public
коллекция доступна из всех открытых моделей.

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

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

Сохранять при сохранении состояния модели – Если опция выбрана, то переменная будет сохраняться при сохранении состояния модели.

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


См. также

 Просмотр значений и графиков переменных

 Изменение значений переменных