浏览代码

[rewardProvider] Reset the reward after calls to GetIncrementalReward, and remove the calls from Agent.

/main/reward-providers
Christopher Goy 5 年前
当前提交
db578832
共有 2 个文件被更改,包括 4 次插入14 次删除
  1. 12
      UnitySDK/Assets/ML-Agents/Scripts/Agent.cs
  2. 6
      UnitySDK/Assets/ML-Agents/Scripts/RewardProvider/LegacyRewardProvider.cs

12
UnitySDK/Assets/ML-Agents/Scripts/Agent.cs


}
/// <summary>
/// Resets the step reward and possibly the episode reward for the agent.
/// </summary>
public void ResetReward()
{
Debug.Assert(m_LegacyRewardProvider != null, "LegacyRewardProvider is null and " +
"legacy method 'ResetReward' was called.");
m_LegacyRewardProvider.ResetReward(m_Done);
}
/// <summary>
/// Overrides the current step reward of the agent and updates the episode
/// reward accordingly.
/// </summary>

if (m_RequestDecision)
{
SendInfoToBrain();
ResetReward();
m_Done = false;
m_MaxStepReached = false;
m_RequestDecision = false;

if (m_Terminate)
{
m_Terminate = false;
ResetReward();
m_Done = false;
m_MaxStepReached = false;
m_RequestDecision = false;

6
UnitySDK/Assets/ML-Agents/Scripts/RewardProvider/LegacyRewardProvider.cs


public float GetIncrementalReward()
{
return m_IncrementalReward;
var reward = m_IncrementalReward;
ResetReward();
return reward;
}

public void ResetReward(bool done = false)
void ResetReward(bool done = false)
{
m_IncrementalReward = 0f;
if (done)

正在加载...
取消
保存