Beispiel #1
0
        private static void SaveSingleScript(ExperimentParameters experimentParameters)
        {
            var arguments        = experimentParameters.ToConsoleArgumentsString();
            var filename         = experimentParameters.GetFileName(extension: ".sh");
            var singleScriptPath = Path.GetFullPath(ScriptsDirPath + filename);

            ScriptsFullPaths.Add(singleScriptPath);

            File.WriteAllText(singleScriptPath, ExperimentScriptContent(arguments));
        }
Beispiel #2
0
        private static void RunExperiment(ExperimentParameters experimentParameters)//, DatabaseContext databaseX)
        {
            var database = new DatabaseContext(DatabaseFullPath);
            var version  = new Version(DateTime.Now);
            var stoper   = new Stopwatch();

            //if (database.Exists(experimentParameters))
            //{
            //    Console.WriteLine("BYLEM WIDZIALEM");
            //    //database.Dispose();
            //    return;
            //}

            database.Insert(version);
            database.Insert(experimentParameters);
            database.Insert(experimentParameters.EvolutionParameters);

            IDictionary <int, EvolutionStep> evolutionSteps = null;

            try
            {
                var enginesFactory = new EnginesFactory();

                var engine = enginesFactory.Create(experimentParameters);

                var distanceCalculator      = new CanberraDistanceCalculator();
                var positivePointsGenerator = new PositivePointsGenerator();
                stoper.Restart();
                var positiveTrainingPoints = positivePointsGenerator.GeneratePoints(experimentParameters.NumberOfPositivePoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);
                stoper.Stop();
                engine.Statistics.PositiveTrainingPointsGenerationTime = stoper.Elapsed;

                var negativePointsGenerator = new NegativePointsGenerator(positiveTrainingPoints, distanceCalculator, new NearestNeighbourDistanceCalculator(distanceCalculator));
                //var negativeTrainingPoints = negativePointsGenerator.GeneratePoints(experimentParameters.NumberOfNegativePoints, engine.Benchmark.Domains);
                stoper.Restart();
                var negativeTrainingPoints = negativePointsGenerator.GeneratePoints(experimentParameters.NumberOfNegativePoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);
                stoper.Stop();
                engine.Statistics.NegativeTrainingPointsGenerationTime = stoper.Elapsed;
                //Console.WriteLine("Evolution starts!");
                var trainingPoints = positiveTrainingPoints.Concat(negativeTrainingPoints).ToArray();

                stoper.Restart();
                var mathModel = engine.SynthesizeModel(trainingPoints);
                stoper.Stop();
                engine.Statistics.TotalSynthesisTime = stoper.Elapsed;

                database.Insert(mathModel);

                var testPointsGenerator = new TestPointsGenerator();
                stoper.Restart();
                var testPoints = testPointsGenerator.GeneratePoints(experimentParameters.NumberOfTestPoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);
                stoper.Stop();
                engine.Statistics.TestPointsGenerationTime = stoper.Elapsed;

                var statistics = engine.EvaluateModel(testPoints);

                database.Insert(statistics);

                evolutionSteps = engine.CoreEvolutionSteps;
                //Logger.Instance.Log(experimentParameters);

                //Logger.Instance.Log(mathModel);
                //Logger.Instance.Log(statistics);

                //database.Insert(Logger.Instance.GetLogAsString());
            }
            catch (Exception exception)
            {
                database.Insert(exception);
            }

            database.Save();

            if (evolutionSteps != null && experimentParameters.TrackEvolutionSteps)
            {
                Logger.Instance.Log(evolutionSteps);
                var logsFullPath = Path.GetFullPath(LogsDirPath + experimentParameters.GetFileName("Log", ".cmplog"));
                File.WriteAllText(logsFullPath, StringCompressor.CompressString(Logger.Instance.GetLogAsString()));
            }
            //GlobalStoper.Stop();
            //Console.WriteLine(GlobalStoper.ElapsedMilliseconds);
            //Console.ReadKey();
            database.Dispose();
        }