Anylogic,如何设置按钮以重新启动模拟
Anylogic, how to setup a button so it would restart the simulation
美好的一天,
目前,有 6 个编辑框,它们连接到模型中的特定参数(用户可以在模型中编辑这些框 运行 时间)和一个不执行任何操作的按钮。我想让这个按钮重新开始模拟,但是如果用户之前在编辑框中更改了一些内容,新的模拟将根据用户输入的值运行。模型名称是 Simulation。
如果有人知道示例(或特定代码),将不胜感激。
澄清一下,有两个问题:
- 如何在模型中设置重启模拟的按钮? ——这是不可能的。但是可以做的是有一个按钮调用
stopSimulation()
和 returns 用户进入模拟设置
- 如何将在 运行 时间内对模型所做的更改传播到下一个模拟 运行? - 将编辑字段中的值保存到模型的内部属性中,然后通过选中
root
object 在 Simulation 的 After simulation run
Java 操作中访问它们
补充一下Artem对问题1的回复:其实是可以的,但是你要新建一个线程,有点高级。此代码将停止当前实验并重新启动它:
new Thread() {
public void run() {
getExperiment().stop(); // stops the model
getExperiment().run(); // runs it again
getExperimentHost().setPresentable( getEngine().getRoot() );
}
}.start();
您可以确保为新 运行 设置您的参数,正如 Artem 所讨论的那样。
PS:最好让用户按下停止按钮,将值提供给实验页面,让用户在需要时重新调整它们,然后让她照常重启模型。
美好的一天, 目前,有 6 个编辑框,它们连接到模型中的特定参数(用户可以在模型中编辑这些框 运行 时间)和一个不执行任何操作的按钮。我想让这个按钮重新开始模拟,但是如果用户之前在编辑框中更改了一些内容,新的模拟将根据用户输入的值运行。模型名称是 Simulation。 如果有人知道示例(或特定代码),将不胜感激。
澄清一下,有两个问题:
- 如何在模型中设置重启模拟的按钮? ——这是不可能的。但是可以做的是有一个按钮调用
stopSimulation()
和 returns 用户进入模拟设置 - 如何将在 运行 时间内对模型所做的更改传播到下一个模拟 运行? - 将编辑字段中的值保存到模型的内部属性中,然后通过选中
root
object 在 Simulation 的
After simulation run
Java 操作中访问它们
补充一下Artem对问题1的回复:其实是可以的,但是你要新建一个线程,有点高级。此代码将停止当前实验并重新启动它:
new Thread() {
public void run() {
getExperiment().stop(); // stops the model
getExperiment().run(); // runs it again
getExperimentHost().setPresentable( getEngine().getRoot() );
}
}.start();
您可以确保为新 运行 设置您的参数,正如 Artem 所讨论的那样。
PS:最好让用户按下停止按钮,将值提供给实验页面,让用户在需要时重新调整它们,然后让她照常重启模型。