private static void RunForParameters(RandomParameters randomParameters, string message, IList <ISolver> solvers) { Console.WriteLine(new string('=', 64)); Console.WriteLine(message); var instanceProvider = new RandomInstanceProvider(randomParameters); var instances = instanceProvider.GetInstances(); Console.WriteLine(new string('=', 64)); RunForAllRunners(instances, solvers); Console.WriteLine(); Console.WriteLine(); }
private Parameters SetParameters() { var random = new RandomParameters(); var parameters = new Parameters { Lambda = random.GenerateLambdaRandomNumber(), X = random.GenerateXRandomNumber(), T = random.GenerateTRandomNumber(), A = random.GenerateARandomNumber(), C0 = random.GenerateTRandomNumber(), B = random.GenerateBRandomNumber() }; return(parameters); }
public RandomInstanceProvider(RandomParameters randomParameters) { this.randomParameters = randomParameters; }
private static void RunHomework3() { var solvers = new ISolver[] { new BrutteForceRecursiveSolver(), new BranchAndBoundSolver(), new HeuristicSolver(), new DynamicByPriceSolver(), new DynamicByWeightSolver() }; var defaultParameters = new RandomParameters { NumberOfInstances = 50, NumberOfItems = 25, MaxPrice = 100, MaxWeight = 100, SumWeightToCapacityRatio = 0.5m, ExponentK = 1, SizePriority = SizePriority.Stability }; //// run for different max weights var maxWeights = new[] { 50, 100, 150, 200 }; foreach (var maxWeight in maxWeights) { var parameters = defaultParameters.Clone(); parameters.MaxWeight = maxWeight; RunForParameters(parameters, $"Max Weight: {maxWeight}", solvers); } // run for different max prices var maxPrices = new[] { 50, 100, 150, 200 }; foreach (var maxPrice in maxPrices) { var parameters = defaultParameters.Clone(); parameters.MaxPrice = maxPrice; RunForParameters(parameters, $"Max Price: {maxPrice}", solvers); } // run for different ratios var ratios = new[] { 0.2m, 0.5m, 0.8m, 1m }; foreach (var ratio in ratios) { var parameters = defaultParameters.Clone(); parameters.SumWeightToCapacityRatio = ratio; RunForParameters(parameters, $"Sum Weight To Capacity Ratio: {ratio}", solvers); } // run for different k exponents var exponents = new[] { 0.2m, 0.5m, 0.8m, 1m, 2m, 5m }; foreach (var exponent in exponents) { var parameters = defaultParameters.Clone(); parameters.ExponentK = exponent; parameters.SizePriority = SizePriority.MoreSmallThings; RunForParameters(parameters, $"Exponent K: {exponent} (More Small Things)", solvers); parameters.SizePriority = SizePriority.MoreBigThings; RunForParameters(parameters, $"Exponent K: {exponent} (More Big Things)", solvers); } Console.ReadLine(); }