3131
3232def build_dict (expr : mb .LinearExprT ) -> Dict [mbh .Variable , float ]:
3333 res = {}
34- flat_expr = mbh .FlatExpression (expr )
34+ flat_expr = mbh .FlatExpr (expr )
3535 print (f"expr = { expr } flat_expr = { flat_expr } " , flush = True )
3636 for var , coeff in zip (flat_expr .vars , flat_expr .coeffs ):
3737 print (f"process { var } * { coeff } " , flush = True )
@@ -209,7 +209,7 @@ def test_class_api(self):
209209 t = model .new_int_var (3 , 10 , "t" )
210210
211211 e1 = mb .LinearExpr .sum ([x , y , z ])
212- flat_e1 = mbh .FlatExpression (e1 )
212+ flat_e1 = mbh .FlatExpr (e1 )
213213 expected_vars = np .array ([0 , 1 , 2 ], dtype = np .int32 )
214214 np_testing .assert_array_equal (expected_vars , flat_e1 .variable_indices ())
215215 np_testing .assert_array_equal (
@@ -219,7 +219,7 @@ def test_class_api(self):
219219 self .assertEqual (e1 .__str__ (), "(x + y + z)" )
220220
221221 e2 = mb .LinearExpr .sum ([e1 , 4.0 ])
222- flat_e2 = mbh .FlatExpression (e2 )
222+ flat_e2 = mbh .FlatExpr (e2 )
223223 np_testing .assert_array_equal (expected_vars , flat_e2 .variable_indices ())
224224 np_testing .assert_array_equal (
225225 np .array ([1 , 1 , 1 ], dtype = np .double ), flat_e2 .coeffs
@@ -229,7 +229,7 @@ def test_class_api(self):
229229 self .assertEqual (flat_e2 .__str__ (), "x + y + z + 4" )
230230
231231 e3 = mb .LinearExpr .term (e2 , 2 )
232- flat_e3 = mbh .FlatExpression (e3 )
232+ flat_e3 = mbh .FlatExpr (e3 )
233233 np_testing .assert_array_equal (expected_vars , flat_e3 .variable_indices ())
234234 np_testing .assert_array_equal (
235235 np .array ([2 , 2 , 2 ], dtype = np .double ), flat_e3 .coeffs
@@ -239,7 +239,7 @@ def test_class_api(self):
239239 self .assertEqual (flat_e3 .__str__ (), "2 * x + 2 * y + 2 * z + 8" )
240240
241241 e4 = mb .LinearExpr .weighted_sum ([x , t ], [- 1 , 1 ], constant = 2 )
242- flat_e4 = mbh .FlatExpression (e4 )
242+ flat_e4 = mbh .FlatExpr (e4 )
243243 np_testing .assert_array_equal (
244244 np .array ([0 , 3 ], dtype = np .int32 ), flat_e4 .variable_indices ()
245245 )
@@ -250,7 +250,7 @@ def test_class_api(self):
250250 self .assertEqual (e4 .__str__ (), "(-x + t + 2)" )
251251
252252 e4b = mb .LinearExpr .weighted_sum ([e4 * 3 ], [1 ])
253- flat_e4b = mbh .FlatExpression (e4b )
253+ flat_e4b = mbh .FlatExpr (e4b )
254254 np_testing .assert_array_equal (
255255 np .array ([0 , 3 ], dtype = np .int32 ), flat_e4b .variable_indices ()
256256 )
@@ -261,7 +261,7 @@ def test_class_api(self):
261261 self .assertEqual (e4b .__str__ (), "(3 * (-x + t + 2))" )
262262
263263 e5 = mb .LinearExpr .sum ([e1 , - 3 , e4 ])
264- flat_e5 = mbh .FlatExpression (e5 )
264+ flat_e5 = mbh .FlatExpr (e5 )
265265 np_testing .assert_array_equal (
266266 np .array ([1 , 2 , 3 ], dtype = np .int32 ), flat_e5 .variable_indices ()
267267 )
@@ -272,7 +272,7 @@ def test_class_api(self):
272272 self .assertEqual (flat_e5 .__str__ (), "y + z + t - 1" )
273273
274274 e6 = mb .LinearExpr .term (x , 2.0 , constant = 1.0 )
275- flat_e6 = mbh .FlatExpression (e6 )
275+ flat_e6 = mbh .FlatExpr (e6 )
276276 np_testing .assert_array_equal (
277277 np .array ([0 ], dtype = np .int32 ), flat_e6 .variable_indices ()
278278 )
@@ -288,10 +288,36 @@ def test_class_api(self):
288288 e9 = mb .LinearExpr .term (x * 2 + 3 , 1 , constant = 0 )
289289 e10 = mb .LinearExpr .term (x , 2 , constant = 3 )
290290 self .assertEqual (
291- str (mbh .FlatExpression (e9 )),
292- str (mbh .FlatExpression (e10 )),
291+ str (mbh .FlatExpr (e9 )),
292+ str (mbh .FlatExpr (e10 )),
293293 )
294294
295+ e10 = mb .LinearExpr .sum ()
296+ self .assertEqual (str (e10 ), "0" )
297+
298+ e11 = mb .LinearExpr .sum (x )
299+ self .assertIsInstance (e11 , mb .Variable )
300+ self .assertEqual (x .index , e11 .index )
301+
302+ e12 = mb .LinearExpr .sum (- 1.0 , x , 1.0 )
303+ self .assertIsInstance (e12 , mb .Variable )
304+ self .assertEqual (x .index , e12 .index )
305+
306+ e13 = mb .LinearExpr .sum (- 1.0 , x , constant = 1.0 )
307+ self .assertIsInstance (e13 , mb .Variable )
308+ self .assertEqual (x .index , e13 .index )
309+
310+ e14 = mb .LinearExpr .weighted_sum ([x , t , 1.2 ], [1 , - 1 , - 1.0 ], constant = 2 )
311+ flat_e14 = mbh .FlatExpr (e14 )
312+ np_testing .assert_array_equal (
313+ np .array ([0 , 3 ], dtype = np .int32 ), flat_e14 .variable_indices ()
314+ )
315+ np_testing .assert_array_equal (
316+ np .array ([1 , - 1 ], dtype = np .double ), flat_e14 .coeffs
317+ )
318+ self .assertEqual (flat_e14 .offset , 0.8 )
319+ self .assertEqual (e14 .__str__ (), "(x - t + 0.8)" )
320+
295321 def test_variables (self ):
296322 model = mb .Model ()
297323 x = model .new_int_var (0.0 , 4.0 , "x" )
@@ -580,27 +606,27 @@ def setUp(self):
580606 ),
581607 # LinearExpression
582608 dict (
583- testcase_name = "FlatExpression (x.sum())" ,
584- expr = lambda x , y : mbh .FlatExpression (x .sum ()),
609+ testcase_name = "FlatExpr (x.sum())" ,
610+ expr = lambda x , y : mbh .FlatExpr (x .sum ()),
585611 expected_str = "x[0] + x[1] + x[2]" ,
586612 ),
587613 dict (
588- testcase_name = "FlatExpression(FlatExpression (x.sum()))" ,
614+ testcase_name = "FlatExpr(FlatExpr (x.sum()))" ,
589615 # pylint: disable=g-long-lambda
590- expr = lambda x , y : mbh .FlatExpression (mbh .FlatExpression (x .sum ())),
616+ expr = lambda x , y : mbh .FlatExpr (mbh .FlatExpr (x .sum ())),
591617 expected_str = "x[0] + x[1] + x[2]" ,
592618 ),
593619 dict (
594- testcase_name = """FlatExpression (sum([
595- FlatExpression (x.sum()),
596- FlatExpression (x.sum()),
620+ testcase_name = """FlatExpr (sum([
621+ FlatExpr (x.sum()),
622+ FlatExpr (x.sum()),
597623 ]))""" ,
598624 # pylint: disable=g-long-lambda
599- expr = lambda x , y : mbh .FlatExpression (
625+ expr = lambda x , y : mbh .FlatExpr (
600626 sum (
601627 [
602- mbh .FlatExpression (x .sum ()),
603- mbh .FlatExpression (x .sum ()),
628+ mbh .FlatExpr (x .sum ()),
629+ mbh .FlatExpr (x .sum ()),
604630 ]
605631 )
606632 ),
@@ -610,7 +636,7 @@ def setUp(self):
610636 def test_str (self , expr , expected_str ):
611637 x = self .x
612638 y = self .y
613- self .assertEqual (str (mbh .FlatExpression (expr (x , y ))), expected_str )
639+ self .assertEqual (str (mbh .FlatExpr (expr (x , y ))), expected_str )
614640
615641
616642class LinearBaseErrorsTest (absltest .TestCase ):
@@ -623,7 +649,7 @@ class UnknownLinearType(mb.LinearExpr):
623649 def __init__ (self ):
624650 mb .LinearExpr .__init__ (self )
625651
626- mbh .FlatExpression (UnknownLinearType ())
652+ mbh .FlatExpr (UnknownLinearType ())
627653
628654 def test_division_by_zero (self ):
629655 with self .assertRaises (ZeroDivisionError ):
@@ -1483,8 +1509,8 @@ def assertLinearExpressionAlmostEqual(
14831509 expr2 : mbh .LinearExpr ,
14841510 ) -> None :
14851511 """Test that the two linear expressions are almost equal."""
1486- flat_expr1 = mbh .FlatExpression (expr1 )
1487- flat_expr2 = mbh .FlatExpression (expr2 )
1512+ flat_expr1 = mbh .FlatExpr (expr1 )
1513+ flat_expr2 = mbh .FlatExpr (expr2 )
14881514 self .assertEqual (len (flat_expr1 .vars ), len (flat_expr2 .vars ))
14891515 if len (flat_expr1 .vars ) > 0 : # pylint: disable=g-explicit-length-test
14901516 self .assertSequenceEqual (flat_expr1 .vars , flat_expr2 .vars )
@@ -1511,7 +1537,6 @@ def test_set_objective(
15111537 x = model .new_var_series (name = "x" , index = variable_indices )
15121538 y = model .new_var_series (name = "y" , index = variable_indices )
15131539 objective_expression = expression (x , y )
1514- print (f"objective_expression: { objective_expression } " )
15151540 if is_maximize :
15161541 model .maximize (objective_expression )
15171542 else :
@@ -1529,7 +1554,7 @@ def test_set_new_objective(self):
15291554
15301555 # Set and check for old objective.
15311556 model .maximize (old_objective_expression )
1532- flat_got_objective_expression = mbh .FlatExpression (model .objective_expression ())
1557+ flat_got_objective_expression = mbh .FlatExpr (model .objective_expression ())
15331558 self .assertEmpty (flat_got_objective_expression .vars )
15341559 self .assertEmpty (flat_got_objective_expression .coeffs )
15351560 self .assertAlmostEqual (flat_got_objective_expression .offset , 1 )
@@ -1553,7 +1578,7 @@ def test_minimize(
15531578 model = mb .Model ()
15541579 x = model .new_var_series (name = "x" , index = variable_indices )
15551580 y = model .new_var_series (name = "y" , index = variable_indices )
1556- objective_expression = mbh .FlatExpression (expression (x , y ))
1581+ objective_expression = mbh .FlatExpr (expression (x , y ))
15571582 model .minimize (objective_expression )
15581583 got_objective_expression = model .objective_expression ()
15591584 self .assertLinearExpressionAlmostEqual (
@@ -1572,7 +1597,7 @@ def test_maximize(
15721597 model = mb .Model ()
15731598 x = model .new_var_series (name = "x" , index = variable_indices )
15741599 y = model .new_var_series (name = "y" , index = variable_indices )
1575- objective_expression = mbh .FlatExpression (expression (x , y ))
1600+ objective_expression = mbh .FlatExpr (expression (x , y ))
15761601 model .maximize (objective_expression )
15771602 got_objective_expression = model .objective_expression ()
15781603 self .assertLinearExpressionAlmostEqual (
0 commit comments