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)); }
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(); }