예제 #1
0
        private void CalculateButton_Click(object sender, EventArgs e)
        {
            InitData();

            Balancer balancer = new Balancer(_suppliers, _consumers);

            if(!balancer.CheckBalance())
                balancer.Balance();

            //var firstlyMethod = new NorthwestCornerMethod(_suppliers.Cast<Supplier>().ToArray(), _consumers.Cast<Consumer>().ToArray());
            var firstlyMethod = new VogelsMethod(_suppliers.Cast<Supplier>().ToArray(), _consumers.Cast<Consumer>().ToArray());

            Table.Table solution = firstlyMethod.GetSolution();

            var optimizeMethod = new PotentialsMethod(solution);

            Logger logger = new Logger(solution);

            while (!optimizeMethod.IsOptimal())
            {
                logger.Log();
                optimizeMethod.Otimize();
            }

            logger.Log();

            logger.ShowLog();

            MessageBox.Show("Total: " + solution.GetTotalTransportationsPrice());
        }
예제 #2
0
        public void TotalPriceTestCaseOne()
        {
            Supplier[] suppliers = new Supplier[3];
            Consumer[] consumers = new Consumer[3];

            suppliers[0] = new Supplier(new int[3]{2, 5, 2}, 180);
            suppliers[1] = new Supplier(new int[3] { 7, 7, 13 }, 300);
            suppliers[2] = new Supplier(new int[3] { 3, 6, 8 }, 120);

            consumers[0] = new Consumer(110);
            consumers[1] = new Consumer(350);
            consumers[2] = new Consumer(140);

            VogelsMethod method = new VogelsMethod(suppliers, consumers);

            Assert.AreEqual(2970, method.GetSolution().GetTotalTransportationsPrice());
        }
예제 #3
0
        public void TotalPriceTestCaseTwo()
        {
            Supplier[] suppliers = new Supplier[3];
            Consumer[] consumers = new Consumer[4];

            suppliers[0] = new Supplier(new int[4] { 5, 2, 1, 8 }, 10);
            suppliers[1] = new Supplier(new int[4] { 2, 1, 2, 3 }, 10);
            suppliers[2] = new Supplier(new int[4] { 4, 8, 1, 4 }, 20);

            consumers[0] = new Consumer(14);
            consumers[1] = new Consumer(15);
            consumers[2] = new Consumer(5);
            consumers[3] = new Consumer(6);

            VogelsMethod method = new VogelsMethod(suppliers, consumers);

            Assert.AreEqual(100, method.GetSolution().GetTotalTransportationsPrice());
        }
예제 #4
0
        public void TotalPriceTestCaseThree()
        {
            Supplier[] suppliers = new Supplier[3];
            Consumer[] consumers = new Consumer[4];

            suppliers[0] = new Supplier(new int[4] { 2, 3, 2, 4 }, 30);
            suppliers[1] = new Supplier(new int[4] { 3, 2, 5, 1 }, 40);
            suppliers[2] = new Supplier(new int[4] { 4, 3, 2, 6 }, 20);

            consumers[0] = new Consumer(20);
            consumers[1] = new Consumer(30);
            consumers[2] = new Consumer(30);
            consumers[3] = new Consumer(10);

            VogelsMethod method = new VogelsMethod(suppliers, consumers);

            Assert.AreEqual(170, method.GetSolution().GetTotalTransportationsPrice());
        }
        public void IsOptimalTestCaseOne()
        {
            Supplier[] suppliers = new Supplier[3];
            Consumer[] consumers = new Consumer[4];

            suppliers[0] = new Supplier(new int[4] { 2, 3, 2, 4 }, 30);
            suppliers[1] = new Supplier(new int[4] { 3, 2, 5, 1 }, 40);
            suppliers[2] = new Supplier(new int[4] { 4, 3, 2, 6 }, 20);

            consumers[0] = new Consumer(20);
            consumers[1] = new Consumer(30);
            consumers[2] = new Consumer(30);
            consumers[3] = new Consumer(10);

            VogelsMethod vogelsMethod = new VogelsMethod(suppliers, consumers);

            Table solution = vogelsMethod.GetSolution();

            PotentialsMethod potentialsMethod = new PotentialsMethod(solution);

            Assert.True(potentialsMethod.IsOptimal());
        }