2

我正在尝试通过 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 - 在 C:\Users 中找不到与 glob 匹配的模型输出:{**\,}Test_Data_FileSink_ModelOutput*.txt \user\AppData\Local\Temp\simphony_model_1582046063159\instance_1'

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

repast.simphony.batch.InstanceRunner - 运行模型 java.lang.NoClassDefFoundError 时出错:repast/simphony/ui/RSApplication

GUI UI 确实允许参数输入,但如果参数已经设置,我看不到模型依赖于它运行的位置。我试图在设置 UI 时插入一些条件语句

if (!RunEnvironment.getInstance().isBatch()) {
 // do your GUI specific elements here
}

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

我还应该尝试什么?

4

1 回答 1

3

GeoZombies 模型中的 SpecialEffects 类引用了批处理类路径中不可用的 RSApplication 类,并且无论如何都不需要批处理,因为它所做的只是提供一些视觉和声音效果,可以从模型中删除它。

  1. 删除 SpecialEffects 类
  2. 在 ContextCreator 中删除对 SpecialEffects.setUIEffects() 的静态调用;
  3. 在人工代理中,删除对 SpecialEffects.getInstance().playEnragedZombies() 的调用;
  4. 在 Zombie 代理中,删除对 SpecialEffects.getInstance() 的调用...
于 2020-02-20T17:18:24.923 回答