为什么 Repast Simphony 无法批量 运行 找到模型输出?

Why can't Repast Simphony find model output in batch run?

我正在尝试通过 Simphony GUI 对模型进行批处理 运行。我在场景树中创建了相对路径为“./Test_Data_FileSink”的文本接收器。这个文件是通过 GUI 用单个 运行s 创建和保存的。但是,当我执行批处理 运行 时,没有在本地主机实例中创建文件。当我导航到该实例时,我看到 debug.log、FAILURE_null、instance.log 和 param_input.txt,但没有 Test_Data_FileSink 文件。批处理尝试跨实例编译数据,returns 指定输出位置内的空 batch_param_map.txt 和 Test_Data_FileSink.txt。

通过下面的批处理 运行 配置 Window 显示警告消息:

'WARN [SwingWorker-pool-2-thread-1] 12:15:28,906 repast.simphony.batch.ssh.OutputFinder - No model output found matching glob:{**\,}Test_Data_FileSink_ModelOutput*.txt in C:\Users\user\AppData\Local\Temp\simphony_model_1582046063159\instance_1'

批处理 运行 控制台日志中还有一个错误,其中模型可能正在寻找 UI。

repast.simphony.batch.InstanceRunner - Error while running model java.lang.NoClassDefFoundError: repast/simphony/ui/RSApplication

GUI UI 确实允许参数输入,但如果参数已经设置,我看不到模型在哪里依赖它 运行。我试图围绕设置 UI

插入一些条件语句
if (!RunEnvironment.getInstance().isBatch()) {
 // do your GUI specific elements here
}

如果我不允许呈现 UI,这会破坏 Simphony 的初始化,并且在我发现它可以工作的位置似乎没有太大影响。

我还应该尝试什么?

GeoZombies 模型中的 SpecialEffects class 引用了 RSApplication class,它在批处理 class 路径中不可用,而且批处理中不需要它,因为它所做的一切是提供一些视觉和声音效果,可以从模型中移除。

  1. 删除特效class
  2. 在 ContextCreator 中删除对 SpecialEffects.setUIEffects();
  3. 的静态调用
  4. 在人类代理中,删除对 SpecialEffects.getInstance().playEnragedZombies();
  5. 的调用
  6. 在 Zombie 代理中,删除对 SpecialEffects.getInstance()...
  7. 的调用