コード例 #1
0
ファイル: t_sub.py プロジェクト: danielhfourie/gpkit-1
 def test_variable(self):
     """Test special single-argument substitution for Variable"""
     x = Variable('x')
     y = Variable('y')
     m = x * y**2
     self.assertEqual(x.sub(3), 3)
     # make sure x was not mutated
     self.assertEqual(x, Variable('x'))
     self.assertNotEqual(x.sub(3), Variable('x'))
     # also make sure the old way works
     self.assertEqual(x.sub({x: 3}), 3)
     # and for vectors
     xvec = VectorVariable(3, 'x')
     self.assertEqual(xvec[1].sub(3), 3)
コード例 #2
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_string_mutation(self):
     x = Variable("x", "m")
     descr_before = list(x.exp)[0].descr
     y = x.sub({"x": "y"})
     descr_after = list(x.exp)[0].descr
     self.assertEqual(descr_before, descr_after)
     x_changed_descr = dict(descr_before)
     x_changed_descr["name"] = "y"
     y_descr = list(y.exp)[0].descr
     self.assertEqual(x_changed_descr["name"], y_descr["name"])
     if not isinstance(descr_before["units"], str):
         self.assertAlmostEqual(x_changed_descr["units"] / y_descr["units"],
                                1.0)
     self.assertEqual(x.sub({"x": x}), x)
コード例 #3
0
ファイル: t_sub.py プロジェクト: galbramc/gpkit
 def test_string_mutation(self):
     x = Variable("x", "m")
     descr_before = list(x.exp)[0].descr
     y = x.sub("x", "y")
     descr_after = list(x.exp)[0].descr
     self.assertEqual(descr_before, descr_after)
     x_changed_descr = dict(descr_before)
     x_changed_descr["name"] = "y"
     y_descr = list(y.exp)[0].descr
     self.assertEqual(x_changed_descr["name"], y_descr["name"])
     if not isinstance(descr_before["units"], str):
         self.assertAlmostEqual(x_changed_descr["units"]/y_descr["units"],
                                1.0)
     self.assertEqual(x.sub("x", x), x)
コード例 #4
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_basic(self):
     """Basic substitution, symbolic"""
     x = Variable('x')
     y = Variable('y')
     p = 1 + x**2
     q = p.sub({x: y**2})
     self.assertEqual(q, 1 + y**4)
     self.assertEqual(x.sub({x: y}), y)
コード例 #5
0
ファイル: t_sub.py プロジェクト: galbramc/gpkit
 def test_variable(self):
     """Test special single-argument substitution for Variable"""
     x = Variable('x')
     y = Variable('y')
     m = x*y**2
     self.assertEqual(x.sub(3), 3)
     self.assertEqual(x.sub(y), y)
     self.assertEqual(x.sub(m), m)
     # make sure x was not mutated
     self.assertEqual(x, Variable('x'))
     self.assertNotEqual(x.sub(3), Variable('x'))
     # also make sure the old way works
     self.assertEqual(x.sub({x: 3}), 3)
     self.assertEqual(x.sub({x: y}), y)
     # and for vectors
     x = VectorVariable(3, 'x')
     self.assertEqual(x[1].sub(3), 3)
コード例 #6
0
ファイル: t_sub.py プロジェクト: galbramc/gpkit
 def test_basic(self):
     """Basic substitution, symbolic"""
     x = Variable('x')
     y = Variable('y')
     p = 1 + x**2
     q = p.sub({x: y**2})
     self.assertEqual(q, 1 + y**4)
     self.assertEqual(x.sub({x: y}), y)
コード例 #7
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_quantity_sub(self):
     if gpkit.units:
         x = Variable("x", 1, "cm")
         y = Variable("y", 1)
         self.assertEqual(x.sub({x: 1 * gpkit.units.m}).c.magnitude, 100)
         # NOTE: uncomment the below if requiring Quantity substitutions
         # self.assertRaises(ValueError, x.sub, x, 1)
         self.assertRaises(ValueError, x.sub, {x: 1 * gpkit.units.N})
         self.assertRaises(ValueError, y.sub, {y: 1 * gpkit.units.N})
         v = gpkit.VectorVariable(3, "v", "cm")
         subbed = v.sub({v: [1, 2, 3] * gpkit.units.m})
         self.assertEqual([z.c.magnitude for z in subbed], [100, 200, 300])
コード例 #8
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_quantity_sub(self):
     if gpkit.units:
         x = Variable("x", 1, "cm")
         y = Variable("y", 1)
         self.assertEqual(x.sub({x: 1*gpkit.units.m}).c.magnitude, 100)
         # NOTE: uncomment the below if requiring Quantity substitutions
         # self.assertRaises(ValueError, x.sub, x, 1)
         self.assertRaises(ValueError, x.sub, {x: 1*gpkit.units.N})
         self.assertRaises(ValueError, y.sub, {y: 1*gpkit.units.N})
         v = gpkit.VectorVariable(3, "v", "cm")
         subbed = v.sub({v: [1, 2, 3]*gpkit.units.m})
         self.assertEqual([z.c.magnitude for z in subbed], [100, 200, 300])
コード例 #9
0
ファイル: t_sub.py プロジェクト: danielhfourie/gpkit-1
 def test_signomial(self):
     """Test Signomial substitution"""
     D = Variable('D', units="N")
     x = Variable('x', units="N")
     y = Variable('y', units="N")
     a = Variable('a')
     with SignomialsEnabled():
         sc = (a * x + (1 - a) * y - D)
         subbed = sc.sub({a: 0.1})
         self.assertEqual(subbed, 0.1 * x + 0.9 * y - D)
         self.assertTrue(isinstance(subbed, Signomial))
         subbed = sc.sub({a: 2.0})
         self.assertTrue(isinstance(subbed, Signomial))
         self.assertEqual(subbed, 2 * x - y - D)
         _ = a.sub({a: -1}).value  # fix monomial assumptions
コード例 #10
0
ファイル: t_sub.py プロジェクト: hoburg/gpkit
 def test_signomial(self):
     """Test Signomial substitution"""
     D = Variable('D', units="N")
     x = Variable('x', units="N")
     y = Variable('y', units="N")
     a = Variable('a')
     with SignomialsEnabled():
         sc = (a*x + (1 - a)*y - D)
         subbed = sc.sub({a: 0.1})
         self.assertEqual(subbed, 0.1*x + 0.9*y - D)
         self.assertTrue(isinstance(subbed, Signomial))
         subbed = sc.sub({a: 2.0})
         self.assertTrue(isinstance(subbed, Signomial))
         self.assertEqual(subbed, 2*x - y - D)
         _ = a.sub({a: -1}).value  # fix monomial assumptions
コード例 #11
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_scalar_units(self):
     x = Variable("x", "m")
     xvk = x.key
     y = Variable("y", "km")
     yvk = y.key
     units_exist = bool(x.units)
     for x_ in ["x", xvk, x]:
         for y_ in ["y", yvk, y]:
             if not isinstance(y_, str) and units_exist:
                 expected = 1000.0
             else:
                 expected = 1.0
             self.assertAlmostEqual(expected, mag(x.sub({x_: y_}).c))
     if units_exist:
         z = Variable("z", "s")
         self.assertRaises(ValueError, y.sub, {y: z})
コード例 #12
0
ファイル: t_sub.py プロジェクト: galbramc/gpkit
 def test_scalar_units(self):
     x = Variable("x", "m")
     xvk = x.key
     y = Variable("y", "km")
     yvk = y.key
     units_exist = bool(x.units)
     for x_ in ["x", xvk, x]:
         for y_ in ["y", yvk, y]:
             if not isinstance(y_, str) and units_exist:
                 expected = 0.001
             else:
                 expected = 1.0
             self.assertAlmostEqual(expected, mag(x.sub(x_, y_).c))
     if units_exist:
         z = Variable("z", "s")
         self.assertRaises(ValueError, y.sub, y, z)
コード例 #13
0
 def test_quantity_sub(self):
     if gpkit.units:
         x = Variable("x", 1, "cm")
         y = Variable("y", 1)
         self.assertEqual(x.sub({x: 1 * gpkit.units.m}).c.magnitude, 100)
         # NOTE: uncomment the below if requiring Quantity substitutions
         # self.assertRaises(ValueError, x.sub, x, 1)
         self.assertRaises(ValueError, x.sub, {x: 1 * gpkit.ureg.N})
         self.assertRaises(ValueError, y.sub, {y: 1 * gpkit.ureg.N})
         v = gpkit.VectorVariable(3, "v", "cm")
         subbed = v.sub({v: [1, 2, 3] * gpkit.ureg.m})
         self.assertEqual([z.c.magnitude for z in subbed], [100, 200, 300])
         v = VectorVariable(1, "v", "km")
         v_min = VectorVariable(1, "v_min", "km")
         m = Model(v.prod(), [v >= v_min],
                   {v_min: [2 * gpkit.units("nmi")]})
         cost = m.solve(verbosity=0)["cost"]
         self.assertAlmostEqual(cost / (3.704 * gpkit.ureg("km")), 1.0)
         m = Model(v.prod(), [v >= v_min],
                   {v_min: np.array([2]) * gpkit.units("nmi")})
         cost = m.solve(verbosity=0)["cost"]
         self.assertAlmostEqual(cost / (3.704 * gpkit.ureg("km")), 1.0)
コード例 #14
0
ファイル: t_sub.py プロジェクト: hoburg/gpkit
 def test_quantity_sub(self):
     if gpkit.units:
         x = Variable("x", 1, "cm")
         y = Variable("y", 1)
         self.assertEqual(x.sub({x: 1*gpkit.units.m}).c.magnitude, 100)
         # NOTE: uncomment the below if requiring Quantity substitutions
         # self.assertRaises(ValueError, x.sub, x, 1)
         self.assertRaises(ValueError, x.sub, {x: 1*gpkit.ureg.N})
         self.assertRaises(ValueError, y.sub, {y: 1*gpkit.ureg.N})
         v = gpkit.VectorVariable(3, "v", "cm")
         subbed = v.sub({v: [1, 2, 3]*gpkit.ureg.m})
         self.assertEqual([z.c.magnitude for z in subbed], [100, 200, 300])
         v = VectorVariable(1, "v", "km")
         v_min = VectorVariable(1, "v_min", "km")
         m = Model(v.prod(), [v >= v_min],
                   {v_min: [2*gpkit.units("nmi")]})
         cost = m.solve(verbosity=0)["cost"]
         self.assertAlmostEqual(cost/(3.704*gpkit.ureg("km")), 1.0)
         m = Model(v.prod(), [v >= v_min],
                   {v_min: np.array([2])*gpkit.units("nmi")})
         cost = m.solve(verbosity=0)["cost"]
         self.assertAlmostEqual(cost/(3.704*gpkit.ureg("km")), 1.0)
コード例 #15
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_unitless_monomial_sub(self):
     "Tests that dimensionless and undimensioned subs can interact."
     x = Variable("x", "-")
     y = Variable("y")
     self.assertEqual(x.sub({x: y}), y)
コード例 #16
0
ファイル: t_sub.py プロジェクト: lochieferrier/gpkit
 def test_unitless_monomial_sub(self):
     "Tests that dimensionless and undimensioned subs can interact."
     x = Variable("x", "-")
     y = Variable("y")
     self.assertEqual(x.sub({x: y}), y)