【发布时间】:2020-02-18 20:55:07
【问题描述】:
我正在尝试通过 Simphony GUI 对模型进行批量运行。我在我的场景树中创建了具有相对路径“./Test_Data_FileSink”的文本接收器。该文件是通过 GUI 单次运行创建和保存的。但是,当我进行批处理时,不会在 localhost 实例中创建任何文件。当我导航到实例时,我看到了 debug.log、FAILURE_null、instance.log 和 param_input.txt,但没有看到 Test_Data_FileSink 文件。批处理尝试跨实例编译数据,并在指定的输出位置返回一个空的 batch_param_map.txt 和 Test_Data_FileSink.txt。
通过下面的批处理运行配置窗口显示警告消息:
'WARN [SwingWorker-pool-2-thread-1] 12:15:28,906 repast.simpony.batch.ssh.OutputFinder - 找不到与 glob 匹配的模型输出:{**\,}Test_Data_FileSink_ModelOutput*.txt in C :\Users\user\AppData\Local\Temp\simphony_model_1582046063159\instance_1'
批处理运行控制台日志中有一个额外的错误,模型可能正在寻找 UI。
repast.simpony.batch.InstanceRunner - 运行模型时出错 java.lang.NoClassDefFoundError: repast/simpony/ui/RSApplication
GUI UI 允许输入参数,但如果参数已经设置,我看不到模型依赖于它运行的位置。我试图在设置 UI 时插入一些条件语句
if (!RunEnvironment.getInstance().isBatch()) {
// do your GUI specific elements here
}
如果我不允许渲染 UI 并且在我发现它可以工作的位置似乎没有太大影响,这会破坏 Simphony 的初始化。
我还应该尝试什么?
【问题讨论】:
-
我认为由于您上面提到的错误,模型无法运行。您是否在模型中引用 RSApplication 或任何 Simphony 内部类。我们没有在批处理负载 jar 中包含 GUI 运行时,因为它不应该是必需的,事实上,在某些无头服务器资源上,引用 Java GUI 元素可能会导致错误。
-
我已经开始处理你的 geoZombies 演示(用于上下文)。它确实引用了 setUIEffects() 函数内部的 RSApplication。当我尝试使用前一个批处理条件语句禁用 RSA 调用时,它会产生错误并且无法加载 Simphony。当我在 ContextCreator 中的静态 setUIEffects() 调用中执行相同的操作时,我会得到类似的行为。我会继续检查链接和故障排除。
标签: repast-simphony