def _police_move_by_continous_angle(self, police_list, police_actions):
# Accept continous move action, which is more suitable for MADDPG
# move angle (0~2pi)
police_actions = np.clip(police_actions, 0, 2*np.pi)
police_new_loc = police_list.copy()
police_speed = self.teams['police']['speed']
for _i, _a in enumerate(police_actions):
_a = np.asscalar(_a) # transform array to scalar
action_dir = np.array([np.cos(_a), np.sin(_a)])
police_dir = action_dir * police_speed
_p = police_list[_i]
_p = (_p[0] + police_dir[0], _p[1] + police_dir[1])
_p = self.ensure_inside(_p)
police_new_loc[_i] = _p
return police_new_loc
评论列表
文章目录