Exemple #1
0
        private RunReport RunWithGraph(Graph graph, ITspSolver solver)
        {
            RunReport report;

            _runner.Run(graph, solver, out report);
            Console.WriteLine(report);
            return(report);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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);
        }
Exemple #6
0
 public GeneticAlgorithm(ITspSolver tspSolver, ITspCsvLogger csvLogger)
 {
     _tspSolver = tspSolver;
     _csvLogger = csvLogger;
 }