Changeset 1975


Ignore:
Timestamp:
Dec 7, 2009 6:47:43 PM (11 years ago)
Author:
wehart
Message:

Bug fix. The ProductExpression? was not correctly testing for constant-ness.

Location:
coopr.pyomo/trunk/coopr/pyomo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • coopr.pyomo/trunk/coopr/pyomo/base/expr.py

    r1968 r1975  
    8585    #
    8686    def is_constant(self):
    87         if self._args is None:
    88             return True
    8987        for arg in self._args:
    9088            if not arg.is_constant():
     
    201199        self.coef = 1
    202200        Expression.__init__(self,nargs=-1,name='prod')
     201
     202    def is_constant(self):
     203        for arg in self._numerator:
     204            if not arg.is_constant():
     205                return False
     206        for arg in self._denominator:
     207            if not arg.is_constant():
     208                return False
     209        return True
    203210
    204211    def invert(self):
  • coopr.pyomo/trunk/coopr/pyomo/tests/unit/test_expr.py

    r1959 r1975  
    491491        def c11_rule(model):
    492492            return model.c == model.A+model.B
     493        def c15_rule(model):
     494            return model.A <= model.A*model.d
     495        def c16_rule(model):
     496            return model.A*model.d <= model.B
    493497
    494498        def c12_rule(model):
     
    533537        model.c10 = Constraint(rule=c10_rule)
    534538        model.c11 = Constraint(rule=c11_rule)
     539        model.c15 = Constraint(rule=c15_rule)
     540        model.c16 = Constraint(rule=c16_rule)
    535541
    536542        model.c12 = Constraint(rule=c12_rule)
  • coopr.pyomo/trunk/coopr/pyomo/tests/unit/varpprint.txt

    r1959 r1975  
    4040   o3 :         Size=0  Index= o3_index
    4141
    42 14 Constraint Declarations
     4216 Constraint Declarations
    4343   c1 :         Size=1
    4444        None
     
    7171                sum( c , -1 *  d )
    7272                Inf
     73   c15 :        Size=1
     74        None
     75                identity( A )
     76                prod( num=( A , d ) )
     77                Inf
     78   c16 :        Size=1
     79        None
     80                -Inf
     81                prod( num=( A , d ) )
     82                identity( B )
    7383   c2 :         Size=1
    7484        None
     
    120130                Inf
    121131
    122 24 Declarations: a b c d e A B o2 o3_index o3 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14
     13226 Declarations: a b c d e A B o2 o3_index o3 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c15 c16 c12 c13 c14
Note: See TracChangeset for help on using the changeset viewer.