namespace MLAgents.RewardProvider
{
///
/// Reward providers allow users to provide rewards for Agent behavior during training in order to
/// give hints on what types of actions are "better" than others based on an Agent's previous observation.
///
public interface IRewardProvider
{
///
/// Get an incremental reward to pass along to a trainer.
///
///
float GetIncrementalReward();
///
/// This function is called on every step of the simulation and should be
/// used as a place to store an 's incremental reward
/// before the reward is sent off to the brain from the
/// method.
///
void RewardStep();
///
/// Notifies the RewardProvider that the current reward should be reset. If done is false,
/// the incremental reward should only be reset, otherwise both the incremental and cumulative
/// reward should be reset.
/// Flag indicating whether the Agent episode is done or not.
///
void ResetReward(bool done=false);
}
}