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)
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
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)
def test_const1(self): val = NumericConstant(1.0) self.assertEqual(1.0, value(val))
def test_const1(self): val = NumericConstant(1.0) self.assertFalse(is_potentially_variable(val))
def test_const1(self): val = NumericConstant(1.0) self.assertFalse(is_variable_type(val))
def test_const1(self): val = NumericConstant(1.0) self.assertTrue(is_fixed(val))
def test_const2(self): val = NumericConstant('foo') self.assertTrue(is_constant(val))
def test_const4(self): val = NumericConstant(pyutilib.math.infinity) self.assertEqual(0, polynomial_degree(val))
def test_const1(self): val = NumericConstant(1.0) self.assertEqual(0, polynomial_degree(val))
def test_const4(self): val = NumericConstant(pyutilib.math.infinity) self.assertEqual(id(pyutilib.math.infinity), id(value(val)))
def test_const3(self): val = NumericConstant(pyutilib.math.nan) self.assertEqual(id(pyutilib.math.nan), id(value(val)))
def test_NumericValue(self): self.assertEqual(is_numeric_data(NumericConstant(1.0)), True)
def test_const4(self): val = NumericConstant(inf) self.assertEqual(id(inf), id(value(val)))
def test_const3(self): val = NumericConstant(nan) self.assertEqual(id(nan), id(value(val)))
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)