From f0bcf8eb86645535f1373ca28ee24e3760e97cfe Mon Sep 17 00:00:00 2001 From: bmielnicki Date: Thu, 1 Oct 2020 03:57:34 +0200 Subject: [PATCH 1/4] adds generated layouts --- server/config.json | 2 +- server/game.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/server/config.json b/server/config.json index b34bbd7..b39499a 100644 --- a/server/config.json +++ b/server/config.json @@ -1,6 +1,6 @@ { "logfile" : "app.log", - "layouts" : ["cramped_room", "cramped_room_tomato", "asymmetric_advantages", "coordination_ring", "forced_coordination", "counter_circuit", "cramped_corridor", "marshmallow_experiment", "long_cook_time", "forced_coordination_tomato", "asymmetric_advantages_tomato", "marshmallow_experiment_coordination", "pipeline", "you_shall_not_pass", "tutorial_3"], + "layouts" : ["cramped_room", "cramped_room_tomato", "asymmetric_advantages", "coordination_ring", "forced_coordination", "counter_circuit", "cramped_corridor", "marshmallow_experiment", "long_cook_time", "forced_coordination_tomato", "asymmetric_advantages_tomato", "marshmallow_experiment_coordination", "pipeline", "you_shall_not_pass", "tutorial_3", "complicated_random_room", "simple_random_room"], "MAX_GAMES" : 10, "MAX_GAME_LENGTH" : 120, "AGENT_DIR" : "./static/assets/agents", diff --git a/server/game.py b/server/game.py index c052a8d..a945a74 100644 --- a/server/game.py +++ b/server/game.py @@ -6,13 +6,15 @@ from overcooked_ai_py.mdp.overcooked_env import OvercookedEnv from overcooked_ai_py.mdp.actions import Action, Direction from overcooked_ai_py.planning.planners import MotionPlanner, NO_COUNTERS_PARAMS +from overcooked_ai_py.utils import load_from_json +from overcooked_ai_py.mdp.layout_generator import LayoutGenerator from human_aware_rl.rllib.rllib import load_agent import random, os, pickle, json import ray # Relative path to where all static pre-trained agents are stored on server AGENT_DIR = None - +LAYOUT_GEN_PARAMS_DIR = os.path.join("static", "layout_generation_params") # Maximum allowable game time (in seconds) MAX_GAME_TIME = None @@ -533,7 +535,13 @@ def activate(self): raise ValueError("Inconsistent State") self.curr_layout = self.layouts.pop() - self.mdp = OvercookedGridworld.from_layout_name(self.curr_layout, **self.mdp_params) + + try: + mdp_gen_params = load_from_json(os.path.join(LAYOUT_GEN_PARAMS_DIR, self.curr_layout)) + self.mdp = LayoutGenerator.mdp_gen_fn_from_dict(mdp_gen_params, outer_shape=mdp_gen_params["inner_shape"])() + except FileNotFoundError: + self.mdp = OvercookedGridworld.from_layout_name(self.curr_layout, **self.mdp_params) + if self.show_potential: self.mp = MotionPlanner.from_pickle_or_compute(self.mdp, counter_goals=NO_COUNTERS_PARAMS) self.state = self.mdp.get_standard_start_state() From 4fa75a7759e042e417f9f38a2b5e4d8cdb99ce63 Mon Sep 17 00:00:00 2001 From: bmielnicki Date: Thu, 1 Oct 2020 04:03:41 +0200 Subject: [PATCH 2/4] adds mdp_gen_params --- .../complicated_random_room.json | 11 +++++++++++ .../layout_generation_params/simple_random_room.json | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 server/static/layout_generation_params/complicated_random_room.json create mode 100644 server/static/layout_generation_params/simple_random_room.json diff --git a/server/static/layout_generation_params/complicated_random_room.json b/server/static/layout_generation_params/complicated_random_room.json new file mode 100644 index 0000000..b93a668 --- /dev/null +++ b/server/static/layout_generation_params/complicated_random_room.json @@ -0,0 +1,11 @@ +{ + "inner_shape": [7, 5], + "prop_empty": 0.7, + "prop_feats": 0.4, + "start_all_orders": [{ + "ingredients": ["onion", "onion", "onion"] + }], + "recipe_values": [20], + "recipe_times": [20], + "display": false +} diff --git a/server/static/layout_generation_params/simple_random_room.json b/server/static/layout_generation_params/simple_random_room.json new file mode 100644 index 0000000..34441a7 --- /dev/null +++ b/server/static/layout_generation_params/simple_random_room.json @@ -0,0 +1,11 @@ +{ + "inner_shape": [5, 4], + "prop_empty": 0.95, + "prop_feats": 0.1, + "start_all_orders" : [ + { "ingredients" : ["onion", "onion", "onion"]} + ], + "recipe_values" : [20], + "recipe_times" : [20], + "display": false +} From be13f3a5f0c5df4ab6c1a890867c1169ec973f60 Mon Sep 17 00:00:00 2001 From: Xiaocheng Mesut Yang Date: Wed, 14 Oct 2020 18:26:04 -0700 Subject: [PATCH 3/4] fixed mlt loading --- server/game.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/server/game.py b/server/game.py index a945a74..0504847 100644 --- a/server/game.py +++ b/server/game.py @@ -9,6 +9,7 @@ from overcooked_ai_py.utils import load_from_json from overcooked_ai_py.mdp.layout_generator import LayoutGenerator from human_aware_rl.rllib.rllib import load_agent +import numpy as np import random, os, pickle, json import ray @@ -408,6 +409,7 @@ def __init__(self, layouts=["cramped_room"], mdp_params={}, num_players=2, gameT self.curr_tick = 0 self.human_players = set() self.npc_players = set() + self.featurize_fn = lambda state: self.mdp.lossless_state_encoding(state, 100000) if randomized: random.shuffle(self.layouts) @@ -415,13 +417,13 @@ def __init__(self, layouts=["cramped_room"], mdp_params={}, num_players=2, gameT if playerZero != 'human': player_zero_id = playerZero + '_0' self.add_player(player_zero_id, idx=0, buff_size=1, is_human=False) - self.npc_policies[player_zero_id] = self.get_policy(playerZero, idx=0) + self.npc_policies[player_zero_id] = self.get_policy(playerZero, idx=0, featurize_fn=self.featurize_fn) self.npc_state_queues[player_zero_id] = LifoQueue() if playerOne != 'human': player_one_id = playerOne + '_1' self.add_player(player_one_id, idx=1, buff_size=1, is_human=False) - self.npc_policies[player_one_id] = self.get_policy(playerOne, idx=1) + self.npc_policies[player_one_id] = self.get_policy(playerOne, idx=1, featurize_fn=self.featurize_fn) self.npc_state_queues[player_one_id] = LifoQueue() @@ -538,6 +540,7 @@ def activate(self): try: mdp_gen_params = load_from_json(os.path.join(LAYOUT_GEN_PARAMS_DIR, self.curr_layout)) + np.random.seed(int(time()*100) % 100000) self.mdp = LayoutGenerator.mdp_gen_fn_from_dict(mdp_gen_params, outer_shape=mdp_gen_params["inner_shape"])() except FileNotFoundError: self.mdp = OvercookedGridworld.from_layout_name(self.curr_layout, **self.mdp_params) @@ -586,12 +589,12 @@ def to_json(self): obj_dict['state'] = self.get_state() if self._is_active else None return obj_dict - def get_policy(self, npc_id, idx=0): + def get_policy(self, npc_id, idx=0, featurize_fn=None): if npc_id.lower().startswith("rllib"): try: # Loading rllib agents requires additional helpers fpath = os.path.join(AGENT_DIR, npc_id, 'agent', 'agent') - agent = load_agent(fpath, agent_index=idx) + agent = load_agent(fpath, agent_index=idx, featurize_fn=featurize_fn) return agent except Exception as e: raise IOError("Error loading Rllib Agent\n{}".format(e.__repr__())) From ad3dbc9696d7c089be1c97ab9cae8b5ce1e01806 Mon Sep 17 00:00:00 2001 From: Xiaocheng Mesut Yang Date: Sat, 6 Feb 2021 11:35:59 -0800 Subject: [PATCH 4/4] updating json --- .../layout_generation_params/complicated_random_room.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/static/layout_generation_params/complicated_random_room.json b/server/static/layout_generation_params/complicated_random_room.json index b93a668..304e0e7 100644 --- a/server/static/layout_generation_params/complicated_random_room.json +++ b/server/static/layout_generation_params/complicated_random_room.json @@ -1,7 +1,7 @@ { "inner_shape": [7, 5], - "prop_empty": 0.7, - "prop_feats": 0.4, + "prop_empty": 0.75, + "prop_feats": 0.35, "start_all_orders": [{ "ingredients": ["onion", "onion", "onion"] }],