コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public RandomInstanceProvider(RandomParameters randomParameters)
 {
     this.randomParameters = randomParameters;
 }
コード例 #4
0
        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();
        }