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