def __prepare_controls_and_actions(self):
self.__discrete_controls_to_net = np.array([i for i in range(len(self.__discrete_controls))
if i not in self.__discrete_controls_manual])
self.__num_manual_controls = len(self.__discrete_controls_manual)
self.__net_discrete_actions = []
if not self.__opposite_button_pairs:
for perm in it.product([False, True], repeat=len(self.__discrete_controls_to_net)):
self.__net_discrete_actions.append(list(perm))
else:
for perm in it.product([False, True], repeat=len(self.__discrete_controls_to_net)):
act = list(perm)
valid = True
for button_p in self.__opposite_button_pairs:
if act[button_p[0]] and act[button_p[1]]:
valid = False
if valid:
self.__net_discrete_actions.append(act)
self.__num_net_discrete_actions = len(self.__net_discrete_actions)
self.__action_to_index = {tuple(val): ind for (ind, val) in enumerate(self.__net_discrete_actions)}
self.__net_discrete_actions = np.array(self.__net_discrete_actions)
self.__onehot_discrete_acitons = np.eye(self.__num_net_discrete_actions)
评论列表
文章目录