diff --git a/examples/demo.py b/examples/demo.py index b2da6ccbc09e2ce61663cca8285584765f33cb34..6c02f3552da2fe64f46a251bb17c7ac95709967a 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -138,9 +138,12 @@ class Demo: for step in range(max_nbr_of_steps): # Action - for a in range(self.env.get_num_agents()): - action = 2 # np.random.choice(self.action_size) #self.agent.act(agent_obs[a]) - action_dict.update({a: action}) + for iAgent in range(self.env.get_num_agents()): + action = 2 + agent = self.env.agents.copy()[iAgent] + if not self.env.check_action(agent, action)[1]: + action = np.random.choice(self.action_size) + action_dict.update({iAgent: action}) self.renderer.renderEnv(show=True, action_dict=action_dict) @@ -172,7 +175,6 @@ if False: demo_002.run_demo() demo_002 = None - demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl')) demo_flatland_000.renderer.resize() demo_flatland_000.run_demo(1800) diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py index 05f81e43be3f33bfdfc81911d6cf6272bfba2d7e..a5f18f3f723c703339092eb8875010d2e82eac63 100644 --- a/flatland/envs/agent_utils.py +++ b/flatland/envs/agent_utils.py @@ -4,7 +4,6 @@ from itertools import starmap import numpy as np # from flatland.envs.rail_env import RailEnv - @attrs class EnvDescription(object): n_agents = attrib() diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py index d4facaf5c681f4d5187be03aca69618b1f8cd466..e56395f4220ee7b7639a7fa79df1ce88796132c5 100644 --- a/flatland/envs/rail_env.py +++ b/flatland/envs/rail_env.py @@ -4,14 +4,18 @@ Definition of the RailEnv environment and related level-generation functions. Generator functions are functions that take width, height and num_resets as arguments and return a GridTransitionMap object. """ -import numpy as np +### TODO _ this is a global method --> utils or remove later +from inspect import currentframe + import msgpack +import numpy as np from flatland.core.env import Environment -from flatland.envs.observations import TreeObsForRailEnv -from flatland.envs.generators import random_rail_generator -from flatland.envs.env_utils import get_new_position from flatland.envs.agent_utils import EnvAgentStatic, EnvAgent +from flatland.envs.env_utils import get_new_position +from flatland.envs.generators import random_rail_generator +from flatland.envs.observations import TreeObsForRailEnv + # from flatland.core.transitions import Grid8Transitions, RailEnvTransitions # from flatland.core.transition_map import GridTransitionMap @@ -111,7 +115,7 @@ class RailEnv(Environment): self.agents_static = [None] * number_of_agents # static agent information self.num_resets = 0 self.reset() - self.num_resets = 0 # yes, set it to zero again! + self.num_resets = 0 # yes, set it to zero again! self.valid_positions = None @@ -197,6 +201,8 @@ class RailEnv(Environment): continue if self.dones[iAgent]: # this agent has already completed... + print("rail_env.py @", currentframe().f_back.f_lineno, " agent ", iAgent, + "has already completed : why action will not be executed!!!!? ADRIAN") continue action = action_dict[iAgent]