mirror of
https://github.com/jcreek/Sarpy.git
synced 2026-07-12 18:53:44 +00:00
25 lines
774 B
Python
25 lines
774 B
Python
import numpy as np
|
|
from rlgym_compat import GameState
|
|
|
|
|
|
class DiscreteAction:
|
|
"""
|
|
Simple discrete action space. All the analog actions have 3 bins by default: -1, 0 and 1.
|
|
"""
|
|
|
|
def __init__(self, n_bins=3):
|
|
assert n_bins % 2 == 1, "n_bins must be an odd number"
|
|
self._n_bins = n_bins
|
|
|
|
def get_action_space(self):
|
|
raise NotImplementedError("We don't implement get_action_space to remove the gym dependency")
|
|
|
|
def parse_actions(self, actions: np.ndarray, state: GameState) -> np.ndarray:
|
|
actions = actions.reshape((-1, 8)).astype(dtype=np.float32)
|
|
|
|
# map all binned actions from {0, 1, 2 .. n_bins - 1} to {-1 .. 1}.
|
|
actions[..., :5] = actions[..., :5] / (self._n_bins // 2) - 1
|
|
|
|
return actions
|
|
|