mirror of
https://github.com/illiumst/marl-factory-grid.git
synced 2025-05-23 07:16:44 +02:00
Merge branch 'main' into refactor_rename
This commit is contained in:
commit
ef2fdd5d28
@ -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:
|
||||||
|
@ -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):
|
||||||
|
@ -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'
|
||||||
|
@ -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 []
|
||||||
|
|
||||||
|
@ -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
60
random_testrun.py
Normal 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....')
|
Loading…
x
Reference in New Issue
Block a user