public NeuralAgentTrainer(NeuralAgentTrainerConfiguration configuration) { NetworkName = $"Auto-R{configuration.ViewRadius}-{string.Join("_", configuration.LayersSizes)}"; InitialiseNetwork(NetworkName, configuration); TrainingPluginConfiguration = configuration.TrainingPluginConfiguration; TrainingSimulationConfiguration = configuration.TrainingSimulationConfiguration; TrainingProgressTrackerConfiguration = configuration.TrainingProgressTrackerConfiguration; TestingSimulationConfiguration = configuration.TrainingProgressSimulationConfiguration; SpaceTemplateFactory = Workspace.Instance.Spaces.GetByName(configuration.Space); TrainingOuputDirectory = Workspace.Instance.NeuralTrainingsDirectory.Ensure().CreateSubdirectory($"{NetworkName}-{DateTime.Now:yyyy_MM_dd-HH_mm}"); WriteLine("Training Plugin Configuration"); WriteLine("-----------------------------"); WriteLine(TrainingPluginConfiguration.ConvertToJson()); WriteLine(""); WriteLine("Training Simulation Configuration"); WriteLine("---------------------------------"); WriteLine(TrainingSimulationConfiguration.ConvertToJson()); WriteLine(""); WriteLine("Training Progress Tracker Configuration"); WriteLine("---------------------------------------"); WriteLine(TrainingProgressTrackerConfiguration.ConvertToJson()); WriteLine(""); WriteLine("Training Simulation Configuration"); WriteLine("---------------------------------"); WriteLine(TestingSimulationConfiguration.ConvertToJson()); WriteLine(""); }
public static void InitialiseNetwork(string networkName, NeuralAgentTrainerConfiguration configuration) { var networkFile = Workspace.Instance.GetNetworkFile(networkName); var createNetwork = true; if (networkFile.Exists) { var overwrite = MessageBox.Show($"Do you want to reset existing network '{networkName}'?", "Training", MessageBoxButtons.YesNo, MessageBoxIcon.Question); createNetwork = overwrite == DialogResult.Yes; } if (createNetwork) { var networkDefinition = new AgentNetworkDefinition(networkName, configuration.ViewRadius, configuration.LayersSizes); var network = new AgentNetwork(networkDefinition, new He(configuration.NetworkSeed)); Workspace.Instance.SaveNetwork(networkName, network, overwrite: true); } }
private void TrainOnSpace(ListViewItem item) { if (item.Tag is ISpaceTemplateFactory spaceFactory) { using (var gridForm = new PropertyGridForm("Training")) { var trainerSettings = new NeuralAgentTrainerConfiguration(); trainerSettings.Space = spaceFactory.Name; gridForm.PropertyGrid.SelectedObject = trainerSettings; if (gridForm.ShowDialog() == DialogResult.OK) { using (var trainer = new NeuralAgentTrainer(trainerSettings)) { trainer.Train(); trainer.Simulate(); trainer.SaveAsTemplate(); } } } } }