Exemplo n.º 1
0
        public override void ExperimentStarted(EnvironmentDescription <int, int> environmentDescription)
        {
            DotRLGlueCodec.TaskSpec.TaskSpec <int, int> taskSpec = new DotRLGlueCodec.TaskSpec.TaskSpec <int, int>(
                environmentDescription.StateSpaceDescription.MinimumValues,
                environmentDescription.StateSpaceDescription.MaximumValues,
                environmentDescription.ActionSpaceDescription.MinimumValues,
                environmentDescription.ActionSpaceDescription.MaximumValues,
                environmentDescription.ReinforcementSpaceDescription.MinimumValue ?? 0,
                environmentDescription.ReinforcementSpaceDescription.MaximumValue ?? 0,
                environmentDescription.DiscountFactor,
                string.Empty);

            string taskSpecString = (new DotRLGlueCodec.TaskSpec.TaskSpecStringEncoder()).Encode(taskSpec);

            if (!this.rlGlueConnectionManager.InitializeAgent(portNumber, taskSpecString))
            {
                throw new System.InvalidOperationException("Failed to connect with an RL-Glue agent.");
            }

            this.previousReinforcement = 0;
            this.rlGlueEpisodeStarted  = false;

            this.observation = new DotRLGlueCodec.Types.Observation(environmentDescription.StateSpaceDescription.Dimensionality, 0, 0);
            this.Action      = new MutableAction <int>(environmentDescription.ActionSpaceDescription.Dimensionality);
        }
Exemplo n.º 2
0
        public override EnvironmentDescription <int, int> GetEnvironmentDescription()
        {
            string taskSpecString = this.rlGlueConnectionManager.InitializeEnvironment(portNumber);

            if (string.IsNullOrEmpty(taskSpecString))
            {
                throw new System.InvalidOperationException("Failed to connect with an RL-Glue environment.");
            }

            DotRLGlueCodec.TaskSpec.TaskSpec <int, int> taskSpec
                = (new DotRLGlueCodec.TaskSpec.TaskSpecParser()).Parse(taskSpecString)
                  as DotRLGlueCodec.TaskSpec.TaskSpec <int, int>;

            EnvironmentDescription <int, int> result = new EnvironmentDescription <int, int>(
                new SpaceDescription <int>(taskSpec.ObservationMinimumValues.ToArray(), taskSpec.ObservationMaximumValues.ToArray()),
                new SpaceDescription <int>(taskSpec.ActionMinimumValues.ToArray(), taskSpec.ActionMaximumValues.ToArray()),
                new DimensionDescription <double>(taskSpec.ReinforcementMinimumValue, taskSpec.ReinforcementMaximumValue),
                taskSpec.DiscountFactor);

            this.action       = new DotRLGlueCodec.Types.Action(result.ActionSpaceDescription.Dimensionality, 0, 0);
            this.CurrentState = new MutableState <int>(result.StateSpaceDescription.Dimensionality);

            return(result);
        }