def test_forbidden_equals_clause(self): hp1 = CategoricalHyperparameter("parent", [0, 1]) hp2 = UniformIntegerHyperparameter("child", 0, 10) hp3 = CategoricalHyperparameter("grandchild", ["hot", "cold"]) self.assertRaisesRegex( ValueError, r"Forbidden clause must be instantiated with a legal hyperparameter value for " r"'parent, Type: Categorical, Choices: \{0, 1\}, Default: 0', but got '2'", ForbiddenEqualsClause, hp1, 2, ) forb1 = ForbiddenEqualsClause(hp1, 1) forb1_ = ForbiddenEqualsClause(hp1, 1) forb1__ = ForbiddenEqualsClause(hp1, 0) forb2 = ForbiddenEqualsClause(hp2, 10) forb3 = ForbiddenEqualsClause(hp3, "hot") forb3_ = ForbiddenEqualsClause(hp3, "hot") self.assertEqual(forb3, forb3_) # print("\eq0:", 1, 1) # self.assertEqual(1, 1) # print("\neq1:", forb1, forb1_) self.assertEqual(forb1, forb1_) # print("\nneq2:", forb1, "forb1") self.assertNotEqual(forb1, "forb1") # print("\nneq3:", forb1, forb2) self.assertNotEqual(forb1, forb2) # print("\nneq4:", forb1_, forb1) self.assertNotEqual(forb1__, forb1) # print("\neq5:", "Forbidden: parent == 1", str(forb1)) self.assertEqual("Forbidden: parent == 1", str(forb1)) # print("\nraisereg6:") self.assertRaisesRegex(ValueError, "Is_forbidden must be called with the " "instanstatiated hyperparameter in the " "forbidden clause; you are missing " "'parent'", forb1.is_forbidden, {1: hp2}, True) # print("\nneq7:") self.assertFalse(forb1.is_forbidden({'child': 1}, strict=False)) # print("\nneq8:") self.assertFalse(forb1.is_forbidden({'parent': 0}, True)) # print("\nneq9:") self.assertTrue(forb1.is_forbidden({'parent': 1}, True)) # Test forbidden on vector values hyperparameter_idx = { hp1.name: 0, hp2.name: 1 } forb1.set_vector_idx(hyperparameter_idx) # print("\nneq10:") self.assertFalse(forb1.is_forbidden_vector(np.array([np.NaN, np.NaN]), strict=False)) # print("\nneq11:") self.assertFalse(forb1.is_forbidden_vector(np.array([0., np.NaN]), strict=False)) # print("\nneq12:") self.assertTrue(forb1.is_forbidden_vector(np.array([1., np.NaN]), strict=False))
def test_forbidden_equals_clause(self): hp1 = CategoricalHyperparameter("parent", [0, 1]) hp2 = UniformIntegerHyperparameter("child", 0, 10) self.assertRaisesRegexp( TypeError, "Argument 'hyperparameter' is not of" " type <class 'ConfigSpace.hyperparameters.Hyperparameter'>.", ForbiddenEqualsClause, "HP1", 1) self.assertRaisesRegexp( ValueError, "Forbidden clause must be instantiated with a " "legal hyperparameter value for " "'parent, Type: Categorical, Choices: \{0, " "1\}, Default: 0', but got '2'", ForbiddenEqualsClause, hp1, 2) forb1 = ForbiddenEqualsClause(hp1, 1) forb1_ = ForbiddenEqualsClause(hp1, 1) forb1__ = ForbiddenEqualsClause(hp1, 0) forb2 = ForbiddenEqualsClause(hp2, 10) self.assertEqual(forb1, forb1_) self.assertNotEqual(forb1, "forb1") self.assertNotEqual(forb1, forb2) self.assertNotEqual(forb1__, forb1) self.assertEqual("Forbidden: parent == 1", str(forb1)) self.assertRaisesRegexp( ValueError, "Is_forbidden must be called with the " "instanstatiated hyperparameter in the " "forbidden clause; you are missing " "'parent'", forb1.is_forbidden, {1: hp2}) self.assertFalse(forb1.is_forbidden({'child': 1}, strict=False)) self.assertFalse(forb1.is_forbidden({'parent': 0})) self.assertTrue(forb1.is_forbidden({'parent': 1})) # Test forbidden on vector values hyperparameter_idx = {hp1.name: 0, hp2.name: 1} forb1.set_vector_idx(hyperparameter_idx) self.assertFalse( forb1.is_forbidden_vector([np.NaN, np.NaN], strict=False)) self.assertFalse(forb1.is_forbidden_vector([0., np.NaN])) self.assertTrue(forb1.is_forbidden_vector([1., np.NaN]))
def test_forbidden_equals_clause(self): hp1 = CategoricalHyperparameter("parent", [0, 1]) hp2 = UniformIntegerHyperparameter("child", 0, 10) hp3 = CategoricalHyperparameter("grandchild", ["hot", "cold"]) self.assertRaisesRegex( ValueError, r"Forbidden clause must be instantiated with a legal hyperparameter value for " r"'parent, Type: Categorical, Choices: \{0, 1\}, Default: 0', but got '2'", ForbiddenEqualsClause, hp1, 2, ) forb1 = ForbiddenEqualsClause(hp1, 1) forb1_ = ForbiddenEqualsClause(hp1, 1) forb1__ = ForbiddenEqualsClause(hp1, 0) forb2 = ForbiddenEqualsClause(hp2, 10) forb3 = ForbiddenEqualsClause(hp3, "hot") forb3_ = ForbiddenEqualsClause(hp3, "hot") self.assertEqual(forb3, forb3_) # print("\eq0:", 1, 1) # self.assertEqual(1, 1) # print("\neq1:", forb1, forb1_) self.assertEqual(forb1, forb1_) # print("\nneq2:", forb1, "forb1") self.assertNotEqual(forb1, "forb1") # print("\nneq3:", forb1, forb2) self.assertNotEqual(forb1, forb2) # print("\nneq4:", forb1_, forb1) self.assertNotEqual(forb1__, forb1) # print("\neq5:", "Forbidden: parent == 1", str(forb1)) self.assertEqual("Forbidden: parent == 1", str(forb1)) # print("\nraisereg6:") self.assertRaisesRegex( ValueError, "Is_forbidden must be called with the " "instanstatiated hyperparameter in the " "forbidden clause; you are missing " "'parent'", forb1.is_forbidden, {1: hp2}, True) # print("\nneq7:") self.assertFalse(forb1.is_forbidden({'child': 1}, strict=False)) # print("\nneq8:") self.assertFalse(forb1.is_forbidden({'parent': 0}, True)) # print("\nneq9:") self.assertTrue(forb1.is_forbidden({'parent': 1}, True)) # Test forbidden on vector values hyperparameter_idx = {hp1.name: 0, hp2.name: 1} forb1.set_vector_idx(hyperparameter_idx) # print("\nneq10:") self.assertFalse( forb1.is_forbidden_vector(np.array([np.NaN, np.NaN]), strict=False)) # print("\nneq11:") self.assertFalse( forb1.is_forbidden_vector(np.array([0., np.NaN]), strict=False)) # print("\nneq12:") self.assertTrue( forb1.is_forbidden_vector(np.array([1., np.NaN]), strict=False))