Exemplo n.º 1
0
        private string CreateInfoString(bool forProcessing = false)
        {
            StackTrace stackTrace = new StackTrace();
            var        sb         = new StringBuilder();

            if (!forProcessing)
            {
                sb.AppendLine($"{stackTrace.GetFrame(2).GetMethod().Name}");
                var varSelHeuName = _variableSelectionHeuristics.GetType().Name;
                sb.AppendLine($"{varSelHeuName.Remove(varSelHeuName.Length - 2)}");
                var valSelHeuName = ValueSelectionHeuristics.GetType().Name;
                sb.AppendLine($"{valSelHeuName.Remove(valSelHeuName.Length - 2)}");
                sb.AppendLine("-------------------------------------------------");
                sb.AppendLine($"visited nodes to first solution: {(_hasSolution ? _visitedNodesToFirst.ToString() : "")}");
                sb.AppendLine($"backtracks to first solution: {_backtracksNumberToFirstSolution}");
                sb.AppendLine($"all visited nodes: {_visitedNodes}");
                sb.AppendLine($"all backtracks: {_backtracksNumber}");
                sb.AppendLine($"found solution: {_hasSolution}");
                sb.AppendLine($"solutions number: {_foundSolutionsNumber}");
                sb.AppendLine($"time to first solution: {(_hasSolution ? _timeToFirst.Elapsed.ToString() : " ")}");
                sb.AppendLine($"time to complete: {_timeToComplete.Elapsed}\n");
            }
            else
            {
                sb.Append($"{ (_hasSolution ? _visitedNodesToFirst.ToString() : "")}");
                sb.Append($", {_backtracksNumberToFirstSolution}");
                sb.Append($", {_visitedNodes}");
                sb.Append($", {_backtracksNumber}");
                sb.Append($", {_hasSolution}");
                sb.Append($", {_foundSolutionsNumber}");
                sb.Append($", {(_hasSolution ? _timeToFirst.ElapsedMilliseconds.ToString() : " ")}");
                sb.Append($", {_timeToComplete.ElapsedMilliseconds}");
            }
            return(sb.ToString());
        }
Exemplo n.º 2
0
        public override void BacktrackingAlgorithm(bool printSolutions = false)
        {
            base.BacktrackingAlgorithm(printSolutions);

            var varHeu = _variableSelectionHeuristics.GetType().Name;
            var valHeu = ValueSelectionHeuristics.GetType().Name;

            var fileName = $"{_sudoku.Id.ToString()}_solutions_bt_{varHeu}_{valHeu}";

            if (FileSaveDirectory != null)
            {
                fileName = $@"{FileSaveDirectory}\{fileName}";
            }
            base.SaveSolutionsInfoToFile(fileName);
            foreach (var sol in _foundSolutions)
            {
                SaveSolutionToFile(fileName, sol);
            }
        }