private void Init(QAgent agent, QOption option) { if (Benchmark) { BenchmarkSave.CurrentTestID = _instance.BenchmarkID; BenchmarkSave.Runs = _instance.BenchmarkRuns; } else if (Mode == QAIMode.Testing && BenchmarkID != null && !BenchmarkID.Equals("")) { BenchmarkSave.ModelPath = _instance.BenchmarkID; } else { BenchmarkSave.CurrentTestID = agent.AI_ID().ID; BenchmarkSave.Runs = 1; } Debug.Log("Running " + BenchmarkSave.ModelPath + " in mode " + Mode); _stopwatch = Stopwatch.StartNew(); if (Tester != null) { Tester.Init(); } DontDestroyOnLoad(gameObject); switch (Mode) { case QAIMode.Imitating: { _imitation = new QImitation(); break; } default: { var qlCNN = new QLearningCNN(PrioritizedSweeping, option); _qlearning = qlCNN; _qlearning.Reset(agent); if (Remake) { _qlearning.RemakeModel(agent.GetState()); } else { _qlearning.LoadModel(); } if (VisualizeNetwork) { _visualizer = _qlearning.CreateVisualizer(); } qlCNN.CNN.ValuesComputed += (data, isTraining) => { if (NetworkValuesUpdated != null) { NetworkValuesUpdated(data, isTraining); } }; break; } } }
private void RemakeManager() { _qlearning.Iteration = 1; _qlearning.RemakeModel(Agent.GetState()); if (_visualizer != null) { Destroy(_visualizer.gameObject); _visualizer = _qlearning.CreateVisualizer(); } _stopwatch.Reset(); _stopwatch.Start(); Tester.Init(); }