コード例 #1
0
        public void Calculate_przycial_max_element_macierzy()
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
                new InputData(3, InputType.Odbiorca, 50, null, true)
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
                new InputData(2, InputType.Odbiorca, 65, null, true)
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;


            datagrid[0][3].IsVirtual = true;
            datagrid[1][3].IsVirtual = true;
            datagrid[2][3].IsVirtual = true;

            datagrid[2][0].IsVirtual = true;
            datagrid[2][1].IsVirtual = true;
            datagrid[2][2].IsVirtual = true;


            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);
            iteracja.CalculatePrzydzial(dostawcy, odbiorcy);

            Assert.AreEqual(10, iteracja.DataGrid[0][0].Przydzial);
            Assert.AreEqual(null, iteracja.DataGrid[0][1].Przydzial);
            Assert.AreEqual(10, iteracja.DataGrid[0][2].Przydzial);

            Assert.AreEqual(null, iteracja.DataGrid[1][0].Przydzial);
            Assert.AreEqual(28, iteracja.DataGrid[1][1].Przydzial);
            Assert.AreEqual(2, iteracja.DataGrid[1][2].Przydzial);

            Assert.AreEqual(null, iteracja.DataGrid[0][3].Przydzial);
            Assert.AreEqual(null, iteracja.DataGrid[1][3].Przydzial);


            Assert.AreEqual(null, iteracja.DataGrid[2][0].Przydzial);
            Assert.AreEqual(null, iteracja.DataGrid[2][1].Przydzial);
            Assert.AreEqual(15, iteracja.DataGrid[2][2].Przydzial);
            Assert.AreEqual(50, iteracja.DataGrid[2][3].Przydzial);
        }
コード例 #2
0
        public void Calculate_Next_interation_grid()
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
                new InputData(3, InputType.Odbiorca, 50, null, true)
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
                new InputData(2, InputType.Odbiorca, 65, null, true)
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;

            datagrid[0][3].IsVirtual = true;
            datagrid[1][3].IsVirtual = true;
            datagrid[2][3].IsVirtual = true;

            datagrid[2][0].IsVirtual = true;
            datagrid[2][1].IsVirtual = true;
            datagrid[2][2].IsVirtual = true;

            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);
            iteracja.CalculatePrzydzial(dostawcy, odbiorcy);
            iteracja.CalculateWspolczynnikiAlfaAndBeta();
            iteracja.CalculateDeltyNiebazowe();
            var newGrid = iteracja.CalculateNextIteration();

            Assert.AreEqual(10, newGrid[0][0].Przydzial);
            Assert.AreEqual(null, newGrid[0][1].Przydzial);
            Assert.AreEqual(10, newGrid[0][2].Przydzial);
            Assert.AreEqual(null, newGrid[0][3].Przydzial);

            Assert.AreEqual(null, newGrid[1][0].Przydzial);
            Assert.AreEqual(28, newGrid[1][1].Przydzial);
            Assert.AreEqual(null, newGrid[1][2].Przydzial);
            Assert.AreEqual(2, newGrid[1][3].Przydzial);

            Assert.AreEqual(null, newGrid[2][0].Przydzial);
            Assert.AreEqual(null, newGrid[2][1].Przydzial);
            Assert.AreEqual(17, newGrid[2][2].Przydzial);
            Assert.AreEqual(48, newGrid[2][3].Przydzial);
        }
コード例 #3
0
        public void Calculate_cykl()
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
                new InputData(3, InputType.Odbiorca, 50, null, true)
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
                new InputData(2, InputType.Odbiorca, 65, null, true)
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;

            datagrid[0][3].IsVirtual = true;
            datagrid[1][3].IsVirtual = true;
            datagrid[2][3].IsVirtual = true;

            datagrid[2][0].IsVirtual = true;
            datagrid[2][1].IsVirtual = true;
            datagrid[2][2].IsVirtual = true;

            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);
            iteracja.CalculatePrzydzial(dostawcy, odbiorcy);
            iteracja.CalculateWspolczynnikiAlfaAndBeta();
            iteracja.CalculateDeltyNiebazowe();

            var cycleDetector = new CycleDetector(iteracja.DataGrid, CycleBaseType.Maximizing).Detect();
            var points = cycleDetector.WyznaczonyCykl.ToPointsList();
            var expectedPoints = new string[] { "13", "12", "22", "23" }.ToList();

            Assert.IsTrue(expectedPoints.Contains(points[0].Id));
            Assert.IsTrue(expectedPoints.Contains(points[1].Id));
            Assert.IsTrue(expectedPoints.Contains(points[2].Id));
            Assert.IsTrue(expectedPoints.Contains(points[3].Id));

            Assert.AreEqual(2, cycleDetector.FindPrzydzialDoOptymalizacji());
        }
コード例 #4
0
        public void Calculate_wspolczynniki_alfa_beta()
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
                new InputData(3, InputType.Odbiorca, 50, null, true)
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
                new InputData(2, InputType.Odbiorca, 65, null, true)
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;

            datagrid[0][3].IsVirtual = true;
            datagrid[1][3].IsVirtual = true;
            datagrid[2][3].IsVirtual = true;

            datagrid[2][0].IsVirtual = true;
            datagrid[2][1].IsVirtual = true;
            datagrid[2][2].IsVirtual = true;


            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);
            iteracja.CalculatePrzydzial(dostawcy, odbiorcy);
            iteracja.CalculateWspolczynnikiAlfaAndBeta();

            Assert.AreEqual(0, iteracja.Alpha[0].Value);
            Assert.AreEqual(-4, iteracja.Alpha[1].Value);
            Assert.AreEqual(-3, iteracja.Alpha[2].Value);

            Assert.AreEqual(12, iteracja.Beta[0].Value);
            Assert.AreEqual(8, iteracja.Beta[1].Value);
            Assert.AreEqual(3, iteracja.Beta[2].Value);
            Assert.AreEqual(3, iteracja.Beta[3].Value);
        }
コード例 #5
0
        public void Calculate_iteration_value() // zysk
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
                new InputData(3, InputType.Odbiorca, 50, null, true)
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
                new InputData(2, InputType.Odbiorca, 65, null, true)
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;

            datagrid[0][3].IsVirtual = true;
            datagrid[1][3].IsVirtual = true;
            datagrid[2][3].IsVirtual = true;

            datagrid[2][0].IsVirtual = true;
            datagrid[2][1].IsVirtual = true;
            datagrid[2][2].IsVirtual = true;


            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);
            iteracja.CalculatePrzydzial(dostawcy, odbiorcy);
            iteracja.CalculateIterationResult();

            Assert.AreEqual(260, iteracja.IterationResultValue);
        }
コード例 #6
0
        public void Calculate_zysk_test()
        {
            var odbiorcy = new List <InputData>()
            {
                new InputData(0, InputType.Odbiorca, 10, 30),
                new InputData(1, InputType.Odbiorca, 28, 25),
                new InputData(2, InputType.Odbiorca, 27, 30),
            };

            var dostawcy = new List <InputData>()
            {
                new InputData(0, InputType.Dostawca, 20, 10),
                new InputData(1, InputType.Dostawca, 30, 12),
            };

            var datagrid = Utility.CreateEmptyCellGrid(dostawcy.Count, odbiorcy.Count);

            datagrid[0][0].KosztyJednostkowe = 8;
            datagrid[0][1].KosztyJednostkowe = 14;
            datagrid[0][2].KosztyJednostkowe = 17;

            datagrid[1][0].KosztyJednostkowe = 12;
            datagrid[1][1].KosztyJednostkowe = 9;
            datagrid[1][2].KosztyJednostkowe = 19;

            var iteracja = new IterationProfit(datagrid, JobType.Profit, 1);

            iteracja.CalculateZysk(dostawcy, odbiorcy);

            Assert.AreEqual(12, iteracja.DataGrid[0][0].Zysk);
            Assert.AreEqual(1, iteracja.DataGrid[0][1].Zysk);
            Assert.AreEqual(3, iteracja.DataGrid[0][2].Zysk);

            Assert.AreEqual(6, iteracja.DataGrid[1][0].Zysk);
            Assert.AreEqual(4, iteracja.DataGrid[1][1].Zysk);
            Assert.AreEqual(-1, iteracja.DataGrid[1][2].Zysk);
        }