AnyLogic предоставляет сразу несколько способов изменения значений параметров и переменных:
Можно выделить общие для всех этих способов правила:Проще всего изменять значения параметров и переменных по ходу моделирования с помощью окон инспекта. С их помощью можно изменять значения:
Вы можете также привычно изменять значения переменных и параметров с помощью элементов управления. Приведенная ниже таблица перечисляет элементы управления, которые могут для этого использоваться, а также приводит информацию о том, параметры и переменные каких типов можно связать с каждым элементом управления:
Элемент управления |
Можно связать с переменной/параметром типа |
Комментарий |
|
boolean |
При выборе флажка связанная переменная примет значение true, при сбросе - false. |
|
String, double, int |
Значения целочисленных переменных и параметров удобнее изменять с помощью бегунков. |
|
double, int |
Значения вещественных переменных и параметров типа double удобнее изменять с помощью текстового поля. |
|
int |
При выборе первой кнопки переключателя связанной переменной/параметру будет присвоено значение 0, при выборе второй кнопки 1 и т.д. |
|
String |
Может быть как редактируемым, так и нет - в этом случае пользователю будет предоставлен выбор из фиксированного набора значений. |
|
String |
Связать список с параметром или переменной можно будет только в том случае, если вы не выберете у него опцию Выбор нескольких элементов. |
Чтобы изменять значение параметра/переменной с помощью
элемента управления
Можете посмотреть на простейшую модель, в которой значение параметра можно изменять с помощью связанного с ним бегунка.
Пример модели: Slider Linked To Parameter
Как параметры, так и переменные доступны из кода по своим именам, например, parameterA, plainVar2.
Вы можете программно менять их значения, написав соответствующие строки кода, например, в кодовых параметрах блоков вашей диаграммы процесса, в действиях событий, переходов диаграмм состояний, элементов управления и т.д.
Чтобы изменить значение скалярной переменной, нужно просто выполнить строку кода, в которой с помощью оператора присваивания переменной присваивается новое значение, например: plainVar = 10;
Если же у вас есть, скажем, переменная-массив целочисленных значений plainVar (с типомint[] и начальным значением new int[5]), то чтобы присвоить первому элементу массива (с индексом 0) значение 10, нужно будет выполнить строку кода plainVar[0]=10;
Значение параметра также можно изменять с помощью простого оператора присваивания, например, если у нас есть целочисленный параметр parameter, то присвоить ему значение 10 можно так: parameter = 10; Но в этом случае остальные элементы модели не будут знать о произведенном изменении, и оно может не повлиять на модель должным образом.
Поэтому мы рекомендуем изменять значение параметра посредством вызова метода set_имяПараметра() (в данном случае - set_parameter() ), автоматически генерируемого AnyLogic, которому в качестве аргумента нужно передать новое значение.При необходимости, вы можете задать действия, которые должны выполняться при изменении значения параметра, написав обработчик этого события в свойстве параметра Действие при изменении. Введенный здесь код будет вызываться при вызовах функции set_имяПараметра(). В этом коде доступна локальная переменная oldValue, которая хранит старое значение параметра (то значение, которое было у параметра до этого изменения значения).