我遵循的是集成anylogic模型和外部java应用程序模块,虽然我能够在运行导出的java应用程序之前更改参数,但是一旦模型运行,这些值似乎就变得不可变了。有没有办法在运行时动态修改参数值?
下面是我的java代码片段:
final Simulation s = new Simulation();
IExperimentHost host = new ExperimentHost(s);
s.parameter1 = 50;
s.setup(host);
host.launch();
s.runTheModel();
s.parameter1 = 100;
结果是参数1从不从50更改为100。有没有办法绕过这个问题?
1条答案
按热度按时间whlutmcx1#
尝试设置参数。“帮助”菜单对此进行了一些讨论。
编辑:您最初的问题并没有直接联系到作为外部java应用程序运行,但我认为这确实可以简化事情。导出java应用程序时,请查看.bat文件。您将看到运行模型的命令行是什么样子的。当我们从外部应用程序运行时,我们所做的只是让外部应用程序调用这个命令行,而不是anylogic在“帮助”菜单中讨论的内容。这样做的一个显著优点是,您可以在开发环境中轻松地模拟导出模型中正在发生的事情。
问问自己为什么要在运行时更改这些参数。是因为read语句,而您在运行模型之前没有数据吗?如果是这样,请考虑示例化对象的顺序,在设置了要使用的变量之前不要启动它们。这可以通过向main传递参数、设置数据库值或让main代理执行各种read语句来实现。
是不是你只是想让物品随着时间的推移而改变?如果是,考虑变量,而不是参数。考虑其他可能允许您更轻松地更改流的对象。例如,管道或其他序列之前的阀门是否为您提供了所需的控制级别?
在这一点上,您可能需要更详细的关于您正在尝试完成什么/您正在建模的系统的信息,以便提供任何更具体的建议。