python:运行梅萨模拟-如何保存每次运行的结果?

mrzz3bfm  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(139)

我正在使用这个mesa framework,它有两个主要文件:model.pyserver.py。构建的模拟只运行一次,但我想运行几次,例如5次,但保存每次运行的值。我使用命令行运行代码,每次运行后,我可以单击“重置”按钮

再次运行模拟。当前代码清除所有内容时,我单击“重置”但我想知道是否有可能将模拟结果保存在某个地方,以便在多次迭代后计算平均值。我曾想过创建一个蒙特卡罗模拟,但意识到这是不可能的,因为它需要人为干预才能运行,而蒙特卡罗模拟是自己运行的。
现在我想简化并能够在每次迭代后保存所有值。这听起来很容易,但由于框架的性质,我不确定这是否可能。我需要能够在再次调用之前存储值

server = ModularServer(
Schelling, [canvas_element, happy_element, happy_chart], "Schelling", model_params

有人知道这是否可以实现吗?我花了几天的时间在这上面,不确定这是否可能。我检查了stackoverflow类似的问题,但没有找到任何问题。
抱歉所有的更新,我试图简化到基本的问题。
提前感谢您的帮助。

nhaq1z21

nhaq1z211#

帮助,如果任何有一个解决方案,我需要保存我的运行到梅萨中的文件

vmdwslir

vmdwslir2#

您可以在不使用GUI的情况下运行模型。

def run_n_times(n=5):
    """Run the model the given number of times

    n: the number of times to run the model
    """
    for run_number in range(n):
        model = SchellingModel(20, 20, 0.8, 0.2, 4)
        while model.running:
            model.step()
            # processing/logging for each step
        # processing/logging/saving of results for this run
   # Aggregate the results of all runs and return or save

在每次运行之前创建一个新的随机种子并存储该种子可能会很有用,这样您就可以在GUI中重放给定的运行。

相关问题