Example #1
0
        public static IPotteryOptimizer Create(this IPotteryOptimizer ignore)
        {
            // TODO: Set which optimizer you want to use in the tests here

            return(new Bss.Optimization.Pottery.Naive.Optimizer());
            // return new Bss.Optimization.Pottery.LP.Optimizer();
            // return new Bss.Optimization.Pottery.Glop.Optimizer();
        }
        public void ReturnTheOptimumNumberOfLargeVasesIfNonStandardConstraintsAreSupplied()
        {
            var claySupply  = 37;
            var glazeSupply = 31;

            IPotteryOptimizer engine = (null as IPotteryOptimizer).Create();
            var result = engine.GetTargets(claySupply, glazeSupply);

            Assert.AreEqual(3, result.Large);
        }
        public void ReturnTheOptimumNumberOfLargeVases()
        {
            var claySupply  = 24;
            var glazeSupply = 16;

            IPotteryOptimizer engine = (null as IPotteryOptimizer).Create();
            var result = engine.GetTargets(claySupply, glazeSupply);

            Assert.AreEqual(4, result.Large);
        }
        public void ReturnQuicklyEvenAtScale()
        {
            // This test is expected to fail for any optimizer that
            // cannot handle a large solution set, such as
            // the Naive optimizer in this solution.

            var claySupply  = Int32.MaxValue;       // Huge value
            var glazeSupply = Int32.MaxValue - 394; // Huge value picked at random

            IPotteryOptimizer engine = (null as IPotteryOptimizer).Create();
            var result = engine.GetTargets(claySupply, glazeSupply);
        }
        public void ReturnAllFeasibleTargets()
        {
            var claySupply  = 24;
            var glazeSupply = 16;

            IPotteryOptimizer engine = (null as IPotteryOptimizer).Create();
            var results = engine.GetFeasibleTargets(claySupply, glazeSupply);

            TestContext.WriteLine($"Number of solutions: {results.Count()}");
            TestContext.WriteLine("Small, Large");
            foreach (var targetSet in results)
            {
                TestContext.WriteLine($"{targetSet.Small},{targetSet.Large}");
            }

            Assert.AreEqual(71, results.Count());
        }