private void OpenMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Maze Files (*.maze)|*.maze"; if (dlg.ShowDialog() == DialogResult.OK) { _walls.Clear(); mazeSpace.Enabled = false; var loaded = MazeUtilities.LoadObject <MazeAgent>(dlg.FileName); _agentPrimary = MazeUtilities.ConvertLoadedAgent(loaded); _agentSecondary = MazeUtilities.ConvertLoadedAgent(loaded); _agentSecondary.Environment = MazeUtilities.CopyEnvironment(loaded.Environment); _agentSecondary.StartPosition = _agentPrimary.StartPosition; AgentSubscribeEvents(_agentPrimary); AgentSubscribeEvents(_agentSecondary); SetFormValuesFromMaze(); _needsRetrain = true; mazeSpace.Enabled = true; } }
private void LoadAgent(string path) { var loaded = MazeUtilities.LoadObject <MazeAgent>(path); loaded.Environment.QualitySaveFrequency = 100; PrimaryAgent = MazeUtilities.ConvertLoadedAgent(loaded); SecondaryAgent = MazeUtilities.ConvertLoadedAgent(loaded); SecondaryAgent.Environment = MazeUtilities.CopyEnvironment(loaded.Environment); SecondaryAgent.StartPosition = PrimaryAgent.StartPosition; if (PrimaryAgent.LearningStyle == QLearning.Core.LearningStyles.QLearning) { SecondaryAgent.LearningStyle = QLearning.Core.LearningStyles.SARSA; } else { SecondaryAgent.LearningStyle = QLearning.Core.LearningStyles.QLearning; } OnPropertyChanged(nameof(SelectedLearningStyle)); OnPropertyChanged(nameof(PrimaryAgent)); OnPropertyChanged(nameof(SecondaryAgent)); OnPropertyChanged(nameof(GoalPosition)); OnPropertyChanged(nameof(MazeVm)); }