# Code generators
Domain specification
Domain
Create Domain
from enum import Enum
from typing import *
from skdecide import *
from skdecide.builders.domain import *
# Example of State type (adapt to your needs)
class State(NamedTuple):
x: int
y: int
# Example of Action type (adapt to your needs)
class Action(Enum):
up = 0
down = 1
left = 2
right = 3
class D(Domain):
T_state = State # Type of states
T_observation = T_state # Type of observations
T_event = Action # Type of events
T_value = float # Type of transition values (rewards or costs)
T_info = None # Type of additional information in environment outcome
class MyDomain(D):
def _state_step(self, action: StrDict[list[D.T_event]]) -> TransitionOutcome[D.T_state, StrDict[Value[D.T_value]], StrDict[D.T_predicate], StrDict[D.T_info]]:
pass
def _get_applicable_actions_from(self, memory: Memory[D.T_state]) -> StrDict[Space[D.T_event]]:
pass
def _get_enabled_events_from(self, memory: Memory[D.T_state]) -> Space[D.T_event]:
pass
def _get_action_space_(self) -> StrDict[Space[D.T_event]]:
pass
def _get_observation_space_(self) -> StrDict[Space[D.T_observation]]:
pass
def _get_observation_distribution(self, state: D.T_state, action: Optional[StrDict[list[D.T_event]]] = None) -> Distribution[StrDict[D.T_observation]]:
pass