Example #1
0
        public string Encode(TaskSpecBase taskSpec)
        {
            StringBuilder result = new StringBuilder();

            result.Append("VERSION RL-Glue-3.0 PROBLEMTYPE episodic DISCOUNTFACTOR ");
            result.Append(string.Format(CultureInfo.InvariantCulture, "{0}", taskSpec.DiscountFactor));
            result.Append(" ");

            result.Append("OBSERVATIONS ");
            result.Append(TaskSpecParser.TypeToRangeDescription(taskSpec.ObservationSpaceType) + " ");
            foreach (string range in Enumerable.Zip(
                         taskSpec.GetObservationMinimumValues(),
                         taskSpec.GetObservationMaximumValues(),
                         (min, max) => string.Format(CultureInfo.InvariantCulture, "({0} {1}) ", min, max)))
            {
                result.Append(range);
            }

            result.Append("ACTIONS ");
            result.Append(TaskSpecParser.TypeToRangeDescription(taskSpec.ActionSpaceType) + " ");

            foreach (string range in Enumerable.Zip(
                         taskSpec.GetActionMinimumValues(),
                         taskSpec.GetActionMaximumValues(),
                         (min, max) => string.Format(CultureInfo.InvariantCulture, "({0} {1}) ", min, max)))
            {
                result.Append(range);
            }

            result.Append(string.Format(CultureInfo.InvariantCulture, "REWARDS ({0} {1})", taskSpec.ReinforcementMinimumValue, taskSpec.ReinforcementMaximumValue));

            if (!string.IsNullOrEmpty(taskSpec.AdditionalInformation))
            {
                result.Append(" EXTRA " + taskSpec.AdditionalInformation);
            }

            return(result.ToString());
        }