Exemplo n.º 1
0
        public void ReductionTestBig()
        {
            int[,] actualWeights = GenerateMatrixWithValue(sizeN: 6, value: 0);

            // some random values that change nothing
            actualWeights[0, 2] = 3;
            actualWeights[1, 3] = 6;
            actualWeights[1, 5] = 1;
            actualWeights[3, 1] = 13;
            actualWeights[3, 5] = 3;
            actualWeights[5, 0] = 0;
            actualWeights[5, 1] = 8;

            // minimum value in this row - 4
            actualWeights[4, 0] = Infinity;
            actualWeights[4, 1] = 22;
            actualWeights[4, 2] = Infinity;
            actualWeights[4, 3] = 23;
            actualWeights[4, 4] = Infinity;
            actualWeights[4, 5] = 4;

            const int expectedReductionResult = 4;

            int[,] expectedWeights = (int[, ])actualWeights.Clone();
            for (int i = 0; i < 6; i++)
            {
                expectedWeights[4, i] -= expectedReductionResult;
            }


            int actualReductionResult = BranchAndBound.Reduction(actualWeights);

            Assert.Equal(expectedReductionResult, actualReductionResult);
            Assert.True(actualWeights.AreDeepEqual(expectedWeights));
        }
Exemplo n.º 2
0
        public void ReductionTestSmall()
        {
            int[,] actualWeights = GenerateSampleWeights();

            int[,] expectedWeights = new int[3, 3];
            expectedWeights[0, 0]  = Infinity;
            expectedWeights[0, 1]  = 0;
            expectedWeights[0, 2]  = 0;

            expectedWeights[1, 0] = 0;
            expectedWeights[1, 1] = Infinity;
            expectedWeights[1, 2] = 0;

            expectedWeights[2, 0] = 1;
            expectedWeights[2, 1] = 0;
            expectedWeights[2, 2] = Infinity;

            const int expectedReductionResult = 11;
            int       actualReductionResult   = BranchAndBound.Reduction(actualWeights);

            Assert.Equal(expectedReductionResult, actualReductionResult);

            // test does not care about the main diagonal
            SetMainDiagonal(actualWeights, Infinity);
            Assert.True(actualWeights.AreDeepEqual(expectedWeights));
        }