Esempio n. 1
0
    def test_pickle(self):
        v = variable()
        e = noclone(v)
        self.assertEqual(type(e), noclone)
        self.assertIs(type(e.expr), variable)
        eup = pickle.loads(pickle.dumps(e))
        self.assertEqual(type(eup), noclone)
        self.assertTrue(e is not eup)
        self.assertIs(type(eup.expr), variable)
        self.assertIs(type(e.expr), variable)
        self.assertTrue(eup.expr is not e.expr)

        del e
        del v

        v = variable(value=1)
        b = block()
        b.v = v
        eraw = b.v + 1
        b.e = 1 + noclone(eraw)
        bup = pickle.loads(pickle.dumps(b))
        self.assertTrue(isinstance(bup.e, NumericValue))
        self.assertEqual(value(bup.e), 3.0)
        b.v.value = 2
        self.assertEqual(value(b.e), 4.0)
        self.assertEqual(value(bup.e), 3.0)
        bup.v.value = -1
        self.assertEqual(value(b.e), 4.0)
        self.assertEqual(value(bup.e), 1.0)

        self.assertIs(b.v.parent, b)
        self.assertIs(bup.v.parent, bup)

        del b.v
Esempio n. 2
0
 def test_init_non_NumericValue(self):
     types = [None, 1, 1.1, True, ""]
     if numpy_available:
         types.extend([numpy.float32(1), numpy.bool_(True), numpy.int32(1)])
     types.append(block())
     types.append(block)
     for obj in types:
         self.assertEqual(noclone(obj), obj)
         self.assertIs(type(noclone(obj)), type(obj))
Esempio n. 3
0
 def test_init_non_NumericValue(self):
     types = [None, 1, 1.1, True, ""]
     if numpy_available:
         types.extend([numpy.float32(1), numpy.bool_(True), numpy.int32(1)])
     types.append(block())
     types.append(block)
     for obj in types:
         self.assertEqual(noclone(obj), obj)
         self.assertIs(type(noclone(obj)), type(obj))
Esempio n. 4
0
 def test_call(self):
     e = noclone(None)
     self.assertIs(e, None)
     e = noclone(1)
     self.assertEqual(e, 1)
     p = parameter()
     p.value = 2
     e = noclone(p + 1)
     self.assertEqual(e(), 3)
Esempio n. 5
0
 def test_call(self):
     e = noclone(None)
     self.assertIs(e, None)
     e = noclone(1)
     self.assertEqual(e, 1)
     p = parameter()
     p.value = 2
     e = noclone(p + 1)
     self.assertEqual(e(), 3)
Esempio n. 6
0
    def test_clone(self):

        p = parameter()
        e = noclone(p)
        self.assertTrue(e.clone() is e)
        self.assertTrue(e.clone().expr is p)
        sube = p**2 + 1
        e = noclone(sube)
        self.assertTrue(e.clone() is e)
        self.assertTrue(e.clone().expr is sube)
Esempio n. 7
0
    def test_clone(self):

        p = parameter()
        e = noclone(p)
        self.assertTrue(e.clone() is e)
        self.assertTrue(e.clone().expr is p)
        sube = p**2 + 1
        e = noclone(sube)
        self.assertTrue(e.clone() is e)
        self.assertTrue(e.clone().expr is sube)
Esempio n. 8
0
    def test_is_fixed(self):
        v = variable()
        e = noclone(v + 1)
        self.assertEqual(e.is_fixed(), False)
        self.assertEqual(is_fixed(e), False)
        v.fix()
        self.assertEqual(e.is_fixed(), True)
        self.assertEqual(is_fixed(e), True)

        e = noclone(parameter())
        self.assertEqual(e.is_fixed(), True)
        self.assertEqual(is_fixed(e), True)
Esempio n. 9
0
 def test_init_NumericValue(self):
     v = variable()
     p = parameter()
     e = expression()
     d = data_expression()
     o = objective()
     for obj in (v, v + 1, v**2, p, p + 1, p**2, e, e + 1, e**2, d, d + 1,
                 d**2, o, o + 1, o**2):
         self.assertTrue(isinstance(noclone(obj), NumericValue))
         self.assertTrue(isinstance(noclone(obj), IIdentityExpression))
         self.assertTrue(isinstance(noclone(obj), noclone))
         self.assertIs(noclone(obj).expr, obj)
Esempio n. 10
0
    def test_is_fixed(self):
        v = variable()
        e = noclone(v + 1)
        self.assertEqual(e.is_fixed(), False)
        self.assertEqual(is_fixed(e), False)
        v.fix()
        self.assertEqual(e.is_fixed(), True)
        self.assertEqual(is_fixed(e), True)

        e = noclone(parameter())
        self.assertEqual(e.is_fixed(), True)
        self.assertEqual(is_fixed(e), True)
Esempio n. 11
0
 def testis_potentially_variable(self):
     e = noclone(variable())
     self.assertEqual(e.is_potentially_variable(), True)
     self.assertEqual(is_potentially_variable(e), True)
     e = noclone(parameter())
     self.assertEqual(e.is_potentially_variable(), False)
     self.assertEqual(is_potentially_variable(e), False)
     e = noclone(expression())
     self.assertEqual(e.is_potentially_variable(), True)
     self.assertEqual(is_potentially_variable(e), True)
     e = noclone(data_expression())
     self.assertEqual(e.is_potentially_variable(), False)
     self.assertEqual(is_potentially_variable(e), False)
Esempio n. 12
0
 def testis_potentially_variable(self):
     e = noclone(variable())
     self.assertEqual(e.is_potentially_variable(), True)
     self.assertEqual(is_potentially_variable(e), True)
     e = noclone(parameter())
     self.assertEqual(e.is_potentially_variable(), False)
     self.assertEqual(is_potentially_variable(e), False)
     e = noclone(expression())
     self.assertEqual(e.is_potentially_variable(), True)
     self.assertEqual(is_potentially_variable(e), True)
     e = noclone(data_expression())
     self.assertEqual(e.is_potentially_variable(), False)
     self.assertEqual(is_potentially_variable(e), False)
Esempio n. 13
0
    def test_is_constant(self):
        v = variable()
        e = noclone(v)
        self.assertEqual(e.is_constant(), False)
        self.assertEqual(is_constant(e), False)
        v.fix(1)
        self.assertEqual(e.is_constant(), False)
        self.assertEqual(is_constant(e), False)

        p = parameter()
        e = noclone(p)
        self.assertEqual(p.is_constant(), False)
        self.assertEqual(is_constant(p), False)

        self.assertEqual(is_constant(noclone(1)), True)
Esempio n. 14
0
 def test_init_NumericValue(self):
     v = variable()
     p = parameter()
     e = expression()
     d = data_expression()
     o = objective()
     for obj in (v, v+1, v**2,
                 p, p+1, p**2,
                 e, e+1, e**2,
                 d, d+1, d**2,
                 o, o+1, o**2):
         self.assertTrue(isinstance(noclone(obj), NumericValue))
         self.assertTrue(isinstance(noclone(obj), IIdentityExpression))
         self.assertTrue(isinstance(noclone(obj), noclone))
         self.assertIs(noclone(obj).expr, obj)
Esempio n. 15
0
    def test_is_constant(self):
        v = variable()
        e = noclone(v)
        self.assertEqual(e.is_constant(), False)
        self.assertEqual(is_constant(e), False)
        v.fix(1)
        self.assertEqual(e.is_constant(), False)
        self.assertEqual(is_constant(e), False)

        p = parameter()
        e = noclone(p)
        self.assertEqual(p.is_constant(), False)
        self.assertEqual(is_constant(p), False)

        self.assertEqual(is_constant(noclone(1)), True)
Esempio n. 16
0
 def test_polynomial_degree(self):
     e = noclone(parameter())
     self.assertEqual(e.polynomial_degree(), 0)
     e = noclone(parameter(value=1))
     self.assertEqual(e.polynomial_degree(), 0)
     v = variable()
     v.value = 2
     e = noclone(v + 1)
     self.assertEqual(e.polynomial_degree(), 1)
     e = noclone(v**2 + v + 1)
     self.assertEqual(e.polynomial_degree(), 2)
     v.fix()
     self.assertEqual(e.polynomial_degree(), 0)
     e = noclone(v**v)
     self.assertEqual(e.polynomial_degree(), 0)
     v.free()
     self.assertEqual(e.polynomial_degree(), None)
Esempio n. 17
0
 def test_division_behavior(self):
     # make sure integers involved in Pyomo expression
     # use __future__ behavior
     e = noclone(parameter(value=2))
     self.assertIs(type(e.expr), parameter)
     self.assertEqual((1/e)(), 0.5)
     self.assertEqual((parameter(1)/e)(), 0.5)
     self.assertEqual((1/e.expr()), 0.5)
Esempio n. 18
0
 def test_polynomial_degree(self):
     e = noclone(parameter())
     self.assertEqual(e.polynomial_degree(), 0)
     e = noclone(parameter(value=1))
     self.assertEqual(e.polynomial_degree(), 0)
     v = variable()
     v.value = 2
     e = noclone(v + 1)
     self.assertEqual(e.polynomial_degree(), 1)
     e = noclone(v**2 + v + 1)
     self.assertEqual(e.polynomial_degree(), 2)
     v.fix()
     self.assertEqual(e.polynomial_degree(), 0)
     e = noclone(v**v)
     self.assertEqual(e.polynomial_degree(), 0)
     v.free()
     self.assertEqual(e.polynomial_degree(), None)
Esempio n. 19
0
 def test_pprint(self):
     import pyomo.kernel
     # Not really testing what the output is, just that
     # an error does not occur. The pprint functionality
     # is still in the early stages.
     v = variable()
     e = noclone(v**2)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(e, indent=1)
     b = block()
     b.e = expression(expr=e)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     m = block()
     m.b = b
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     pyomo.kernel.pprint(m)
     # tests compatibility with _ToStringVisitor
     pyomo.kernel.pprint(noclone(v) + 1)
     pyomo.kernel.pprint(noclone(v + 1))
     x = variable()
     y = variable()
     pyomo.kernel.pprint(y + x * noclone(noclone(x * y)))
     pyomo.kernel.pprint(y + noclone(noclone(x * y)) * x)
Esempio n. 20
0
 def test_pprint(self):
     import pyomo.kernel
     # Not really testing what the output is, just that
     # an error does not occur. The pprint functionality
     # is still in the early stages.
     v = variable()
     e = noclone(v**2)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(e, indent=1)
     b = block()
     b.e = expression(expr=e)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     m = block()
     m.b = b
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     pyomo.kernel.pprint(m)
     # tests compatibility with _ToStringVisitor
     pyomo.kernel.pprint(noclone(v)+1)
     pyomo.kernel.pprint(noclone(v+1))
Esempio n. 21
0
 def test_division_behavior(self):
     # make sure integers involved in Pyomo expression
     # use __future__ behavior
     e = noclone(parameter(value=2))
     self.assertIs(type(e.expr), parameter)
     self.assertEqual((1 / e)(), 0.5)
     self.assertEqual((parameter(1) / e)(), 0.5)
     # since the type returned is int, this should result
     # in the behavior used by the interpreter
     if six.PY3:
         self.assertEqual((1 / e.expr()), 0.5)
     else:
         self.assertEqual((1 / e.expr()), 0)
Esempio n. 22
0
 def test_division_behavior(self):
     # make sure integers involved in Pyomo expression
     # use __future__ behavior
     e = noclone(parameter(value=2))
     self.assertIs(type(e.expr), parameter)
     self.assertEqual((1/e)(), 0.5)
     self.assertEqual((parameter(1)/e)(), 0.5)
     # since the type returned is int, this should result
     # in the behavior used by the interpreter
     if six.PY3:
         self.assertEqual((1/e.expr()), 0.5)
     else:
         self.assertEqual((1/e.expr()), 0)
Esempio n. 23
0
    def test_pickle(self):
        v = variable()
        e = noclone(v)
        self.assertEqual(type(e), noclone)
        self.assertIs(type(e.expr), variable)
        eup = pickle.loads(
            pickle.dumps(e))
        self.assertEqual(type(eup), noclone)
        self.assertTrue(e is not eup)
        self.assertIs(type(eup.expr), variable)
        self.assertIs(type(e.expr), variable)
        self.assertTrue(eup.expr is not e.expr)

        del e
        del v

        v = variable(value=1)
        b = block()
        b.v = v
        eraw = b.v + 1
        b.e = 1 + noclone(eraw)
        bup = pickle.loads(
            pickle.dumps(b))
        self.assertTrue(isinstance(bup.e, NumericValue))
        self.assertEqual(value(bup.e), 3.0)
        b.v.value = 2
        self.assertEqual(value(b.e), 4.0)
        self.assertEqual(value(bup.e), 3.0)
        bup.v.value = -1
        self.assertEqual(value(b.e), 4.0)
        self.assertEqual(value(bup.e), 1.0)

        self.assertIs(b.v.parent, b)
        self.assertIs(bup.v.parent, bup)

        del b.v
Esempio n. 24
0
 def test_to_string(self):
     b = block()
     p = parameter()
     e = noclone(p**2)
     self.assertEqual(str(e.expr), "<parameter>**2")
     self.assertEqual(str(e), "{(<parameter>**2)}")
     self.assertEqual(e.to_string(), "(<parameter>**2)")
     self.assertEqual(e.to_string(verbose=False), "(<parameter>**2)")
     self.assertEqual(e.to_string(verbose=True), "{pow(<parameter>, 2)}")
     b.e = e
     b.p = p
     self.assertNotEqual(p.name, None)
     self.assertEqual(e.to_string(verbose=True), "{pow(" + p.name + ", 2)}")
     self.assertEqual(e.to_string(verbose=True), "{pow(p, 2)}")
     del b.e
     del b.p
Esempio n. 25
0
 def test_to_string(self):
     b = block()
     p = parameter()
     e = noclone(p**2)
     self.assertEqual(str(e.expr), "<parameter>**2")
     self.assertEqual(str(e), "{(<parameter>**2)}")
     self.assertEqual(e.to_string(), "(<parameter>**2)")
     self.assertEqual(e.to_string(verbose=False), "(<parameter>**2)")
     self.assertEqual(e.to_string(verbose=True), "{pow(<parameter>, 2)}")
     b.e = e
     b.p = p
     self.assertNotEqual(p.name, None)
     self.assertEqual(e.to_string(verbose=True), "{pow("+p.name+", 2)}")
     self.assertEqual(e.to_string(verbose=True), "{pow(p, 2)}")
     del b.e
     del b.p
Esempio n. 26
0
 def test_pprint(self):
     import pyomo.kernel
     # Not really testing what the output is, just that
     # an error does not occur. The pprint functionality
     # is still in the early stages.
     v = variable()
     e = noclone(v**2)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(e, indent=1)
     b = block()
     b.e = expression(expr=e)
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     m = block()
     m.b = b
     pyomo.kernel.pprint(e)
     pyomo.kernel.pprint(b)
     pyomo.kernel.pprint(m)
Esempio n. 27
0
 def test_is_parameter_type(self):
     for obj in (variable(), parameter(), objective(),
                 expression(), data_expression()):
         self.assertEqual(noclone(obj).is_parameter_type(), False)
Esempio n. 28
0
 def test_args(self):
     e = noclone(parameter() + 1)
     self.assertEqual(e.nargs(), 1)
     self.assertTrue(e.arg(0) is e.expr)
Esempio n. 29
0
 def test_aruments(self):
     e = noclone(parameter() + 1)
     self.assertEqual(len(tuple(e.args)), 1)
     self.assertTrue(tuple(e.args)[0] is e.expr)
Esempio n. 30
0
 def test_aruments(self):
     e = noclone(parameter() + 1)
     self.assertEqual(len(tuple(e.args)), 1)
     self.assertTrue(tuple(e.args)[0] is e.expr)
Esempio n. 31
0
 def test_args(self):
     e = noclone(parameter() + 1)
     self.assertEqual(e.nargs(), 1)
     self.assertTrue(e.arg(0) is e.expr)
Esempio n. 32
0
 def test_is_parameter_type(self):
     for obj in (variable(), parameter(), objective(), expression(),
                 data_expression()):
         self.assertEqual(noclone(obj).is_parameter_type(), False)