using System; using UnityEngine; namespace MLAgents { public enum SpaceType { Discrete, Continuous } /// /// The resolution of a camera used by an agent. /// The width defines the number of pixels on the horizontal axis. /// The height defines the number of pixels on the verical axis. /// blackAndWhite defines whether or not the image is grayscale. /// [Serializable] public struct Resolution { /// The width of the observation in pixels public int width; /// The height of the observation in pixels public int height; /// /// If true, the image will be in black and white. /// If false, it will be in colors RGB /// public bool blackAndWhite; } /// /// Holds information about the Brain. It defines what are the inputs and outputs of the /// decision process. /// [Serializable] public class BrainParameters { /// /// If continuous : The length of the float vector that represents /// the state /// If discrete : The number of possible values the state can take /// public int vectorObservationSize = 1; [Range(1, 50)] public int numStackedVectorObservations = 1; /// /// If continuous : The length of the float vector that represents /// the action /// If discrete : The number of possible values the action can take*/ /// public int[] vectorActionSize = new[] {1}; /// The list of observation resolutions for the brain public Resolution[] cameraResolutions; /// The list of strings describing what the actions correpond to */ public string[] vectorActionDescriptions; /// Defines if the action is discrete or continuous public SpaceType vectorActionSpaceType = SpaceType.Discrete; /// /// Deep clones the BrainParameter object /// /// A new BrainParameter object with the same values as the original. public BrainParameters Clone() { return new BrainParameters { vectorObservationSize = vectorObservationSize, numStackedVectorObservations = numStackedVectorObservations, vectorActionSize = (int[])vectorActionSize.Clone(), cameraResolutions = (Resolution[])cameraResolutions.Clone(), vectorActionDescriptions = (string[])vectorActionDescriptions.Clone(), vectorActionSpaceType = vectorActionSpaceType }; } } }