Repository URL to install this package:
Version:
1.3.1 ▾
|
using Fluctio.FluctioSim.Core.Components.MachineLearning.NumberProviders;
using Unity.MLAgents;
using UnityEngine;
namespace Fluctio.FluctioSim.Core.Components.MachineLearning.TriggerActions
{
public abstract class RewardChanger : AgentAction
{
[SerializeField] protected NumberProvider rewardAmount;
[SerializeField] protected bool scaleByTimestep;
[SerializeField] protected bool saveStats = true;
public override void OnExecute()
{
var reward = rewardAmount.GetNumber();
if (scaleByTimestep)
{
reward *= Time.fixedDeltaTime;
}
ChangeReward(reward);
SaveStats(reward);
}
private void SaveStats(float reward)
{
if (!saveStats)
{
return;
}
var key = $"Rewards/{Agent.BehaviorName}/{gameObject.name}";
Academy.Instance.StatsRecorder.Add(key, reward, StatAggregationMethod.Sum);
}
protected abstract void ChangeReward(float reward);
//TODO: add items to ContextMenu for easier setup of popular things
}
}