Ejemplo n.º 1
0
        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("");
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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();
                        }
                    }
                }
            }
        }