private static void RunHomework4() { var path = string.Format(Path, 40); var instanceProvider = new TextReaderInstanceProvider(() => new StreamReader(path)); var exactSolver = new DynamicByPriceSolver(); var heuristicSolver = new HeuristicSolver(); Console.WriteLine("Solving by heuristic"); Console.WriteLine("==================================================="); IRunner runner = new CompareRunner(instanceProvider, exactSolver, heuristicSolver); runner.Run(); Console.WriteLine(); Console.WriteLine("Solving by simulated annealing"); Console.WriteLine("==================================================="); Console.WriteLine(); const int baseInitTemperature = 100; const int baseFrozenTemperature = 1; const double baseCoolingCoef = 0.9; const int baseEquilibriumCoef = 2; { Console.WriteLine("By temperature"); Console.WriteLine("---------------------------------------------------"); var temperatures = new[] { 50, 100, 200, 500 }; foreach (var temperature in temperatures) { RunSimulatedAnnealingForConfiguration(instanceProvider, temperature, baseFrozenTemperature, baseCoolingCoef, baseEquilibriumCoef); } } { Console.WriteLine("By cooling coeficient"); Console.WriteLine("---------------------------------------------------"); var coolingCoefs = new[] { 0.8, 0.85, 0.9, 0.95 }; foreach (var coolingCoef in coolingCoefs) { RunSimulatedAnnealingForConfiguration(instanceProvider, baseInitTemperature, baseFrozenTemperature, coolingCoef, baseEquilibriumCoef); } } { Console.WriteLine("By equilibrium coeficient"); Console.WriteLine("---------------------------------------------------"); var equilibriumCoefs = new[] { 1, 2, 3, 5 }; foreach (var equilibriumCoef in equilibriumCoefs) { RunSimulatedAnnealingForConfiguration(instanceProvider, baseInitTemperature, baseFrozenTemperature, baseCoolingCoef, equilibriumCoef); } } Console.ReadLine(); }
private static void RunHomework1(int size) { Console.WriteLine($"Size {size}:"); var path = string.Format(Path, size); var instanceProvider = new TextReaderInstanceProvider(new StreamReader(path)); var brutteForceSolver = new BrutteForceSolver(); var heuristicSolver = new HeuristicSolver(); var runner = new CompareRunner(instanceProvider, brutteForceSolver, heuristicSolver); runner.Run(); }
private void TestSolverOnlyPrice(ISolver solver) { var instanceProvider = new TextReaderInstanceProvider(new StreamReader(string.Format(Path, 10))); var brutteForceSolver = new BrutteForceSolver(); foreach (var instance in instanceProvider.GetInstances()) { var res1 = brutteForceSolver.Solve(instance); var res2 = solver.Solve(instance); Assert.AreEqual(res1.Price, res2.Price, $"Prices are not equal for instance ${instance.Id}."); } }
private static void RunHomework2Compare(int size) { Console.WriteLine($"Size {size}:"); var path = string.Format(Path, size); var instanceProvider = new TextReaderInstanceProvider(new StreamReader(path)); ////var solver1 = new DynamicByPriceSolver(); var solver1 = new DynamicByWeightSolver(); ////var solver2 = new FptasSolver(0.1); ////var solver2 = new FptasSolver(0.2); var solver2 = new FptasSolver(0.5); var runner = new CompareRunner(instanceProvider, solver1, solver2); runner.Run(); }
private static void RunHomework2(int size) { Console.WriteLine(); Console.WriteLine($"Size {size}:"); var path = string.Format(Path, size); var instanceProvider = new TextReaderInstanceProvider(new StreamReader(path)); ////var solver = new BrutteForceRecursiveSolver(); ////var solver = new BranchAndBoundSolver(); ////var solver = new DynamicByWeightSolver(); var solver = new DynamicByPriceSolver(); var runner = new SimpleRunner(instanceProvider, solver); runner.Run(); }