Exemple #1
0
    def test_identify_mutable_parameters_constants(self):
        #
        # ScalarParams and NumericConstants are not recognized
        #
        m = ConcreteModel()
        m.x = Var(initialize=1)
        m.x.fix()
        m.p = Param(initialize=2, mutable=False)
        m.p_m = Param(initialize=3, mutable=True)
        e1 = (m.x + m.p + NumericConstant(5))
        self.assertEqual(list(identify_mutable_parameters(e1)), [])

        e2 = (5 * m.x + NumericConstant(3) * m.p_m + m.p == 0)
        mut_params = list(identify_mutable_parameters(e2))
        self.assertEqual(len(mut_params), 1)
        self.assertIs(mut_params[0], m.p_m)
Exemple #2
0
    def visiting_potential_leaf(self, node):
        #
        # Clone leaf nodes in the expression tree
        #
        if node.__class__ in native_numeric_types:
            # print(node, type(node))
            # print('native_numeric_type\t', node, type(node))
            return True, node

        if node.__class__ is NumericConstant:
            # print('NumericConstant\t', node, type(node))
            return True, node

        if node.is_variable_type():
            s0, s1, time = self.idxf(node)
            if time is None:
                d = self.d[(s0, s1), -1]
                return True, d
            else:
                d = self.d[(s0, s1), time]
                return True, d

        if node.is_parameter_type():  #: gotta fix that
            n_val = value(node)
            n = NumericConstant(value(node))  #: this one works :S
            return True, n

        return False, None
Exemple #3
0
 def __init__(self, component):
     BaseRelaxationData.__init__(self, component)
     self._cref = ComponentWeakRef(None)
     self._sref = ComponentWeakRef(None)
     self._vmsq_1_ref = ComponentWeakRef(None)
     self._vmsq_2_ref = ComponentWeakRef(None)
     self._aux_var = NumericConstant(0)
Exemple #4
0
 def test_const1(self):
     val = NumericConstant(1.0)
     self.assertEqual(1.0, value(val))
Exemple #5
0
 def test_const1(self):
     val = NumericConstant(1.0)
     self.assertFalse(is_potentially_variable(val))
Exemple #6
0
 def test_const1(self):
     val = NumericConstant(1.0)
     self.assertFalse(is_variable_type(val))
Exemple #7
0
 def test_const1(self):
     val = NumericConstant(1.0)
     self.assertTrue(is_fixed(val))
Exemple #8
0
 def test_const2(self):
     val = NumericConstant('foo')
     self.assertTrue(is_constant(val))
Exemple #9
0
 def test_const4(self):
     val = NumericConstant(pyutilib.math.infinity)
     self.assertEqual(0, polynomial_degree(val))
Exemple #10
0
 def test_const1(self):
     val = NumericConstant(1.0)
     self.assertEqual(0, polynomial_degree(val))
Exemple #11
0
 def test_const4(self):
     val = NumericConstant(pyutilib.math.infinity)
     self.assertEqual(id(pyutilib.math.infinity), id(value(val)))
Exemple #12
0
 def test_const3(self):
     val = NumericConstant(pyutilib.math.nan)
     self.assertEqual(id(pyutilib.math.nan), id(value(val)))
Exemple #13
0
 def test_NumericValue(self):
     self.assertEqual(is_numeric_data(NumericConstant(1.0)), True)
Exemple #14
0
 def test_const4(self):
     val = NumericConstant(inf)
     self.assertEqual(id(inf), id(value(val)))
Exemple #15
0
 def test_const3(self):
     val = NumericConstant(nan)
     self.assertEqual(id(nan), id(value(val)))
Exemple #16
0
    def test_as_quantity_scalar(self):
        _pint = units._pint_registry
        Quantity = _pint.Quantity
        m = ConcreteModel()
        m.x = Var(initialize=1)
        m.y = Var(initialize=2, units=units.g)
        m.p = Param(initialize=3)
        m.q = Param(initialize=4, units=1 / units.s)
        m.b = BooleanVar(initialize=True)

        q = as_quantity(0)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 0 * _pint.dimensionless)

        q = as_quantity(None)
        self.assertIs(q.__class__, None.__class__)
        self.assertEqual(q, None)

        q = as_quantity(str('aaa'))
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 'aaa' * _pint.dimensionless)

        q = as_quantity(True)
        self.assertIs(q.__class__, bool)
        self.assertEqual(q, True)

        q = as_quantity(units.kg)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 1 * _pint.kg)

        q = as_quantity(NumericConstant(5))
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 5 * _pint.dimensionless)

        q = as_quantity(m.x)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 1 * _pint.dimensionless)

        q = as_quantity(m.y)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 2 * _pint.g)

        q = as_quantity(m.p)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 3 * _pint.dimensionless)

        q = as_quantity(m.q)
        self.assertIs(q.__class__, Quantity)
        self.assertEqual(q, 4 / _pint.s)

        q = as_quantity(m.b)
        self.assertIs(q.__class__, bool)
        self.assertEqual(q, True)

        class UnknownPyomoType(object):
            def is_expression_type(self):
                return False

            def is_numeric_type(self):
                return False

            def is_logical_type(self):
                return False

        other = UnknownPyomoType()
        q = as_quantity(other)
        self.assertIs(q.__class__, UnknownPyomoType)
        self.assertIs(q, other)