Merge branch 'main' into refactor_rename

This commit is contained in:
Chanumask 2023-10-24 14:15:57 +02:00
commit ef2fdd5d28
6 changed files with 66 additions and 7 deletions

View File

@ -63,7 +63,7 @@ Rules:
Collision: Collision:
done_at_collisions: false done_at_collisions: false
AssignGlobalPositions: {} AssignGlobalPositions: {}
DestinationDone: {} DestinationReachAny: {}
DestinationReach: DestinationReach:
n_dests: 1 n_dests: 1
DestinationSpawn: DestinationSpawn:

View File

@ -59,7 +59,7 @@ class SpawnAgents(Rule):
while True: while True:
try: try:
pos = positions.pop() pos = positions.pop()
except IndexError as e: except IndexError:
raise ValueError(f'It was not possible to spawn an Agent on the available position: ' raise ValueError(f'It was not possible to spawn an Agent on the available position: '
f'\n{agent_name[agent_name]["positions"].copy()}') f'\n{agent_name[agent_name]["positions"].copy()}')
if agents.by_pos(pos) and state.check_pos_validity(pos): if agents.by_pos(pos) and state.check_pos_validity(pos):

View File

@ -1,9 +1,9 @@
# Destination Env # Destination Env
DESTINATION = 'Destinations' DESTINATION = 'Destinations'
DEST_SYMBOL = 1 DEST_SYMBOL = 1
WAIT_ON_DEST = 'WAIT' WAIT_ON_DEST = 'WAIT'
MODE_SINGLE = 'SINGLE' MODE_SINGLE = 'SINGLE'
MODE_GROUPED = 'GROUPED' MODE_GROUPED = 'GROUPED'

View File

@ -17,7 +17,7 @@ class DoorAutoClose(Rule):
doors_that_ticked = [key for key, val in doors_tick_result.items() if val] doors_that_ticked = [key for key, val in doors_tick_result.items() if val]
state.print(f'{doors_that_ticked} were auto-closed' state.print(f'{doors_that_ticked} were auto-closed'
if doors_that_ticked else 'No Doors were auto-closed') if doors_that_ticked else 'No Doors were auto-closed')
return [TickResult(self.name, validity=c.VALID, value=0)] return [TickResult(self.name, validity=c.VALID, value=1)]
state.print('There are no doors, but you loaded the corresponding Module') state.print('There are no doors, but you loaded the corresponding Module')
return [] return []

View File

@ -17,4 +17,3 @@ def init():
shutil.copytree(template_path, cwd) shutil.copytree(template_path, cwd)
print(f'Templates copied to {cwd}"/"{template_path.name}') print(f'Templates copied to {cwd}"/"{template_path.name}')
print(':wave:') print(':wave:')

60
random_testrun.py Normal file
View File

@ -0,0 +1,60 @@
from pathlib import Path
from random import randint
from tqdm import trange
from marl_factory_grid.environment.factory import Factory
from marl_factory_grid.utils.logging.envmonitor import EnvMonitor
from marl_factory_grid.utils.logging.recorder import EnvRecorder
from marl_factory_grid.utils.tools import ConfigExplainer
if __name__ == '__main__':
# Render at each step?
render = True
# Reveal all possible Modules (Entities, Rules, Agents[Actions, Observations], etc.)
explain_config = False
# Collect statistics?
monitor = False
# Record as Protobuf?
record = False
run_path = Path('study_out')
if explain_config:
ce = ConfigExplainer()
ce.save_all(run_path / 'all_out.yaml')
# Path to config File
path = Path('marl_factory_grid/configs/narrow_corridor.yaml')
# Env Init
factory = Factory(path)
# Record and Monitor
if monitor:
factory = EnvMonitor(factory)
if record:
factory = EnvRecorder(factory)
# RL learn Loop
for episode in trange(500):
_ = factory.reset()
done = False
if render:
factory.render()
action_spaces = factory.action_space
while not done:
a = [randint(0, x.n - 1) for x in action_spaces]
obs_type, _, _, done, info = factory.step(a)
if render:
factory.render()
if done:
print(f'Episode {episode} done...')
break
if monitor:
factory.save_run(run_path / 'test.pkl')
if record:
factory.save_records(run_path / 'test.pb')
print('Done!!! Goodbye....')