123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace MinElKuzminEkz
- {
- internal class Program
- {
- private static StreamWriter traceWriter;
- private static StreamWriter debugWriter;
- public static void Main(string[] args)
- {
- try
- {
- // Открываем файлы для записи trace и debug логов
- traceWriter = new StreamWriter("trace_log.txt");
- debugWriter = new StreamWriter("debug_log.txt");
- // Добавляем слушателя для Trace
- Trace.Listeners.Add(new TextWriterTraceListener(traceWriter));
- Trace.AutoFlush = true;
- // Добавляем слушателя для Debug
- Debug.Listeners.Add(new TextWriterTraceListener(debugWriter));
- Debug.AutoFlush = true;
- Trace.WriteLine("Файл успешно считан");
- // Чтение данных из файла
- string[] lines = File.ReadAllLines("C:\\Users\\7\\source\\repos\\methodMinimalElKuzmin\\methodMinimalElKuzmin\\test.txt");
- // Инициализация массивов на основе данных из файла
- int[] a = Array.ConvertAll(lines[0].Split(','), int.Parse);
- int[] b = Array.ConvertAll(lines[1].Split(','), int.Parse);
- double[,] costs = new double[3, 3];
- // Заполнение матриц costs и supply_plan
- int index = 2; // начинаем с третьей строки файла
- for (int i = 0; i < 3; i++)
- {
- string[] costValues = lines[index].Split(',');
- for (int j = 0; j < 3; j++)
- {
- costs[i, j] = double.Parse(costValues[j]);
- }
- index++;
- }
- Trace.WriteLine("Матрица инициализирована");
- if (Utility.CheckClosure(a, b))
- {
- Console.WriteLine("Транспортная задача является закрытой");
- }
- else
- {
- Console.WriteLine("Транспортная задача является открытой");
- }
- // Применение метода
- int[,] supply_plan = Utility.MinElementMethod(a, b, costs); //MinElementMethod
- // Вывод плана поставок
- for (int i = 0; i < supply_plan.GetLength(0); i++)
- {
- for (int j = 0; j < supply_plan.GetLength(1); j++)
- {
- Console.Write($"{supply_plan[i, j]} ");
- }
- Console.WriteLine();
- }
- // Проверка на вырожденность опорного плана
- if (Utility.CheckIfVyrozhdeno(supply_plan))
- {
- Console.WriteLine("Опорный план вырожденный.");
- }
- else
- {
- Console.WriteLine("Опорный план невырожденный.");
- }
- // Расчёт целевой функции
- Console.WriteLine($"Целевая функция: {Utility.CalculateCelevayaFunction(costs, supply_plan)}");
- Console.WriteLine("Опорный план оптимален.");
- Trace.WriteLine("Программа успешно завершила рассчет");
- }
- catch (Exception ex)
- {
- Trace.WriteLine($"Error: {ex.Message}");
- Console.WriteLine($"Error: {ex.Message}");
- }
- finally
- {
- // Закрываем файлы после использования
- traceWriter.Close();
- debugWriter.Close();
- Console.ReadKey();
- }
- }
- }
- //класс utility
- internal class Utility
- {
- }
-
- }
|