Exemple #1
0
    def test_divide_by_mutable(self):
        #
        # Test from https://github.com/Pyomo/pyomo/issues/153
        #
        m = ConcreteModel()
        m.x = Var(bounds=(1, 5))
        m.p = Param(initialize=100, mutable=True)
        m.con = Constraint(expr=exp(5 * (1 / m.x - 1 / m.p)) <= 10)
        m.obj = Objective(expr=m.x**2)

        test = gar(m.con.body)
        self.assertEqual(test._constant, 0)
        self.assertEqual(test._linear_vars, {})
        self.assertEqual(test._linear_terms_coef, {})
        self.assertEqual(test._nonlinear_vars, {id(m.x): m.x})
        self.assertIs(test._nonlinear_expr, m.con.body)
Exemple #2
0
 def testSumCommutativeEquality(self):
     e1 = self.model.x + self.model.y
     e2 = self.model.y + self.model.x
     self.assertEqual(gar(e1), gar(e2))
Exemple #3
0
 def testSumEquality(self):
     expr = self.model.x + self.model.y
     self.assertEqual(gar(expr), gar(expr))
Exemple #4
0
 def testProductEquality(self):
     expr = self.model.x * self.model.y
     self.assertEqual(gar(expr), gar(expr))
Exemple #5
0
 def testFixedValueEquality(self):
     self.assertEqual(gar(MockFixedValue()), gar(MockFixedValue()))
Exemple #6
0
 def testVarInequality(self):
     self.assertNotEqual(gar(self.model.x), gar(self.model.y))
Exemple #7
0
 def testCantilvrObjective(self):
     # originally from pyomo.data.cute cantilvr model.
     # exposes problem in linear product handling, if present.
     expr = sum(self.model.z[i] for i in self.model.s) * 0.0624
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #8
0
 def testSumExpressionParam(self):
     expr = sum(value(self.model.q[i]) / self.model.z[i] ** 3 for i in self.model.s)
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #9
0
 def testSumCommutative(self):
     e1 = self.model.x + self.model.y
     e2 = self.model.y + self.model.x
     self.assertAmplRepnMatch(gar(e1), cgar(e2))
Exemple #10
0
 def testSum(self):
     expr = self.model.x + self.model.y
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #11
0
 def testProduct(self):
     expr = self.model.x * self.model.y
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #12
0
 def testVar(self):
     expr = self.model.x
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #13
0
 def testFixedValue(self):
     expr = MockFixedValue()
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #14
0
 def testCompoundSumEquality(self):
     expr = sum(self.model.z[i] for i in self.model.s) + self.model.x / self.model.y
     self.assertEqual(gar(expr), gar(expr))
Exemple #15
0
 def testSumEquality(self):
     expr = sum(self.model.z[i] for i in self.model.s)
     self.assertEqual(gar(expr), gar(expr))
Exemple #16
0
 def testSumExpression(self):
     expr = sum(self.model.w[i] / self.model.z[i] ** 3 for i in self.model.s)
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #17
0
 def testPow(self):
     expr = self.model.x ** 2
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #18
0
 def testCantilvrConstraintExpr(self):
     # originally from pyomo.data.cute cantilvr model.
     expr = sum(value(self.model.q[i]) / self.model.z[i] ** 3 for i in self.model.s) - 1.0
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #19
0
 def testIntrinsic(self):
     fns = [sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh, log, exp]
     for fn in fns:
         expr = fn(self.model.x)
         self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #20
0
 def testVarEquality(self):
     self.assertEqual(gar(self.model.x), gar(self.model.x))
Exemple #21
0
 def testCompound(self):
     expr = self.model.x + self.model.y + self.model.x * self.model.y
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #22
0
 def testVarCoefInequality(self):
     self.assertNotEqual(gar(self.model.x), gar(2.0 * self.model.x))
Exemple #23
0
 def testMoreCompound(self):
     expr = ((self.model.x + self.model.y) * self.model.x) ** 2
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #24
0
 def testFixedValueInequality(self):
     self.assertNotEqual(gar(MockFixedValue(1)), gar(MockFixedValue(2)))
Exemple #25
0
 def testQuotient(self):
     expr = self.model.x / self.model.y
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #26
0
 def testProductInequality(self):
     e1 = self.model.x * self.model.x
     e2 = self.model.y * self.model.y
     self.assertNotEqual(gar(e1), gar(e2))
Exemple #27
0
 def testCompoundQuotient(self):
     expr = self.model.y + self.model.x / self.model.y + self.model.y ** 2
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #28
0
 def testSumInequality(self):
     e1 = self.model.x + self.model.y
     e2 = self.model.x + self.model.x
     self.assertNotEqual(gar(e1), gar(e2))
Exemple #29
0
 def testSum(self):
     expr = sum(self.model.z[i] for i in self.model.s)
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #30
0
 def testCompoundSum(self):
     expr = sum(self.model.z[i] for i in self.model.s) + self.model.x / self.model.y
     self.assertAmplRepnMatch(gar(expr), cgar(expr))
Exemple #31
0
 def testQuotientInequality(self):
     e1 = self.model.x / self.model.y
     e2 = self.model.y / self.model.x
     self.assertNotEqual(gar(e1), gar(e2))