From 81ae9c09042eb72fadd2885e01e4eacbf5e31704 Mon Sep 17 00:00:00 2001
From: MLErik <baerenjesus@gmail.com>
Date: Wed, 30 Oct 2019 15:06:06 -0400
Subject: [PATCH] backward compatible with version 2.1.8: Reintroduced some
 malfunction parameters but are not used.

---
 flatland/envs/agent_utils.py         | 6 ++++--
 flatland/envs/schedule_generators.py | 8 ++++----
 flatland/envs/schedule_utils.py      | 3 ++-
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py
index 01ce2908..f5b84a7d 100644
--- a/flatland/envs/agent_utils.py
+++ b/flatland/envs/agent_utils.py
@@ -39,7 +39,7 @@ class EnvAgentStatic(object):
     # number of time the agent had to stop, since the last time it broke down
     malfunction_data = attrib(
         default=Factory(
-            lambda: dict({'malfunction': 0, 'nr_malfunctions': 0,
+            lambda: dict({'malfunction': 0, 'malfunction_rate': 0, 'next_malfunction': 0, 'nr_malfunctions': 0,
                           'moving_before_malfunction': False, 'fixed': True})))
 
     status = attrib(default=RailAgentStatus.READY_TO_DEPART, type=RailAgentStatus)
@@ -62,8 +62,10 @@ class EnvAgentStatic(object):
         malfunction_datas = []
         for i in range(len(schedule.agent_positions)):
             malfunction_datas.append({'malfunction': 0,
+                                      'malfunction_rate': schedule.agent_malfunction_rates[
+                                          i] if schedule.agent_malfunction_rates is not None else 0.,
+                                      'next_malfunction': 0,
                                       'nr_malfunctions': 0,
-                                      'moving_before_malfunction': False,
                                       'fixed': True})
 
         return list(starmap(EnvAgentStatic, zip(schedule.agent_positions,
diff --git a/flatland/envs/schedule_generators.py b/flatland/envs/schedule_generators.py
index 58a7be34..d3c5d78a 100644
--- a/flatland/envs/schedule_generators.py
+++ b/flatland/envs/schedule_generators.py
@@ -79,7 +79,7 @@ def complex_schedule_generator(speed_ratio_map: Mapping[float, float] = None, se
             speeds = [1.0] * len(agents_position)
 
         return Schedule(agent_positions=agents_position, agent_directions=agents_direction,
-                        agent_targets=agents_target, agent_speeds=speeds)
+                        agent_targets=agents_target, agent_speeds=speeds,agent_malfunction_rates=None)
 
     return generator
 
@@ -165,7 +165,7 @@ def sparse_schedule_generator(speed_ratio_map: Mapping[float, float] = None, see
             speeds = [1.0] * len(agents_position)
 
         return Schedule(agent_positions=agents_position, agent_directions=agents_direction,
-                        agent_targets=agents_target, agent_speeds=speeds)
+                        agent_targets=agents_target, agent_speeds=speeds,agent_malfunction_rates=None)
 
     return generator
 
@@ -263,7 +263,7 @@ def random_schedule_generator(speed_ratio_map: Optional[Mapping[float, float]] =
 
         agents_speed = speed_initialization_helper(num_agents, speed_ratio_map, seed=_runtime_seed)
         return Schedule(agent_positions=agents_position, agent_directions=agents_direction,
-                        agent_targets=agents_target, agent_speeds=agents_speed)
+                        agent_targets=agents_target, agent_speeds=speeds,agent_malfunction_rates=None)
 
     return generator
 
@@ -307,6 +307,6 @@ def schedule_from_file(filename, load_from_package=None) -> ScheduleGenerator:
         else:
             agents_speed = None
         return Schedule(agent_positions=agents_position, agent_directions=agents_direction,
-                        agent_targets=agents_target, agent_speeds=agents_speed)
+                        agent_targets=agents_target, agent_speeds=speeds,agent_malfunction_rates=None)
 
     return generator
diff --git a/flatland/envs/schedule_utils.py b/flatland/envs/schedule_utils.py
index c61d2f6b..e89f170d 100644
--- a/flatland/envs/schedule_utils.py
+++ b/flatland/envs/schedule_utils.py
@@ -6,4 +6,5 @@ from flatland.core.grid.grid_utils import IntVector2DArray
 Schedule = NamedTuple('Schedule', [('agent_positions', IntVector2DArray),
                                    ('agent_directions', List[Grid4TransitionsEnum]),
                                    ('agent_targets', IntVector2DArray),
-                                   ('agent_speeds', List[float])])
+                                   ('agent_speeds', List[float]),
+                                   ('agent_malfunction_rates', List[int])])
-- 
GitLab