【问题标题】:Why can't Repast Simphony find model output in batch run?为什么 Repast Simphony 在批处理中找不到模型输出?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 完美的先生。工作没有问题。感谢您对 Repast 的持续支持。很多学习都在这里进行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多