def test_associativity(self): x = parameter() y = parameter() pyomo.kernel.pprint( y + x*data_expression(data_expression(x*y))) pyomo.kernel.pprint( y + data_expression(data_expression(x*y))*x)
def test_build_linking_constraints(self): c = _build_linking_constraints([], []) self.assertIs(type(c), constraint_tuple) self.assertEqual(len(c), 0) v = [1, data_expression(), variable(), expression(expr=1.0)] vaux = [variable(), variable(), variable(), variable()] c = _build_linking_constraints(v, vaux) self.assertIs(type(c), constraint_tuple) self.assertEqual(len(c), 4) self.assertIs(type(c[0]), linear_constraint) self.assertEqual(c[0].rhs, 1) self.assertEqual(len(list(c[0].terms)), 1) self.assertIs(list(c[0].terms)[0][0], vaux[0]) self.assertEqual(list(c[0].terms)[0][1], 1) self.assertIs(type(c[1]), linear_constraint) self.assertIs(c[1].rhs, v[1]) self.assertEqual(len(list(c[1].terms)), 1) self.assertIs(list(c[1].terms)[0][0], vaux[1]) self.assertEqual(list(c[1].terms)[0][1], 1) self.assertIs(type(c[2]), linear_constraint) self.assertEqual(c[2].rhs, 0) self.assertEqual(len(list(c[2].terms)), 2) self.assertIs(list(c[2].terms)[0][0], vaux[2]) self.assertEqual(list(c[2].terms)[0][1], 1) self.assertIs(list(c[2].terms)[1][0], v[2]) self.assertEqual(list(c[2].terms)[1][1], -1) self.assertIs(type(c[3]), constraint) self.assertEqual(c[3].rhs, 0) from pyomo.repn import generate_standard_repn repn = generate_standard_repn(c[3].body) self.assertEqual(len(repn.linear_vars), 1) self.assertIs(repn.linear_vars[0], vaux[3]) self.assertEqual(repn.linear_coefs[0], 1) self.assertEqual(repn.constant, -1)
def test_bad_alpha_type(self): c = dual_power( r1=variable(lb=0), r2=variable(lb=0), x=[variable(), variable()], alpha=parameter()) c = dual_power( r1=variable(lb=0), r2=variable(lb=0), x=[variable(), variable()], alpha=data_expression()) with self.assertRaises(TypeError): c = dual_power( r1=variable(lb=0), r2=variable(lb=0), x=[variable(), variable()], alpha=variable()) with self.assertRaises(TypeError): c = dual_power( r1=variable(lb=0), r2=variable(lb=0), x=[variable(), variable()], alpha=expression())
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)
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)
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)
def test_bad_weights(self): v = variable() with self.assertRaises(ValueError): s = sos([v], weights=[v]) v.fix(1.0) with self.assertRaises(ValueError): s = sos([v], weights=[v]) e = expression() with self.assertRaises(ValueError): s = sos([v], weights=[e]) de = data_expression() s = sos([v], weights=[de]) p = parameter() s = sos([v], weights=[p])
def test_build_linking_constraints(self): c = _build_linking_constraints([],[]) self.assertIs(type(c), constraint_tuple) self.assertEqual(len(c), 0) c = _build_linking_constraints([None],[variable()]) self.assertIs(type(c), constraint_tuple) self.assertEqual(len(c), 0) v = [1, data_expression(), variable(), expression(expr=1.0)] vaux = [variable(), variable(), variable(), variable()] c = _build_linking_constraints(v, vaux) self.assertIs(type(c), constraint_tuple) self.assertEqual(len(c), 4) self.assertIs(type(c[0]), linear_constraint) self.assertEqual(c[0].rhs, 1) self.assertEqual(len(list(c[0].terms)), 1) self.assertIs(list(c[0].terms)[0][0], vaux[0]) self.assertEqual(list(c[0].terms)[0][1], 1) self.assertIs(type(c[1]), linear_constraint) self.assertIs(c[1].rhs, v[1]) self.assertEqual(len(list(c[1].terms)), 1) self.assertIs(list(c[1].terms)[0][0], vaux[1]) self.assertEqual(list(c[1].terms)[0][1], 1) self.assertIs(type(c[2]), linear_constraint) self.assertEqual(c[2].rhs, 0) self.assertEqual(len(list(c[2].terms)), 2) self.assertIs(list(c[2].terms)[0][0], vaux[2]) self.assertEqual(list(c[2].terms)[0][1], 1) self.assertIs(list(c[2].terms)[1][0], v[2]) self.assertEqual(list(c[2].terms)[1][1], -1) self.assertIs(type(c[3]), constraint) self.assertEqual(c[3].rhs, 0) from pyomo.repn import generate_standard_repn repn = generate_standard_repn(c[3].body) self.assertEqual(len(repn.linear_vars), 1) self.assertIs(repn.linear_vars[0], vaux[3]) self.assertEqual(repn.linear_coefs[0], 1) self.assertEqual(repn.constant, -1)
def test_ctype(self): e = data_expression() self.assertIs(e.ctype, IExpression) self.assertIs(type(e), data_expression) self.assertIs(type(e)._ctype, IExpression)
def test_is_parameter_type(self): for obj in (variable(), parameter(), objective(), expression(), data_expression()): self.assertEqual(noclone(obj).is_parameter_type(), False)