/// <summary> /// Used to setup all major components in the project. /// </summary> void Awake() { UnityEngine.Random.seed = 42; string gardenWorldXML; string projectParamsXML; string [] argv = Environment.GetCommandLineArgs(); if (argv.Length < 3) { // Files used during testing inside the Unity Editor gardenWorldXML = Path.Combine("..", "experiment_garden.xml"); projectParamsXML = Path.Combine("..", "smartmower_params.xml"); } else { // Use filenames from command line gardenWorldXML = argv[1]; projectParamsXML = argv[2]; } // Load parameters projectParamSet = new ParamSet(projectParamsXML); showUI = projectParamSet.BoolParam(ParamSet.ParamGroupSetupManager, ParamSet.ParamShowUI); autoRun = projectParamSet.BoolParam(ParamSet.ParamGroupSetupManager, ParamSet.ParamAutoRun); // Create garden garden = GardenFactory.CreateGardenFromFile(gardenWorldXML, projectParamSet); // Handle UI if (showUI) { guiGarden.Init(garden); } else { guiGarden.gameObject.SetActive(false); GameObject.Find("EpisodeLabel").SetActive(false); GameObject.Find("StepLabel").SetActive(false); } // Set episode limit EpisodeManager.EpisodeLimit = projectParamSet.IntParam(ParamSet.ParamGroupEpisodeManager, ParamSet.ParamEpisodeLimit); // Create statistics writer this.statisticsWriter = new StatisticsWriter(garden, projectParamSet); }
/// <summary> /// Constructor for XML /// </summary> /// <param name="stateExtractor"></param> /// <param name="mower"></param> /// <param name="paramSet"></param> public QLearner(StateExtractor stateExtractor, Mower mower, ParamSet paramSet) : this(stateExtractor, mower, paramSet.FloatParam(ParamSet.ParamGroupQLearner, ParamSet.ParamGreediness), paramSet.FloatParam(ParamSet.ParamGroupQLearner, ParamSet.ParamDiscountValue), paramSet.FloatParam(ParamSet.ParamGroupQLearner, ParamSet.ParamLearnRate), paramSet.FloatParam(ParamSet.ParamGroupQLearner, ParamSet.ParamInitialQValue), paramSet.StringParam(ParamSet.ParamGroupQLearner, ParamSet.ParamQTableDeserialiaztionFile), paramSet.StringParam(ParamSet.ParamGroupQLearner, ParamSet.ParamQTableSerialiaztionFile), paramSet.BoolParam(ParamSet.ParamGroupMower, ParamSet.ParamEligTraces), paramSet.FloatParam(ParamSet.ParamGroupMower, ParamSet.ParamGamma), paramSet.StringParam(ParamSet.ParamGroupMower, ParamSet.ParamEligibilityTableDeserialiaztionFile), paramSet.StringParam(ParamSet.ParamGroupMower, ParamSet.ParamEligibilityTableSerialiaztionFile), paramSet.BoolParam(ParamSet.ParamGroupMower, ParamSet.ParamModelPlanning), paramSet.BoolParam(ParamSet.ParamGroupMower, ParamSet.ParamModelPlanningRefined), paramSet.StringParam(ParamSet.ParamGroupMower, ParamSet.ParamModelTableDeserialiaztionFile), paramSet.StringParam(ParamSet.ParamGroupMower, ParamSet.ParamModelTableSerialiaztionFile), paramSet.IntParam(ParamSet.ParamGroupMower, ParamSet.ParamN), paramSet.BoolParam(ParamSet.ParamGroupSetupManager, ParamSet.ParamShow) ) { }
/// <summary> /// Starts the project, if the parameters command it to. /// </summary> void Start() { // Handle the auto run param. bool autoRun = projectParamSet.BoolParam(ParamSet.ParamGroupSetupManager, ParamSet.ParamAutoRun); if (autoRun) { GameObject.FindObjectOfType <RunManager>().StartStopButtonFunctionality = RunManager.StartStopFunctionality.StopFuntionality; GameObject stepGenGameObject = GameObject.FindGameObjectWithTag("StepGenerator"); StepGenerator stepGen = stepGenGameObject.GetComponent <StepGenerator>(); stepGen.StartSteps(); } else { GameObject.FindObjectOfType <RunManager>().StartStopButtonFunctionality = RunManager.StartStopFunctionality.StartFunctionality; } }