From 60aad1d8dc5d3bf206dffa736bf73ad42ff30a51 Mon Sep 17 00:00:00 2001 From: Rajith Vidanaarachchi Date: Tue, 12 Dec 2023 15:32:02 +1100 Subject: [PATCH] setting up online changes to model parameters In ModularServer, set-up a boolean parameter, dynamic, that allows the online parameter change behaviour. In SocketHandler, change the behaviour on receipt of 'submit_params' message. --- mesa_viz_tornado/ModularVisualization.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mesa_viz_tornado/ModularVisualization.py b/mesa_viz_tornado/ModularVisualization.py index 2a15780..8700e6c 100644 --- a/mesa_viz_tornado/ModularVisualization.py +++ b/mesa_viz_tornado/ModularVisualization.py @@ -242,6 +242,8 @@ def on_message(self, message): if param in self.application.user_params: if is_user_param(self.application.model_kwargs[param]): self.application.model_kwargs[param].value = value + if self.application.dynamic: + setattr(self.application.model, param, value) else: self.application.model_kwargs[param] = value @@ -262,6 +264,7 @@ def __init__( name="Mesa Model", model_params=None, port=None, + dynamic=False, ): """ Args: @@ -275,11 +278,14 @@ def __init__( 3. Environment var PORT 4. Default value (8521) model_params: A dict of model parameters + dynamic: Whether to allow model parameters to update in real-time or not """ self.verbose = True self.max_steps = 100000 + self.dynamic = dynamic + if port is not None: self.port = port else: