From 510f825edb471010ddf199cf74b90308facc9efb Mon Sep 17 00:00:00 2001
From: Dipam Chakraborty <dipam@aicrowd.com>
Date: Wed, 1 Dec 2021 13:53:49 +0530
Subject: [PATCH] malfunction to stopped state machine fix

---
 flatland/envs/rail_env.py                 |  1 -
 flatland/envs/step_utils/state_machine.py | 11 +++++------
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py
index 9dc05894..91fab9ca 100644
--- a/flatland/envs/rail_env.py
+++ b/flatland/envs/rail_env.py
@@ -568,7 +568,6 @@ class RailEnv(Environment):
         for agent in self.agents:
             i_agent = agent.handle
 
-             
             ## Update positions
             if agent.malfunction_handler.in_malfunction:
                 movement_allowed = False
diff --git a/flatland/envs/step_utils/state_machine.py b/flatland/envs/step_utils/state_machine.py
index e899e4b3..e1ebf17b 100644
--- a/flatland/envs/step_utils/state_machine.py
+++ b/flatland/envs/step_utils/state_machine.py
@@ -67,12 +67,11 @@ class TrainStateMachine:
             self.next_state = TrainState.STOPPED
     
     def _handle_malfunction(self):
-        if self.st_signals.malfunction_counter_complete and \
-           self.st_signals.valid_movement_action_given:
-            self.next_state = TrainState.MOVING
-        elif self.st_signals.malfunction_counter_complete and \
-                (self.st_signals.stop_action_given or self.st_signals.movement_conflict):
-             self.next_state = TrainState.STOPPED
+        if self.st_signals.malfunction_counter_complete:
+            if self.st_signals.valid_movement_action_given:
+                self.next_state = TrainState.MOVING
+            else:
+                self.next_state = TrainState.STOPPED
         else:
             self.next_state = TrainState.MALFUNCTION
 
-- 
GitLab