From 027b79557d9223873a181bcdde1679651ffc8ed8 Mon Sep 17 00:00:00 2001 From: hagrid67 <jdhwatson@gmail.com> Date: Thu, 16 May 2019 15:40:46 +0100 Subject: [PATCH] fixing msgpack serialization probs with numpy arrays appearing in EnvAgent --- flatland/envs/agent_utils.py | 14 +++++++++++++- flatland/envs/rail_env.py | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py index 1f1bc1d..05f81e4 100644 --- a/flatland/envs/agent_utils.py +++ b/flatland/envs/agent_utils.py @@ -1,6 +1,7 @@ from attr import attrs, attrib from itertools import starmap +import numpy as np # from flatland.envs.rail_env import RailEnv @@ -36,7 +37,18 @@ class EnvAgentStatic(object): return list(starmap(EnvAgentStatic, zip(positions, directions, targets))) def to_list(self): - return [self.position, self.direction, self.target] + + # I can't find an expression which works on both tuples, lists and ndarrays + # which converts them all to a list of native python ints. + lPos = self.position + if type(lPos) is np.ndarray: + lPos = lPos.tolist() + + lTarget = self.target + if type(lTarget) is np.ndarray: + lTarget = lTarget.tolist() + + return [lPos, int(self.direction), lTarget] @attrs diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py index a5248a8..de3401a 100644 --- a/flatland/envs/rail_env.py +++ b/flatland/envs/rail_env.py @@ -328,6 +328,11 @@ class RailEnv(Environment): grid_data = self.rail.grid.tolist() agent_static_data = [agent.to_list() for agent in self.agents_static] agent_data = [agent.to_list() for agent in self.agents] + + msgpack.packb(grid_data) + msgpack.packb(agent_data) + msgpack.packb(agent_static_data) + msg_data = { "grid": grid_data, "agents_static": agent_static_data, -- GitLab