Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
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
	}
}