public void ValidateBuildFromUpperRow() { MatrixBuilder builder = new MatrixBuilder(); int dimension = 4; double[] input = { 1, 2, 3, // only top right triangle w/o diagonal, read by rows 4, 5, 6, }; double[,] expectedOutput = { { 0, 1, 2, 3 }, { 1, 0, 4, 5 }, { 2, 4, 0, 6 }, { 3, 5, 6, 0 } }; var output = builder.BuildFromUpperRow(input, dimension); AssertArraysAreEqual(expectedOutput, output); }
public void ValidateBuildFromFullMatrix() { MatrixBuilder builder = new MatrixBuilder(); int dimension = 4; double[] input = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; double[,] expectedOutput = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; var output = builder.BuildFromFullMatrix(input, dimension); AssertArraysAreEqual(expectedOutput, output); }
/// <summary> /// Loads weight matrix from tsp data /// </summary> /// <returns>Edge weight matrix</returns> protected double[,] LoadWeightMatrix() { MatrixBuilder matrixBuilder = new MatrixBuilder(); switch (tspFile.EdgeWeightFormat) { case Defines.EdgeWeightFormat.FullMatrix: return matrixBuilder.BuildFromFullMatrix(tspFile.EdgeWeights, tspFile.Dimension); case Defines.EdgeWeightFormat.UpperRow: case Defines.EdgeWeightFormat.LowerColumn: return matrixBuilder.BuildFromUpperRow(tspFile.EdgeWeights, tspFile.Dimension); case Defines.EdgeWeightFormat.LowerRow: case Defines.EdgeWeightFormat.UpperColumn: return matrixBuilder.BuildFromLowerRow(tspFile.EdgeWeights, tspFile.Dimension); case Defines.EdgeWeightFormat.UpperDiagonalRow: case Defines.EdgeWeightFormat.LowerDiagonalColumn: return matrixBuilder.BuildFromUpperDiagonalRow(tspFile.EdgeWeights, tspFile.Dimension); case Defines.EdgeWeightFormat.LowerDiagonalRow: case Defines.EdgeWeightFormat.UpperDiagonalColumn: return matrixBuilder.BuildFromLowerDiagonalRow(tspFile.EdgeWeights, tspFile.Dimension); default: throw new NotSupportedException(); } }
public void BuildFromLowerDiagonalRow_DimensionsDoesNotFitInputData_ThrowsException() { MatrixBuilder builder = new MatrixBuilder(); builder.BuildFromLowerDiagonalRow(new double[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0 }, 10); Assert.Fail(); }
public void ValidateBuildFromLowerDiagonalRow() { MatrixBuilder builder = new MatrixBuilder(); int dimension = 4; double[] input = { 0, 1, 0, 2, 4, 0, // only bottom left triangle with diagonal, read by rows 3, 5, 6, 0 }; double[,] expectedOutput = { { 0, 1, 2, 3 }, { 1, 0, 4, 5 }, { 2, 4, 0, 6 }, { 3, 5, 6, 0 } }; var output = builder.BuildFromLowerDiagonalRow(input, dimension); AssertArraysAreEqual(expectedOutput, output); }
public void BuildFromFullMatrix_DimensionsDoesNotFitInputData_ThrowsException() { MatrixBuilder builder = new MatrixBuilder(); builder.BuildFromFullMatrix(new double [] { 1, 2, 3, 4 }, 10); Assert.Fail(); }