def test_constructor_invalid_inputs(self): # Height and width must be at least 3. with self.assertRaises(AssertionError): mdp = OvercookedGridworld.from_grid(['X', 'X', 'X']) with self.assertRaises(AssertionError): mdp = OvercookedGridworld.from_grid([['X', 'X', 'X']]) with self.assertRaises(AssertionError): # Borders must be present. mdp = OvercookedGridworld.from_grid(['XOSX', 'P D', ' 21 ']) with self.assertRaises(AssertionError): # The grid can't be ragged. mdp = OvercookedGridworld.from_grid( ['XXPXX', 'O 2XX', 'X1 3 X', 'XDXSXX']) with self.assertRaises(AssertionError): # The agents must be numbered 1 and 2. mdp = OvercookedGridworld.from_grid( ['XXPXX', 'O 3O', 'X1 X', 'XDXSX']) with self.assertRaises(AssertionError): # The agents must be numbered 1 and 2. mdp = OvercookedGridworld.from_grid( ['XXPXX', 'O 1O', 'X1 X', 'XDXSX']) with self.assertRaises(AssertionError): # B is not a valid element. mdp = OvercookedGridworld.from_grid( ['XBPXX', 'O 2O', 'X1 X', 'XDXSX'])
def padded_mdp(self, mdp, display=False): """Returns a padded MDP from an MDP""" grid = Grid.from_mdp(mdp) padded_grid = self.embed_grid(grid) start_positions = self.get_random_starting_positions(padded_grid) mdp_grid = self.padded_grid_to_layout_grid(padded_grid, start_positions, display=display) return OvercookedGridworld.from_grid(mdp_grid)
def make_disjoint_sets_layout(self, inner_shape, prop_empty, prop_features, display=True): grid = Grid(inner_shape) self.dig_space_with_disjoint_sets(grid, prop_empty) self.add_features(grid, prop_features) padded_grid = self.embed_grid(grid) start_positions = self.get_random_starting_positions(padded_grid) mdp_grid = self.padded_grid_to_layout_grid(padded_grid, start_positions, display=display) return OvercookedGridworld.from_grid( mdp_grid, base_layout_params=self.mdp_params)