mirror of
				https://github.com/illiumst/marl-factory-grid.git
				synced 2025-10-31 04:37:25 +01:00 
			
		
		
		
	first step towards simple make interface
This commit is contained in:
		| @@ -1,27 +1,20 @@ | ||||
| def rooms(n_agents=1): | ||||
| def make(env_str, n_agents=1, pomdp_r=2, max_steps=400): | ||||
|     import yaml | ||||
|     from pathlib import Path | ||||
|     from environments.factory.factory_dirt_item import DirtItemFactory | ||||
|     from environments.factory.factory_item import ItemFactory, ItemProperties | ||||
|     from environments.factory.factory_dirt import DirtProperties, DirtFactory | ||||
|     from environments.utility_classes import MovementProperties, ObservationProperties, AgentRenderOptions | ||||
|  | ||||
|     obs_props = ObservationProperties(render_agents=AgentRenderOptions.NOT, | ||||
|                                       omit_agent_self=True, | ||||
|                                       additional_agent_placeholder=None, | ||||
|                                       frames_to_stack=0, | ||||
|                                       pomdp_r=2 | ||||
|                                       ) | ||||
|     move_props = MovementProperties(allow_diagonal_movement=True, | ||||
|                                     allow_square_movement=True, | ||||
|                                     allow_no_op=False) | ||||
|     dirt_props = DirtProperties(initial_dirt_ratio=0.35, initial_dirt_spawn_r_var=0.1, | ||||
|                                 clean_amount=0.34, | ||||
|                                 max_spawn_amount=0.1, max_global_amount=20, | ||||
|                                 max_local_amount=1, spawn_frequency=0, max_spawn_ratio=0.05, | ||||
|                                 dirt_smear_amount=0.0, agent_can_interact=True) | ||||
|     factory_kwargs = dict(n_agents=n_agents, max_steps=400, parse_doors=True, | ||||
|                           level_name='rooms', record_episodes=False, doors_have_area=False, | ||||
|                           verbose=False, | ||||
|                           mv_prop=move_props, | ||||
|                           obs_prop=obs_props | ||||
|     with (Path(__file__).parent / 'levels' / 'parameters' / f'{env_str}.yaml').open('r') as stream: | ||||
|         dictionary = yaml.load(stream, Loader=yaml.FullLoader) | ||||
|  | ||||
|     obs_props = ObservationProperties(render_agents=AgentRenderOptions.COMBINED, frames_to_stack=0, pomdp_r=pomdp_r) | ||||
|  | ||||
|     factory_kwargs = dict(n_agents=n_agents, max_steps=max_steps, obs_prop=obs_props, | ||||
|                           mv_prop=MovementProperties(**dictionary['movement_props']), | ||||
|                           dirt_prop=DirtProperties(**dictionary['dirt_props']), | ||||
|                           record_episodes=False, verbose=False, **dictionary['factory_props'] | ||||
|                           ) | ||||
|     return DirtFactory(dirt_props=dirt_props, **factory_kwargs) | ||||
|  | ||||
|     return DirtFactory(**factory_kwargs) | ||||
|   | ||||
							
								
								
									
										19
									
								
								environments/factory/levels/parameters/DirtyFactory-v0.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								environments/factory/levels/parameters/DirtyFactory-v0.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| movement_props: | ||||
|     allow_diagonal_movement:    True | ||||
|     allow_square_movement:      True | ||||
|     allow_no_op:                False | ||||
| dirt_props: | ||||
|     initial_dirt_ratio:         0.35 | ||||
|     initial_dirt_spawn_r_var :  0.1 | ||||
|     clean_amount:               0.34 | ||||
|     max_spawn_amount:           0.1 | ||||
|     max_global_amount:          20 | ||||
|     max_local_amount:           1 | ||||
|     spawn_frequency:            0 | ||||
|     max_spawn_ratio:            0.05 | ||||
|     dirt_smear_amount:          0.0 | ||||
|     agent_can_interact:         True | ||||
| factory_props: | ||||
|     parse_doors:                True | ||||
|     level_name:                 "rooms" | ||||
|     doors_have_area:            False | ||||
| @@ -1,11 +1,12 @@ | ||||
| from environments.factory import rooms | ||||
| from environments.factory import make | ||||
| import random | ||||
| from gym.wrappers import FrameStack | ||||
|  | ||||
| env = rooms(n_agents=2) | ||||
| n_agents = 4 | ||||
| env = make('DirtyFactory-v0', n_agents=n_agents) | ||||
| env = FrameStack(env, num_stack=3) | ||||
| state, *_ = env.reset() | ||||
|  | ||||
| for i in range(1000): | ||||
|     state, *_ = env.step([random.randint(0, 9), random.randint(0, 9)]) | ||||
|     state, *_ = env.step([env.unwrapped.action_space.sample() for _ in range(n_agents)]) | ||||
|     env.render() | ||||
		Reference in New Issue
	
	Block a user
	 romue
					romue