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    
ai.fluctio.fluctio-sim / Core / Components / MachineLearning / Actuating / ActionBuffersExtensions.cs
Size: Mime:
using System;
using Unity.MLAgents.Actuators;

namespace Fluctio.FluctioSim.Core.Components.MachineLearning.Actuating
{
	public static class ActionBuffersExtensions
	{
		public static ActionBuffers FromOneContinuous(float value)
		{
			return new ActionBuffers(new[] { value }, new int[] { });
		}
		
		public static void CheckSingleContinuous(this ActionBuffers actionBuffers)
		{
			var discreteAmount = actionBuffers.DiscreteActions.Length;
			var continuousAmount = actionBuffers.ContinuousActions.Length;
			if (discreteAmount != 0 || continuousAmount != 1)
			{
				throw new InvalidOperationException($"Expected exactly one continuous action, got {discreteAmount} discrete and {continuousAmount} continuous");
			}
		}
		
		public static void SetOneContinuous(this ActionBuffers actionBuffers, float value)
		{
			actionBuffers.CheckSingleContinuous();
			var continuousActions = actionBuffers.ContinuousActions;
			continuousActions[0] = value;
		}
		
		public static float GetOneContinuous(this ActionBuffers actionBuffers)
		{
			actionBuffers.CheckSingleContinuous();
			var continuousActions = actionBuffers.ContinuousActions;
			return continuousActions[0];
		}
	}
}