Запустив эксперимент, вы увидите окно модели, отображающее презентацию этого эксперимента. Вы можете управлять выполнением модели с помощью панели управления, расположенной в нижней части окна модели.
Кнопка | Команда | Описание |
---|---|---|
Запустить |
[Видна, если модель в текущий момент не выполняется] Запускает модель с текущего состояния. Модель будет выполняться до тех пор, пока вы не (при)остановите ее с помощью кнопки Пауза или Прекратить выполнение эксперимента, или же до тех пор, пока она не будет (при)остановлена какой-то активностью в самой модели. Вы можете запустить модель до заданного момента модельного времени либо на заданный интервал времени от текущего момента, после чего ее выполнение будет приостановлено. Более подробно эти возможности запуска описаны здесь. |
|
Пауза |
[Видна, если модель в текущий момент выполняется] Приостанавливает выполнение модели. Вы можете возобновить выполнение модели в любой момент времени, нажав на кнопку Запустить. Вы можете приостановить модель в заданный момент модельного времени. Более подробно эта возможность приостановки описана здесь. |
|
Прекратить выполнение эксперимента | Прекращает выполнение модели. |
Вы можете управлять доступом к этим кнопкам, а также проверять их состояние (доступны они или нет) в ходе выполнения модели с помощью функций, описанных в разделе Панель управления здесь.
Иногда вам может понадобиться программно управлять выполнением вашей модели. Например, приостановить ее выполнение при происхождении какого-либо события и возобновить выполнение при срабатывании определенного перехода диаграммы состояний. Или же вам может понадобиться возможность запуска модели по нажатию на вашу собственную кнопку. AnyLogic предоставляет полнофункциональный API, позволяющий решать любые задачи, связанные с управлением выполнением модели.
Приведенная ниже таблица перечисляет функции исполняющего модуля и аналогичные им функции агента, с помощью которых вы можете программно управлять выполнением модели.
Чтобы вызвать функцию исполняющего модуля, напишите, например, getEngine().finish() в соответствующем месте кода вашей модели.
Или же вы можете вызвать аналогичную функцию finishSimulation() из любой активности агента вашей модели.
Функция исполняющего модуля | Функция агента | Краткое описание | Полное описание |
---|---|---|---|
boolean start() | нет | Запускает модель (если она еще не была запущена) и приостанавливает ее выполнение. |
Команда исполняющего модуля, выполняемая только в том случае, если модуль находится в состоянии IDLE (в других состояниях не делает ничего, просто возвращает false). Функция выполняет следующее:
|
boolean pause() | boolean pauseSimulation() | Приостанавливает запущенную модель. Переводит исполняющий модуль в состояние PAUSED после завершения выполнения текущего события. |
Команда исполняющего модуля, выполняемая только в том случае, если модуль находится в состоянии RUNNING (в других состояниях не делает ничего, просто возвращает false). Переводит исполняющий модуль в состояние PLEASE_WAIT и затем выставляет флаг, который при проверке исполняющим модулем, вынуждает его завершить выполнение после завершения выполнения текущего события. Дальнейшее поведение зависит от контекста, из которого была вызвана эта функция:
Обратите внимание, что ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии PAUSED, FINISHED или ERROR.
Возвращает false, если текущее состояние исполняющего модуля не позволяет приостановить выполнение модели.
|
boolean run() | boolean runSimulation() | Запускает приостановленную модель. Переводит исполняющий модуль в состояние RUNNING и затем возобновляет выполнение модели. |
Команда исполняющего модуля, выполняемая только в том случае, если модуль находится в состоянии PAUSED (в других состояниях не делает ничего, просто возвращает false). Переводит исполняющий модуль в состояние RUNNING и затем запускает модель в отдельном потоке. Выполнение может быть прервано в результате одного из следующих событий:
Эта функция не должна вызываться из потока выполнения модели!
Обратите внимание, что ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии PAUSED, FINISHED или ERROR.
Возвращает false, если текущее состояние исполняющего модуля не позволяет произвести запуск модели.
|
boolean stop() | boolean stopSimulation() | Останавливает выполнение модели затем уничтожает ее и "забывает" о ней, переводя исполняющий модуль в состояние IDLE. |
Команда исполняющего модуля, выполняемая только в том случае, если модуль не находится в состоянии IDLE (в состоянии IDLE не делает ничего, просто возвращает false). Если модуль находится в состоянии RUNNING, то устанавливает флаг, который при проверке потоком выполнения модели, вынуждает исполняющий модуль завершить выполнение модели. Дальнейшее поведение зависит от контекста, из которого вызван эта функция:
|
boolean finish() | boolean finishSimulation() | Завершает выполнение запущенной или приостановленной модели. В отличие от функции stop() модель при этом не уничтожается, и вы можете анализировать ее состояние. |
Команда исполняющего модуля, выполняемая только в том случае, если модуль находится в состоянии RUNNING или PAUSED (в других состояниях не делает ничего, просто возвращает false). Устанавливает флаг, который при проверке исполняющим модулем, вынуждает его завершить выполнение после завершения выполнения текущего события. Дальнейшее поведение зависит от контекста, из которого вызвана эта функция:
Обратите внимание, что ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии FINISHED или ERROR.
Возвращает false, если текущее состояние исполняющего модуля не позволяет остановить выполнение модели.
|
boolean runFast() | нет | Запускает модель самым быстрым из возможных способов из текущего потока. Запуск производится в режиме виртуального времени безотносительно заданных настроек. |
Запускает модель самым быстрым из возможных способов из текущего потока. Запуск производится в режиме виртуального времени безотносительно заданных настроек. Функция завершает свое выполнение в результате одного из следующих событий:
Возвращает false, если текущее состояние исполняющего модуля не позволяет произвести запуск модели. |
boolean step() | нет | Выполняет не более одного дискретного шага модели (шаг может быть выполнен только из состояния паузы PAUSED). |
Выполняет не более одного дискретного шага модели (шаг может быть выполнен только из состояния паузы PAUSED).
Обратите внимание, что ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии PAUSED, FINISHED или ERROR.
Эта функция не должна вызываться из потока выполнения модели!
Возвращает false, если текущее состояние исполняющего модуля не позволяет произвести выполнение шага.
|
Engine.State getState() | нет | Возвращает текущее состояние исполняющего модуля (IDLE, PAUSED, RUNNING, FINISHED, ERROR или PLEASE_WAIT). |
Возвращает текущее состояние исполняющего модуля:
IDLE — не выполняется ни одна из моделей, ничего не происходит
Обратите внимание, что актуальность возвращаемого состояния не гарантируется, поскольку оно может быть изменено из параллельного потока.
|
boolean getRealTimeMode() | нет | Возвращает текущий режим выполнения модели. | Возвращает true, если на данный момент модель выполняется в режиме реального времени. Если модель выполняется в режиме виртуального времени, функция возвращает false. |
void setRealTimeMode(boolean on) | нет | Задает режим выполнения модели: в виртуальном времени или в реальном времени. |
Задает режим выполнения модели: в реальном времени или в виртуальном времени. В режиме виртуального времени модель выполняется максимально быстро. В режиме реального времени исполняющий модуль старается поддерживать заданный коэффициент скорости моделирования, т.е. количество выполняемых в секунду единиц модельного времени. on — если значение равно true, то модель будет выполняться в режиме реального времени с заданным коэффициентом скорости моделирования |
double getRealTimeScale() | нет | Возвращает текущий коэффициент скорости моделирования. | Возвращает текущий коэффициент скорости моделирования, т.е. количество выполняемых в секунду единиц модельного времени. Действительный коэффициент может быть ниже (это зависит от производительности модели, текущей нагрузки на процессор и т.д.). Этот коэффициент применим, только если модель выполняется в режиме реального времени. |
void setRealTimeScale(double scale) | нет | Задает коэффициент скорости моделирования. |
Задает требуемый коэффициент скорости моделирования, т.е. количество выполняемых в секунду единиц модельного времени. Действительный коэффициент может быть ниже (это зависит от производительности модели, текущей нагрузки на процессор и т.д.). Этот коэффициент применим, только если модель выполняется в режиме реального времени. scale — новый коэффициент скорости моделирования |
-
Как мы можем улучшить эту статью?
-