Spaces:
Running
Running
import gym.spaces as spaces | |
from enum import IntEnum | |
# Enumeration of possible actions | |
class SocialAIActions(IntEnum): | |
# Turn left, turn right, move forward | |
left = 0 | |
right = 1 | |
forward = 2 | |
# no pickup-drop | |
# # Pick up an object | |
# pickup = 3 | |
# # Drop an object | |
# drop = 4 | |
# Toggle/activate an object | |
toggle = 3 | |
# Done completing task | |
done = 4 | |
class SocialAIGrammar(object): | |
templates = ["Where is", "Help", "Close", "How are"] | |
things = [ | |
"please", "the exit", "the wall", "you", "the ceiling", "the window", "the entrance", "the closet", | |
"the drawer", "the fridge", "the floor", "the lamp", "the trash can", "the chair", "the bed", "the sofa" | |
] | |
assert len(templates)*len(things) == 64 | |
print("language complexity {}:".format(len(templates)*len(things))) | |
grammar_action_space = spaces.MultiDiscrete([len(templates), len(things)]) | |
def get_action(cls, template, thing): | |
return [cls.templates.index(template), cls.things.index(thing)] | |
def construct_utterance(cls, action): | |
return cls.templates[int(action[0])] + " " + cls.things[int(action[1])] + " " | |
def contains_utterance(cls, utterance): | |
for t in range(len(cls.templates)): | |
for th in range(len(cls.things)): | |
if utterance == cls.construct_utterance([t, th]): | |
return True | |
return False | |
SocialAIActionSpace = spaces.MultiDiscrete([len(SocialAIActions), | |
*SocialAIGrammar.grammar_action_space.nvec]) | |