AnyLogic
Развернуть
Размер шрифта

Изменение значений параметров и переменных во время работы модели

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

AnyLogic предоставляет сразу несколько способов изменения значений параметров и переменных:

Можно выделить общие для всех этих способов правила:

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

Изменение параметров и переменных с помощью окон инспекта

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

  • Параметров типов boolean, String, а также численных типов (double, int, и т.д.), если они не объявлены динамическими.
  • Простых переменных типов boolean, String, а также численных типов (double, int, и т.д.), если они не объявлены константами.
  • Накопителей, если они не объявлены массивами.

Чтобы изменить значение параметра/переменной из окна инспекта

  1. Во время работы модели, щелкните мышью по значку параметра/переменной в окне презентации.
  2. Вы увидите небольшое окошко — окно инспекта. Оно имеет два режима — отображение значения и изменение значения. У накопителей также есть режим отображения графика истории изменения значения.

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

  4. Введите новое значение в открывшемся поле редактирования. Вы можете заметить, что в случае введения значений, недопустимых для типа данного параметра/переменной (например, значений, отличных от true и false для логического параметра типа boolean), будет выдано предупреждение об ошибке. Информация о типе данных отображается в нижней части окна инспекта.
  5. Когда закончите ввод значения, нажмите клавишу Enter. Вы увидите, что параметру/переменной будет присвоено новое значение.

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

Изменение параметров и переменных с помощью элементов управления

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

Элемент управления Можно связать с переменной/параметром типа Комментарий
Флажок

boolean При выборе флажка связанная переменная примет значение true, при сбросе — false.
Текстовое поле

String
double
int
Значения целочисленных переменных и параметров удобнее изменять с помощью бегунков.
Бегунок

double
int
Значения вещественных переменных и параметров типа double удобнее изменять с помощью текстового поля.
Переключатель

int При выборе первой кнопки переключателя связанной переменной/параметру будет присвоено значение 0, при выборе второй кнопки 1 и т.д.
Выпадающий список

String Может быть как редактируемым, так и нет — в этом случае пользователю будет предоставлен выбор из фиксированного набора значений.
Список

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

Чтобы изменять значение параметра/переменной с помощью элемента управления

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

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

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

Как параметры, так и переменные доступны из кода по своим именам, например, parameterA, plainVar2.

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

Программное изменение значений переменных

Чтобы изменить значение скалярной переменной, нужно просто выполнить строку кода, в которой с помощью оператора присваивания переменной присваивается новое значение, например: plainVar = 10;

Если же у вас есть, скажем, переменная-массив целочисленных значений plainVar (с типом int[] и начальным значением new int[5]), то чтобы присвоить первому элементу массива (с индексом 0) значение 10, нужно будет выполнить строку кода plainVar[0]=10;.

Нельзя изменять значения простых переменных, объявленных константами, с помощью кода!

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

Значение параметра также можно изменять кодом, посредством вызова метода set_имяПараметра(). Например, если у нас есть целочисленный параметр parameter, то присвоить ему значение 10 можно так: set_parameter(10). Этот метод автоматически генерируется AnyLogic. В качестве аргумента нужно передать новое значение.

В этом случае изменение значения будет распространяться по всем зависимостям этого параметра.

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

Действие при изменении параметра не будет выполняться, если новое значение, задаваемое методом set_имяПараметра() будет равно текущему значению данного параметра.
Как мы можем улучшить эту статью?