#1859 - Started giving the red agent some 'intelligence' and a sense of a state. Changed Application.run to .execute.
This commit is contained in:
@@ -19,10 +19,10 @@ class GATERLAgent(AbstractGATEAgent):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
agent_name: str | None,
|
||||
action_space: ActionManager | None,
|
||||
observation_space: ObservationSpace | None,
|
||||
reward_function: RewardFunction | None,
|
||||
agent_name: Optional[str],
|
||||
action_space: Optional[ActionManager],
|
||||
observation_space: Optional[ObservationSpace],
|
||||
reward_function: Optional[RewardFunction],
|
||||
) -> None:
|
||||
super().__init__(agent_name, action_space, observation_space, reward_function)
|
||||
self.most_recent_action: ActType
|
||||
|
||||
@@ -109,6 +109,8 @@ class RandomAgent(AbstractScriptedAgent):
|
||||
"""
|
||||
return self.action_space.get_action(self.action_space.space.sample())
|
||||
|
||||
class DataManipulationAgent(AbstractScriptedAgent):
|
||||
pass
|
||||
|
||||
class AbstractGATEAgent(AbstractAgent):
|
||||
"""Base class for actors controlled via external messages, such as RL policies."""
|
||||
|
||||
16
src/primaite/game/science.py
Normal file
16
src/primaite/game/science.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from random import random
|
||||
|
||||
|
||||
def simulate_trial(p_of_success: float):
|
||||
"""
|
||||
Simulates the outcome of a single trial in a Bernoulli process.
|
||||
|
||||
This function returns True with a probability 'p_of_success', simulating a success outcome in a single
|
||||
trial of a Bernoulli process. When this function is executed multiple times, the set of outcomes follows
|
||||
a binomial distribution. This is useful in scenarios where one needs to model or simulate events that
|
||||
have two possible outcomes (success or failure) with a fixed probability of success.
|
||||
|
||||
:param p_of_success: The probability of success in a single trial, ranging from 0 to 1.
|
||||
:returns: True if the trial is successful (with probability 'p_of_success'); otherwise, False.
|
||||
"""
|
||||
return random() < p_of_success
|
||||
@@ -60,7 +60,7 @@ class PrimaiteGATEClient(GATEClient):
|
||||
return self.parent_session.training_options.rl_algorithm
|
||||
|
||||
@property
|
||||
def seed(self) -> int | None:
|
||||
def seed(self) -> Optional[int]:
|
||||
"""The seed to use for the environment's random number generator."""
|
||||
return self.parent_session.training_options.seed
|
||||
|
||||
@@ -115,7 +115,7 @@ class PrimaiteGATEClient(GATEClient):
|
||||
info = {}
|
||||
return obs, rew, term, trunc, info
|
||||
|
||||
def reset(self, *, seed: int | None = None, options: dict[str, Any] | None = None) -> Tuple[ObsType, Dict]:
|
||||
def reset(self, *, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[ObsType, Dict]:
|
||||
"""Reset the environment.
|
||||
|
||||
This method is called when the environment is initialized and at the end of each episode.
|
||||
|
||||
Reference in New Issue
Block a user