private RunReport RunWithGraph(Graph graph, ITspSolver solver) { RunReport report; _runner.Run(graph, solver, out report); Console.WriteLine(report); return(report); }
public ComparativeRunReport SingleComparativeRun(ITspSolver baseSolver, ITspSolver testedSolver, int nodesInGraph = 5, int maxX = 10, int maxY = 10, SaveType saveType = SaveType.OnFailure, Func <ComparativeRunReport, object> selectiveSave = null, bool includeImages = false) { var graph = _graphGenerator.Generate(nodesInGraph, maxX, maxY); var comparativeReport = CompareWithGraph(graph, baseSolver, testedSolver, saveType, selectiveSave, includeImages); return(comparativeReport); }
public ComparativeRunReport CompareWithGraph(Graph graph, ITspSolver baseSolver, ITspSolver testedSolver, SaveType saveType = SaveType.OnFailure, Func <ComparativeRunReport, object> selectiveSave = null, bool includeImages = false) { RunReport baseReport = null; RunReport testedReport = null; Exception exception = null; try { baseReport = null; testedReport = null; exception = null; Run(graph, baseSolver, out baseReport); Run(graph, testedSolver, out testedReport); } catch (Exception e) { exception = e; } var comparativeReport = ComparativeRunReport.Create(baseReport, testedReport, exception); switch (saveType) { case SaveType.None: break; case SaveType.OnFailure: if (comparativeReport.Outcome != ComparativeRunReport.OutcomeText.Success) { Save(comparativeReport, selectiveSave, includeImages); } break; case SaveType.All: Save(comparativeReport, selectiveSave, includeImages); break; default: throw new ArgumentOutOfRangeException(nameof(saveType), saveType, null); } return(comparativeReport); }
public void Run(Graph graph, ITspSolver solver, out RunReport report) { report = new RunReport { SolverName = solver.GetType().Name, Graph = graph }; var timer = new Stopwatch(); timer.Start(); var runReport = report; solver.TrySolve(graph, attempt => RegisterAttempt(runReport, attempt.ToArray()), runReport.RunDetails); timer.Stop(); report.Duration = timer.Elapsed; }
public IEnumerable <ComparativeRunReport> RunBattery(BruteForce baseSolver, ITspSolver testedSolver, int numberOfRuns = 10, int nodesInGraph = 5, int maxX = 10, int maxY = 10, SaveType saveType = SaveType.OnFailure, bool stopOnError = false, Func <ComparativeRunReport, object> selectiveSave = null, bool includeImages = false) { var runs = new List <ComparativeRunReport>(numberOfRuns); for (int i = 0; i < numberOfRuns; i++) { var run = SingleComparativeRun(baseSolver, testedSolver, nodesInGraph, maxX, maxY, saveType, selectiveSave, includeImages); runs.Add(run); if (stopOnError && run.Outcome != ComparativeRunReport.OutcomeText.Success) { break; } } return(runs); }
public GeneticAlgorithm(ITspSolver tspSolver, ITspCsvLogger csvLogger) { _tspSolver = tspSolver; _csvLogger = csvLogger; }