Repast 中的批处理运行是独立运行,没有交互。但是,在我的模型中,我需要启用这种交互。例如 run-2 需要从 run-1 获取一些数据才能完全运行。
有没有办法在批处理运行之间交换信息?
Repast 中的批处理运行是独立运行,没有交互。但是,在我的模型中,我需要启用这种交互。例如 run-2 需要从 run-1 获取一些数据才能完全运行。
有没有办法在批处理运行之间交换信息?
执行单个批处理运行的顺序不是预先确定的。例如,如果您在多个资源中分配运行,则两个资源可能同时运行或 2 甚至在 1 之前运行。所以,在一般情况下,我认为这是不可能的。
也就是说,我认为你有三个选择:
如果可能,请进行所有独立运行(例如,您的示例中的 1 次),收集数据,然后进行相关运行。如果您实际上是在谈论一系列运行 1->2->3...
如果所有运行都在同一资源上运行,您可以进行一些试验以找出运行 1 的运行位置。我怀疑它可能在“instance_1”中,而运行 2 在 instance_2 中等等。通过这里的实验,我的意思是手动查看文件系统以查看在哪里。然后,您可以使用 Java 的各种文件 IO 类(注意 - 不是 Repast 功能)来获取运行 2 的位置并找到运行 1 的数据的位置。例如,如果您知道运行 2 在 /x/y/z/instance_2 中运行(可能通过执行 Paths.get("./") 或其他方式)并且运行 1 则在 /x/z/y/instance_1 ,你应该能够得到数据。我不知道您想要运行 1 中的哪些数据,但您必须确保您想要的数据已完全写入。
如果运行 2 真的依赖于运行 1,那么更新模型以将它们作为单次运行运行可能是有意义的。
缺口