private string GetCompletedRunSql(TaskCompleted completed) { var run = completed.Run; var config = completed.Config; var sb = new StringBuilder(); sb.Append("INSERT INTO [dbo].[GA_Results]([Session],[Start],[End],[ComputerName],[SolutionStrategy],[ParentSelectionStrategy],[MutationStrategy],[CrossoverStrategy],[ImmigrationStrategy],[RetirementStrategy],[ScoringStrategy],[PopulationSize],[MaxGenerations],[CrossoverRate],[MutationRate],[ElitismRate],[ImmigrationRate],[DuplicationStrategy],[MaxRetirement],[ChildrenPerParents],[RandomSeed],[RandomPoolGenerationSeed],[BestScore],[BestScoreGeneration],[StringRepresentation]) "); sb.Append(" VALUES ( "); sb.Append("'" + config.Session + "',"); sb.Append("'" + run.Start.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture) + "',"); sb.Append("'" + run.End.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture) + "',"); sb.Append("'" + GetComputerName() + "',"); sb.Append("'" + config.Solution.GetType().AssemblyQualifiedName + "',"); sb.Append("'" + config.ParentSelectionStrategy.ToString() + "',"); sb.Append("'" + config.MutationStrategy.ToString() + "',"); sb.Append("'" + config.CrossoverStrategy.ToString() + "',"); sb.Append("'" + config.ImmigrationStrategy.ToString() + "',"); sb.Append("'" + config.RetirementStrategy.ToString() + "',"); sb.Append("'" + config.ScoringStrategy.ToString() + "',"); sb.Append(config.PopulationSize + ","); sb.Append(config.MaxGenerations + ","); sb.Append(config.CrossoverRate + ","); sb.Append(config.MutationRate + ","); sb.Append(config.ElitismRate + ","); sb.Append(config.ImmigrationRate + ","); sb.Append("'" + config.DuplicationStrategy.ToString() + "',"); sb.Append(config.MaxRetirement + ","); sb.Append(config.ChildrenPerParents + ","); sb.Append(config.RandomSeed + ","); sb.Append(config.RandomPoolGenerationSeed + ","); sb.Append(run.BestChromosome.FitnessScore + ","); sb.Append(run.BestChromosome.GenerationNumber + ","); sb.Append("'" + run.BestChromosome.ToString() + "'"); sb.Append(")"); return(sb.ToString()); }
public void InsertCompletedRun(TaskCompleted completed) { lock (_completedLock) { _completedRuns.Add(completed); } NumberOfRunsCompleted++; }