8
8
9
9
from ax .core .metric import Metric
10
10
from ax .core .objective import MultiObjective , Objective , ScalarizedObjective
11
+ from ax .exceptions .core import UserInputError
11
12
from ax .utils .common .testutils import TestCase
12
13
13
14
@@ -20,7 +21,7 @@ def setUp(self) -> None:
20
21
"m3" : Metric (name = "m3" , lower_is_better = False ),
21
22
}
22
23
self .objectives = {
23
- "o1" : Objective (metric = self .metrics ["m1" ]),
24
+ "o1" : Objective (metric = self .metrics ["m1" ], minimize = True ),
24
25
"o2" : Objective (metric = self .metrics ["m2" ], minimize = True ),
25
26
"o3" : Objective (metric = self .metrics ["m3" ], minimize = False ),
26
27
}
@@ -37,6 +38,12 @@ def setUp(self) -> None:
37
38
)
38
39
39
40
def test_Init (self ) -> None :
41
+ with self .assertRaisesRegex (UserInputError , "does not specify" ):
42
+ Objective (metric = self .metrics ["m1" ]),
43
+ with self .assertRaisesRegex (
44
+ UserInputError , "doesn't match the specified optimization direction"
45
+ ):
46
+ Objective (metric = self .metrics ["m2" ], minimize = False )
40
47
with self .assertRaises (ValueError ):
41
48
ScalarizedObjective (
42
49
metrics = [self .metrics ["m1" ], self .metrics ["m2" ]], weights = [1.0 ]
@@ -51,14 +58,6 @@ def test_Init(self) -> None:
51
58
metrics = [self .metrics ["m1" ], self .metrics ["m2" ]],
52
59
minimize = False ,
53
60
)
54
- with self .assertWarnsRegex (
55
- DeprecationWarning , "Defaulting to `minimize=False`"
56
- ):
57
- Objective (metric = self .metrics ["m1" ])
58
- with self .assertWarnsRegex (UserWarning , "Attempting to maximize" ):
59
- Objective (Metric (name = "m4" , lower_is_better = True ), minimize = False )
60
- with self .assertWarnsRegex (UserWarning , "Attempting to minimize" ):
61
- Objective (Metric (name = "m4" , lower_is_better = False ), minimize = True )
62
61
self .assertEqual (
63
62
self .objective .get_unconstrainable_metrics (), [self .metrics ["m1" ]]
64
63
)
@@ -70,15 +69,15 @@ def test_MultiObjective(self) -> None:
70
69
71
70
self .assertEqual (self .multi_objective .metrics , list (self .metrics .values ()))
72
71
minimizes = [obj .minimize for obj in self .multi_objective .objectives ]
73
- self .assertEqual (minimizes , [False , True , False ])
72
+ self .assertEqual (minimizes , [True , True , False ])
74
73
weights = [mw [1 ] for mw in self .multi_objective .objective_weights ]
75
74
self .assertEqual (weights , [1.0 , 1.0 , 1.0 ])
76
75
self .assertEqual (self .multi_objective .clone (), self .multi_objective )
77
76
self .assertEqual (
78
77
str (self .multi_objective ),
79
78
(
80
79
"MultiObjective(objectives="
81
- '[Objective(metric_name="m1", minimize=False ), '
80
+ '[Objective(metric_name="m1", minimize=True ), '
82
81
'Objective(metric_name="m2", minimize=True), '
83
82
'Objective(metric_name="m3", minimize=False)])'
84
83
),
@@ -89,19 +88,26 @@ def test_MultiObjective(self) -> None:
89
88
)
90
89
91
90
def test_MultiObjectiveBackwardsCompatibility (self ) -> None :
92
- multi_objective = MultiObjective (
93
- metrics = [self .metrics ["m1" ], self .metrics ["m2" ], self .metrics ["m3" ]]
94
- )
91
+ metrics = [
92
+ Metric (name = "m1" , lower_is_better = False ),
93
+ self .metrics ["m2" ],
94
+ self .metrics ["m3" ],
95
+ ]
96
+ multi_objective = MultiObjective (metrics = metrics )
95
97
minimizes = [obj .minimize for obj in multi_objective .objectives ]
96
- self .assertEqual (multi_objective .metrics , list ( self . metrics . values ()) )
98
+ self .assertEqual (multi_objective .metrics , metrics )
97
99
self .assertEqual (minimizes , [False , True , False ])
98
100
99
101
multi_objective_min = MultiObjective (
100
- metrics = [self .metrics ["m1" ], self .metrics ["m2" ], self .metrics ["m3" ]],
102
+ metrics = [
103
+ Metric (name = "m1" ),
104
+ Metric (name = "m2" ),
105
+ Metric (name = "m3" , lower_is_better = True ),
106
+ ],
101
107
minimize = True ,
102
108
)
103
109
minimizes = [obj .minimize for obj in multi_objective_min .objectives ]
104
- self .assertEqual (minimizes , [True , False , True ])
110
+ self .assertEqual (minimizes , [True , True , True ])
105
111
106
112
def test_ScalarizedObjective (self ) -> None :
107
113
with self .assertRaises (NotImplementedError ):
0 commit comments