Resource Data
The ResourceReward system tracks the change in an arbitrary resource level (e.g. fuel, power, time, etc.).
It can be used to penalize the use of resources or reward a gain. The reward type is
configured by setting the resource_fn
argument to the desired function of the satellite.
- class ResourceData(resource_accumulated: float = 0.0)[source]
Bases:
Data
Construct resource data.
- Parameters:
resource_accumulated (float) – Amount of resource change accumulated.
- class ResourceDataStore(*args, resource_fn: ~typing.Callable = <function ResourceDataStore.<lambda>>, **kwargs)[source]
Bases:
DataStore
DataStore for tracking a change in some resource.
- Parameters:
resource_fn (Callable)
- data_type
alias of
ResourceData
- compare_log_states(prev_state: float, new_state: float) ResourceData [source]
Compare the previous and new state of the resource.
- Parameters:
prev_state (float)
new_state (float)
- Return type:
- class ResourceReward(reward_weight: float = 1.0, resource_fn: ~typing.Callable = <function ResourceReward.<lambda>>)[source]
Bases:
GlobalReward
Rewards for an arbitrary resource.
For example, to penalize the use of fuel, set
resource_fn = lambda sat: sat.dynamics.dv_available # or equivalent reward_weight = 0.1 # is positive, because the fuel changes are negative
To penalize the use of time, set
resource_fn = lambda sat: sat.simulator.sim_time reward_weight = -1e-3 # is negative, because time increases over time
- Parameters:
reward_weight (float) – [reward/resource] Scaling factor to apply to changes in resource level to yield reward.
resource_fn (Callable) – Function to call to get the resource level for each satellite.
- data_store_type
alias of
ResourceDataStore
- calculate_reward(new_data_dict: dict[str, ResourceData]) dict[str, float] [source]
Calculate the reward based on the change in resource level times the weight.
- Parameters:
new_data_dict (dict[str, ResourceData])
- Return type:
dict[str, float]