def test_saw_float32(self): """Test the SAW method with float32 NumPy arrays.""" z_matrix = np.array([[0.00, 1.00], [0.25, 0.75], [0.50, 0.50], [0.75, 0.25], [1.00, 0.00]], dtype=np.float32) is_benefit_z = [True, True] w_vector = np.array([0.5, 0.5], dtype=np.float32) obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "SAW") expected_s_vector = np.array([0.5, 0.5, 0.5, 0.5, 0.5], dtype=np.float64) expected_desc_order = True np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)
def test_saw_simple_cost(self): """Test the SAW method with simple cost criteria.""" z_matrix = np.array( [[0.5, 0.6, 0.3, 0.2, 0.9], [0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.4, 0.7, 0.8, 0.1]], dtype=np.float64) is_benefit_z = [False, False, False, False, False] w_vector = np.array([0.0, 0.1, 0.2, 0.3, 0.4], dtype=np.float64) obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "SAW") expected_s_vector = np.array([0.54, 0.5, 0.46], dtype=np.float64) expected_desc_order = False np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)
def test_mtopsis_balanced(self): """Test the mTOPSIS method with a balanced decision matrix.""" z_matrix = np.array([[0.00, 1.00], [0.25, 0.75], [0.50, 0.50], [0.75, 0.25], [1.00, 0.00]], dtype=np.float64) is_benefit_z = [True, True] w_vector = np.array([0.5, 0.5], dtype=np.float64) obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "mTOPSIS") expected_s_vector = np.array([0.5, 0.5, 0.5, 0.5, 0.5], dtype=np.float64) expected_desc_order = True np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)
def test_mtopsis_simple_mixture(self): """Test the mTOPSIS method with a mixture of criteria.""" z_matrix = np.array( [[0.5, 0.6, 0.3, 0.2, 0.9], [0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.4, 0.7, 0.8, 0.1]], dtype=np.float64) is_benefit_z = [True, False, True, True, True] w_vector = np.array([0.0, 0.1, 0.2, 0.3, 0.4], dtype=np.float64) obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "mTOPSIS") expected_s_vector = np.array([0.5714286, 0.5000000, 0.4285714], dtype=np.float64) expected_desc_order = True np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)
def test_topsis_simple_benefit(self): """Test the TOPSIS method with simple benefit criteria.""" z_matrix = np.array( [[0.5, 0.6, 0.3, 0.2, 0.9], [0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.4, 0.7, 0.8, 0.1]], dtype=np.float64) is_benefit_z = [True, True, True, True, True] w_vector = np.array([0.0, 0.1, 0.2, 0.3, 0.4], dtype=np.float64) obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "TOPSIS") expected_s_vector = np.array([0.6194425, 0.5000000, 0.3805575], dtype=np.float64) expected_desc_order = True np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)
def test_topsis_nested_list(self): """Test the TOPSIS method with nested lists.""" z_matrix = [ [0.00, 1.00], [0.25, 0.75], [0.50, 0.50], [0.75, 0.25], [1.00, 0.00], ] is_benefit_z = [True, True] w_vector = [0.5, 0.5] obtained_s_vector, obtained_desc_order = mcdm.score( z_matrix, is_benefit_z, w_vector, "TOPSIS") expected_s_vector = np.array([0.5, 0.5, 0.5, 0.5, 0.5], dtype=np.float64) expected_desc_order = True np.testing.assert_allclose(obtained_s_vector, expected_s_vector) self.assertEqual(obtained_s_vector.dtype, expected_s_vector.dtype) self.assertEqual(obtained_desc_order, expected_desc_order)