/// <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(); }
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); } }