Параметры

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

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

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

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

Типы параметров

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

Вы можете создать, например, параметр класса String, чтобы хранить строковые константы, или параметр класса ArrayList, который будет хранить динамический массив объектов. Вы можете создать параметр типа Object (базовый Java класс) и присвоить этому параметру в качестве значения объект любого Java класса. Позднее Вам будет нужно проверить фактический тип значения этого параметра и привести параметр к его фактическому типу. Описание классов Java Вы можете найти в документации по Java SDK, доступной по адресу http://java.sun.com/javase/6/docs/api/.

Вы также можете создавать параметры Ваших собственных классов, созданных Вами в рамках модели.

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

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

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

Имя – Имя параметра. Имя используется для идентификации параметра и доступа к нему из кода.

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

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

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

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

Массив – Если опция выбрана, то этот параметр будет массивом

Значение по умолчанию – Здесь Вы можете задать значение параметра по умолчанию. Это значение может быть впоследствии изменено во время работы модели. Если значение не будет задано явно, то параметр будет проинициализирован в соответствии с правилами  Java, то есть, например, параметр типа double будет равен 0, типа boolean - false.
Если это параметр-массив, то его проще инициализировать с помощью редактора начальных значений. Если Вы этого не сделаете, то автоматически будет подразумеваться, что все элементы массива изначально равны нулю.

Редактировать... - [Кнопка видна, если установлен флажок Массив] Кнопка открывает редактор начальных значений элементов массива. Инициализация массива (то есть, задание начальных значений его элементов) описана здесь.

Динамический – Если опция выбрана, то этот параметр будет динамическим, т.е. его значение будет пересчитываться заново каждый раз при доступе к этому параметру. Такой параметр ведет себя как функция. Чтобы узнать его значение, нужно использовать синтаксис функций, то есть написать myParameter(), а не myParameter

Аргументы – [Виден, если установлен флажок Динамический] Здесь Вы можете задать аргументы динамического параметра , с помощью которых Вы сможете передавать этому играющему роль функции параметру данные, необходимые для вычислений. Каждый аргумент задается в отдельной строке таблицы. Чтобы удалить аргумент, выделите соответствующую строку и щелкните по кнопке

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

Действие при изменении – [Виден, если сброшен флажок Динамический] Код, который будет выполняться при изменении значения параметра. Введенный здесь код будет вызываться при вызовах функции set_<имя параметра>()  (при простом присваивании, таком, как parameter=5; он выполняться не будет). Этот обработчик также не будет выполняться, если новое значение, задаваемое методом set_<имя параметра>() будет равно текущему значению данного параметра.

Массив

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

Возможные размерности – Список доступных в модели размерностей.

Выбранные размерности – Список размерностей, которые будут играть роль размерностей этого массива.

С помощью этих свойств задаются размерности массива.
Более подробная информация дана в разделе Задание массива.

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

Метка – Метка параметра, которая будет отображаться вместо имени параметра на страницах свойств вложенного объекта и эксперимента. Если этот класс активного объекта играет роль корневого объекта в каком-либо эксперименте, то эта метка будет также использоваться в интерфейсе, создаваемом для этого эксперимента.

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

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

Флажок – Если опция выбрана, то пользователь сможет задавать фактическое значение данного параметра на странице свойств эксперимента или вложенного объекта с помощью флажка.

Переключатель – Если опция выбрана, то пользователь сможет задавать фактическое значение данного параметра на странице свойств эксперимента или вложенного объекта с помощью переключателя. Кнопки переключателя (имена опций и сопоставленные этим опциям значения) задаются в таблице справа.

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

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

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

Скрывать при выполнении условий – Список условий, определяющих видимость параметра на странице свойств эксперимента или вложенного объекта. Для каждого условия выбирается Параметр, значение которого будет определять видимость данного параметра, в ячейке При выполнении условия выбирается операция сравнения  ==|!= (равно|не равно) и задается Значение параметра. При выполнении какого-либо из заданных здесь условий параметр не будет виден на странице свойств.

Задание действия, выполняемого при изменении значения параметра

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

Чтобы задать действие, выполняемое при изменении значения параметра
  1. Выберите параметр в графическом редакторе или в панели Проекты.
  2. На странице Основные панели Свойства введите код, который будет выполняться при изменении значения параметра, в поле Действие при изменении. Введенный здесь код будет вызываться при вызовах функции set_<имя параметра>()  (при простом присваивании, таком, как parameter=5; он выполняться не будет). Этот обработчик также не будет выполняться, если новое значение, задаваемое методом set_<имя параметра>() будет равно текущему значению данного параметра.

См. также

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

 Изменение значений параметров