控制模型执行 | AnyLogic帮助

控制模型执行 | AnyLogic帮助

当运行AnyLogic模型时,您可以使用控制面板来控制模型的执行,控制面板显示在AnyLogic模型窗口的底部。

控制面板包含用于控制启动模型执行的按钮:

按钮命令描述
运行运行[仅当模型当前未运行时可见]
从当前状态运行模型。模型将运行直到您手动通过点击 暂停暂停停止停止按钮(或直到模型中的某些内容暂停或停止其执行)。
您可以运行模型直到指定的模型时间点,或从当前时刻开始运行指定的模型时间间隔。有关详情,请参阅“运行模型直到特定日期或特定时间间隔”。
暂停[仅当模型当前正在运行时可见]
暂停运行中的模型。您可以随时恢复暂停的模拟。
您可以在指定的模型时间点暂停模型,有关详情,请参阅“运行模型直到特定日期或特定时间间隔”。
停止终止模型运行。

当模型中没有活动时,运行控制将变为禁用状态。这表明您的模型已完成其工作。

您可以在模型运行时从代码中启用或禁用这些按钮,并检查它们的状态(启用/禁用)。这些特性在“访问演示”的控制面板部分中有描述。

从代码控制模型执行

您可能需要以编程方式控制模型执行。例如,您可能需要在某个事件到期时暂停模型,并在状态图转换发生时恢复其执行。AnyLogic提供了一个丰富的API,能够解决所有与控制模型执行相关的任务。

下表列出了模型引擎的相关功能以及每个代理中可用的类似功能。

要调用引擎函数,请在模型中需要的位置编写,例如,getEngine().finish()

或者,您可以直接从任何代理活动中调用类似的函数finishSimulation()

引擎函数代理的功能简短描述完整描述
boolean start()N/A启动模型(如果当前处于空闲状态)并暂停它。引擎命令仅适用于IDLE状态(在其他状态下不执行任何操作并返回false)。执行以下操作:

1. 设置模型执行的开始时间。
2. 在根对象中创建所需的内容—调用root.create();。
3. 启动模型(首先调度事件)—调用root.start();。
4. 将引擎置于PAUSED状态。
boolean pause()boolean pauseSimulation()暂停运行中的模型。将引擎置于PAUSED状态,并在完成当前事件执行后终止模型。引擎命令仅适用于RUNNING状态(在其他状态下不执行任何操作并返回false)。将引擎置于PLEASE_WAIT状态,然后设置一个标志,当引擎测试此标志时,会在完成当前事件执行后终止。进一步的行为取决于调用此函数的上下文:

- 如果此函数是从模型执行线程、控制动作代码或形状的点击代码中调用的,它将立即返回true。模型将在当前事件执行后立即暂停。

- 如果此函数是从其他位置调用的(例如,用户定义的并发线程),它将等待模型执行线程终止然后返回true。

到此函数完成时,引擎可能处于PAUSED、FINISHED或ERROR状态。如果引擎状态不允许暂停,则返回false。
boolean run()boolean runSimulation()如果模型当前处于暂停状态,则运行模型。将引擎置于RUNNING状态,然后开始模型执行。引擎命令仅适用于PAUSED状态(在其他状态下不执行任何操作并返回false)。将引擎置于RUNNING状态,然后开始模型执行。执行可能因以下原因之一而中断:

- 没有更多的事件要执行(状态->FINISHED)
- 达到停止时间(状态->FINISHED)
- 调用了pause()(状态->PAUSED)
- 调用了finish()(状态->FINISHED)
- 顶级代理已被销毁(状态->FINISHED)
- 在事件执行或代理销毁期间发生异常(状态->ERROR)
此函数永远不应该从模型执行线程调用!
到此函数完成时,引擎可能已经处于PAUSED、FINISHED或ERROR状态。

如果引擎状态不允许运行,则返回false。
boolean stop()boolean stopSimulation()终止模型执行,销毁模型,并忘记它。然后将引擎置于IDLE状态并返回true。引擎命令仅适用于任何非IDLE状态(在IDLE状态下不执行任何操作并返回false)。如果状态是RUNNING,设置一个标志,当模型执行线程测试此标志时,会导致它终止。进一步的行为取决于调用此函数的上下文:

- 当此函数从模型执行线程、控制动作代码或形状的点击代码中调用时,它将立即返回true,留下模型处于PLEASE_WAIT状态。模型将在稍后停止和销毁(可以使用实验的After Simulation Run代码或顶级代理的On Destroy代码来处理这一刻)。

在这种情况下,更推荐使用finish()函数。

- 当此函数从其他位置调用时(例如,用户定义的并发线程),它将等待模型执行线程终止,然后销毁模型(调用root.onDestroy())并忘记它。之后,它将引擎置于IDLE状态并返回true。
boolean finish()boolean finishSimulation()完成当前正在运行或已暂停的模型。与stop()函数不同,它不销毁模型,因此您可以检查和分析其状态。引擎命令仅适用于RUNNING或PAUSED状态(在其他状态下不执行任何操作并返回false)。设置一个标志,当引擎测试此标志时,会在完成当前事件执行后完成。进一步的行为取决于调用此函数的上下文:

- 当此函数从模型执行线程、控制动作代码或形状的点击代码中调用时,它将立即返回true。模型将在当前事件执行后完成(可以使用实验的After Simulation Run代码来处理这一刻)。

- 当此函数从其他位置调用时(例如,用户定义的并发线程),它将等待模型执行线程终止并返回true。

到此函数完成时,引擎可能处于FINISHED或ERROR状态。如果引擎状态不允许暂停,则返回false。
boolean runFast()N/A以尽可能快的方式运行模型。无论任何设置,都是在虚拟时间模式下运行。在同一(调用)线程中以尽可能快的方式运行模型。无论任何设置,都是在虚拟时间模式下运行。此函数在以下情况下结束:

- 当调用时引擎状态非法(返回false,在所有其他情况下返回true)
- 没有更多的事件/方程要执行(状态->FINISHED)
- 达到停止时间(状态->FINISHED)
- 调用了pause()(状态->PAUSED)
- 调用了finish()(状态->FINISHED)
- 顶级代理已被销毁(状态->FINISHED)
- 在模型执行期间发生异常(状态->ERROR)
在整个运行过程中,模型被锁定,因此您不应尝试显示代理演示,或执行可能访问模型的任何并发操作。
如果引擎状态不允许运行,则返回false。
boolean step()N/A从PAUSED状态开始,最多执行模型的一个离散步骤。从PAUSED状态开始,最多执行模型的一个离散步骤。在FINISHED、ERROR或PAUSED状态下结束。

此函数永远不应该从模型执行线程调用!

如果引擎状态不允许执行步骤,则返回false。
Engine.State getState()N/A返回引擎的当前状态(IDLE、PAUSED、RUNNING、FINISHED、ERROR或PLEASE_WAIT)。返回引擎的当前状态:

- IDLE — 没有模型设置为执行,什么都不做。
- PAUSED — 模型已设置并已启动,准备运行或执行步骤。
- RUNNING — 在由run()或runFast()调用的模型执行循环中。
- FINISHED — 模型执行已成功完成,但模型尚未销毁。
- ERROR — 模型执行以错误结束,模型尚未销毁。
- PLEASE_WAIT — 正在执行一个不可中断的命令,如pause()、step()或stop()。
但是,不能保证这种状态总是如此,因为可以随时进行更改。
boolean getRealTimeMode()N/A返回当前模型执行模式。返回当前模型执行模式。如果当前执行模式是实时的,则返回true;如果是虚拟时间的,则返回false。
void setRealTimeMode(boolean on)N/A设置虚拟或实时执行模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值