Функции эксперимента варьирования параметров

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

Управление выполнением

Функция

Описание

void run()

Начинает выполнение эксперимента из его текущего состояния.

Если модель еще не существует, функция перезапускает эксперимент, создает и запускает модель.

void pause()

Приостанавливает выполнение эксперимента.

void step()

Выполняет один шаг эксперимента.

Если модель еще не существует, функция перезапускает эксперимент, создает и запускает модель.

void stop()

Прекращает выполнение эксперимента.

void close()

Функция мгновенно возвращает управление и выполняет следующие действия в параллельном потоке:

  • Останавливает эксперимент, если он не остановлен,

  • Уничтожает модель,

  • Закрывает окно эксперимента (только если модель запущена в режиме отдельного приложения).

Experiment.State getState()

Возвращает текущее состояние эксперимента: IDLE, PAUSED, RUNNING, FINISHED, ERROR или PLEASE_WAIT.

double getRunTimeSeconds()

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

int getRunCount()

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

double getProgress()

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

int getParallelEvaluatorsCount()

Возвращает количество параллельных вычислителей, используемых в данной модели. 

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


Итерации

Функция

Описание

int getCurrentIteration()

Возвращает текущее значение счетчика итераций.

int getMaximumIterations()

Возвращает общее количество итераций.

int getNumberOfCompletedIterations()

Возвращает количество выполненных итераций.


Репликации

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

Функция

Описание

boolean isUseReplications()

Возвращает true, если эксперимент использует репликации; в противном случае возвращает false.

int getCurrentReplication()

Возвращает количество репликаций, выполненных для текущей итерации.


Доступ к модели

Функция

Описание

Engine getEngine()

Возвращает исполняющий модуль AnyLogic. Чтобы получить доступ к агенту верхнего уровня (как правило, Main), вызовите функцию getEngine().getRoot();

IExperimentHost getExperimentHost()

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


Восстановление сохраненного состояния модели

Функция

Описание

void setLoadRootFromSnapshot(
String snapshotFileName)

По вызову этой функции простой эксперимент загружает агента верхнего уровня из файла состояния модели AnyLogic. Данная функция доступна только в AnyLogic Professional.

Параметр:
snapshotFileName - имя файла состояния модели AnyLogic, например:
"C:\\My Model.als"

boolean isLoadRootFromSnapshot()

Возвращает true, если эксперимент настроен так, чтобы запускать модель из состояния, загружаемого из файла состояния модели; в противном случае возвращает false.

String getSnapshotFileName()

Возвращает имя файла состояния модели, из которого, в соответствии с настройками эксперимента, запускается модель.


Обработка ошибок

Функция

Описание

RuntimeException 
error(Throwable cause, String errorText)

Сообщает об ошибке во время выполнения модели: выдает исключение RuntimeException с соответствующим текстом errorText, предварив его полным именем агента. 

Эта функция никогда ничего не возвращает, лишь выдает исключение. Тип возвращаемого объекта задается в тех случаях, когда вы хотите использовать следующий способ вызова:
throw error("my message")
;

Параметры:
cause - причина (сохраняется для более подробного сообщения), может быть null.
errorText - текст с описанием ошибки для отображения.

RuntimeException 
errorInModel(Throwable cause, String errorText)

Сообщает об ошибке во время выполнения модели: выдает исключение ModelException с заданным текстом ошибки, предварив его полным именем агента.

Эта функция никогда ничего не возвращает, лишь выдает исключение. Тип возвращаемого объекта задается в тех случаях, когда вы хотите использовать следующий способ вызова:
throw errorInModel("my message")
;

Данная функция отличается от функции error() тем, как отображается сообщение об ошибке: ошибки в логике модели не так "серьезны" по сравнению с другими ошибками. Они случаются довольно часто и сообщают разработчику о необходимости изменить некоторые параметры модели.

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

Параметры:
cause - причина (сохраняется для более подробного сообщения), может быть null.
errorText - текст с описанием ошибки для отображения.

void onError
(Throwable error)

Эту функцию можно переопределить для нестандартной обработки ошибок, произошедших во время выполнения модели (т.е. ошибок в коде событий, динамических событий, переходов, действий на входе / выходе из состояний и т.д.). 

По умолчанию функция ничего не совершает, так как она не определена. Чтобы переопределить функцию, вы можете добавить функцию в эксперимент, назвать ее onError и задать для нее один аргумент класса java.lang.Throwable.

Параметр:
error - ошибка, возникшая в ходе выполнения события.

void onError
(Throwable error, Agent root)

Схожа с функцией onError(Throwable error) за одним исключением: предоставляет еще один аргумент для доступа к агенту верхнего уровня модели. 

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

Параметры:
error - ошибка, возникшая в ходе выполнения события.
root - агент верхнего уровня модели.  В некоторых случаях значение может быть равно null (например, если ошибка возникла при создании агента верхнего уровня).


Аргументы командной строки

Функция

Описание

String[] getCommandLineArguments()

Возвращает массив аргументов командной строки, которые передаются данному эксперименту при запуске модели. Никогда не возвращает null: если аргументов нет, возвращает пустой массив.

Вы можете вызвать эту функцию в поле Дополнительный код класса в свойствах эксперимента.