예제 #1
0
        /// <summary>
        /// Запись результатов решения в файл
        /// </summary>
        /// <param name="parLog"></param>
        /// <param name="parPath"></param>
        private void WriteLog(LaserGameSolver.SolveResult parLog, string parPath)
        {
            StreamWriter sw = new StreamWriter(parPath);
            string result = parLog.Complete ? "РЕШЕНИЕ НАЙДЕНО" : "РЕШЕНИЕ НЕ НАЙДЕНО";

            sw.WriteLine("Метод решения - " + parLog.Method);
            sw.WriteLine("Статус выполнения - " + result);
            sw.WriteLine("Время выполнения - " + parLog.ProcessTime.Elapsed);
            sw.WriteLine("Максимальная глубина поиска - " + parLog.MaxDepth);
            sw.WriteLine("Количество сгенерированных узлов - " + parLog.GeneratedNodesCount);
            sw.WriteLine("Длина пути решения - " + parLog.PathLenght);
            sw.WriteLine("Направленность - " + parLog.Directionality);
            sw.WriteLine("Разветвелнность - " + parLog.Branching);
            sw.WriteLine("");
            sw.WriteLine("ШАГИ: ");
            for (int i = 0; i < parLog.MovesToGoal.Count; i++)
            {
                sw.WriteLine(parLog.MovesToGoal[i].FromPos + " -> " + parLog.MovesToGoal[i].ToPos);
            }
            sw.Close();
        }
예제 #2
0
        private void buttonUniCost_Click(object sender, EventArgs e)
        {
            SetMirrors();
            SetHoles();
            SetGoals();

            LaserGameSolver solver = new LaserGameSolver(_Game);
            solver.MaxAlowableDepth = (int)numericUpDownMaxDepth.Value;

            solver.UniformCostSolve();

            WriteLog(solver.Info, "UniCostInfo.txt");

            //создаем форму сведений о выполнении
            FormLog logForm = new FormLog();
            logForm.Show();
            //и заносим туда данные
            logForm.FillLogForm("UniCostInfo.txt");

            dataGridView1.Rows.Clear();
            for (int i = 0; i < solver.Task.Mirrors.Count; i++)
            {
                dataGridView1.Rows.Add(solver.Task.Mirrors[i].Left, solver.Task.Mirrors[i].Top);
            }
        }