当前位置: 首页 > 知识库问答 >
问题:

Repast-在批处理运行之间交换信息

孔欣可
2023-03-14

Repast中的批处理运行是没有交互的独立运行。但是,在我的模型中,我需要启用这样的交互。例如,run-2需要从run-1获取一些数据才能完全运行。

有没有办法在批处理运行之间交换信息?

共有1个答案

甄云
2023-03-14

单个批处理运行的执行顺序是不预先确定的。例如,如果您将运行分配给多个资源,则两个可能同时运行,甚至在1之前运行2个。因此,在一般情况下,我认为这是不可能的。

也就是说,我认为你有三个选择:

>

  • 如果可能,执行所有独立运行(例如示例中的1),收集数据,然后执行依赖运行。如果您实际上谈论的是一系列运行1-,那么这显然不会很好地工作

    如果所有的运行都在同一个资源上运行,您可以进行一些实验,找出运行1在哪里运行。我怀疑它可能在“instance_1”中,而run 2在instance_2中,等等。通过这里的实验,我的意思是手动查看文件系统,看看它在哪里。然后,您可以使用Java的各种文件IO类(注意——不是Repast功能)获取运行2的位置,并用它找到运行1数据的位置。例如,如果您知道run 2在/x/y/z/instance_2中运行(可能通过执行path.get(“./”)或其他操作),并且run 1在/x/z/y/instance_1中运行,那么您应该能够获取数据。我不知道你想要运行1中的哪些数据,但你必须确保你想要的数据已经完全写入。

    如果运行2真的依赖于运行1,那么更新模型以将其作为单次运行可能是有意义的。

    刻痕

  •  类似资料:
    • 我想在无头模式下使用Repast Simphony的batch runner,使用展开的参数文件,以避免使用nxn实验设置。我已经设法使用控制台和参数文件创建了一个jar,但找不到实际启动已创建的模型jar的方法,因为在使用自定义展开的参数文件时,-run选项似乎无效。 有人对如何去那里有什么建议吗?

    • 我在我的项目中集成了Spring Batch,我在运行JobLauncher时遇到了问题。 在我的类JobLauncher我有这个: 对于配置,我使用XML配置: 配置批处理。xml: 在作业配置中。我有: 当我在类JobLauncher中调试时,它会在jobLuancher中停止。运行,我也不例外,似乎SpringBatch无法识别reader和whriter!!有什么建议吗?

    • 我的Spring批处理过程运行了两次。 在这里阅读这个链接后,我添加了到我的application.yml.但是作业本身没有运行。 然后我尝试对我的作业配置类进行一些修改。我将实例变量移动到方法参数,希望能解决这个问题。但是再也没有运气了。 配置类 AppConfig.java更新 日志: 从日志中,您可以注意到 ***********处理器**********打印两次。(处理器每次打印两次,因为

    • Spring批处理读取器的“pageSize”属性和写入器的“提交间隔”之间有什么关系/区别。 我可能错了,但我在我的应用程序中看到了一种模式,即每超过一个页面大小,我就会看到一个提交。这是真的吗? 谢谢

    • 我有一个非常简单的spring批处理,它从一个表中更新了一百万条记录。因为它非常简单,所以我尝试只实现一个更新表的Tasklet。 但我想用10个记录的步骤来promise。是可以在tasklet中实现这一点,还是我必须将itemReader/ItemWriter与块一起使用? 提前谢谢。

    • 1)读取器读取的任何记录都应通过处理器的处理传递给写入器 2)我的阅读器通过SQL查询读取记录,所以如果阅读器读取了100条记录,那么所有记录都应该一次传递给writer 3)如果读取1000条记录,则应同时通过所有1000条记录 4)所以从本质上说,提交间隔在这里是动态的,而不是固定的。 5)我们有什么办法可以做到这一点吗? 编辑: 现在我们想要的是动态提交间隔。读者正在阅读的任何内容,都将立即