Changeset 3066


Ignore:
Timestamp:
Oct 3, 2010 12:13:02 AM (11 years ago)
Author:
wehart
Message:

Adding logic to verify parameter values and indices when
initializing data.

Location:
coopr.pyomo/trunk
Files:
7 edited

Legend:

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

    r2916 r3066  
    287287                self.pprint()
    288288
     289            #declaration.construct(data)
    289290            try:
    290291                declaration.construct(data)
  • coopr.pyomo/trunk/coopr/pyomo/base/indexed_component.py

    r2865 r3066  
    99
    1010    def __init__(self, *args, **kwds):
    11         #
     11        #
    1212        # The default ctype is None, which triggers an error in the
    13         # Component base class.
    14         #
     13        # Component base class.
     14        #
    1515        component_type = kwds.get('ctype', None)
    1616        Component.__init__(self, component_type)
  • coopr.pyomo/trunk/coopr/pyomo/base/param.py

    r3042 r3066  
    255255                            tmpkey=key
    256256
     257                        self._valid_indexed_value(data[key],key,True)
    257258                        self._paramval[tmpkey] = _ParamValue(
    258259                          name   = create_name(_name,key),
     
    260261                          value  = data[key]
    261262                        )
    262                         self._valid_indexed_value(data[key],key,True)
    263 
     263                #
    264264                # Initialize with initialization data.
    265265                #
     
    284284                              value=self._initialize
    285285                            )
    286                         self._valid_indexed_value(self._initialize,(),True)
     286                        for key in self._index:
     287                            self._valid_indexed_value(self._initialize,key,True)
     288                            # Only apply this test once
     289                            break
    287290        #
    288291        # Construct using the rule
     
    321324
    322325    def _valid_indexed_value(self,value,index, use_exception):
     326        if index is ():
     327            if None not in self._index:
     328                msg = "Invalid index '%s' for parameter '%s'"
     329                raise ValueError, msg % ( str(None), self.name )
     330        elif type(index) is tuple and len(index)==1:
     331            if index not in self._index and index[0] not in self._index:
     332                msg = "Invalid index '%s' for parameter '%s'"
     333                raise ValueError, msg % ( str(index[0]), self.name)
     334        elif index not in self._index:
     335            msg = "Invalid index '%s' for parameter '%s'"
     336            raise ValueError, msg % ( str(index), self.name)
     337        #
    323338        if self._validate is not None:
    324339           tmp = [value]
     
    335350        elif self.domain is None or value in self.domain:
    336351           return True
    337 
     352        #
    338353        if use_exception:           #pragma:nocover
    339354            msg = "Invalid value '%s' for parameter '%s'"
    340355            raise ValueError, msg % ( str(value), self.name )
    341 
     356        #
    342357        return False
    343358
  • coopr.pyomo/trunk/coopr/pyomo/tests/unit/test_modeldata.py

    r2463 r3066  
    427427        pyutilib.misc.reset_redirect()
    428428        model=Model()
    429         model.A = Set()
     429        model.A = Set(initialize=['A1','A2','A3'])
    430430        model.X = Param(model.A)
    431431        model.W = Param(model.A)
    432432        instance = model.create(currdir+'importXW.dat')
    433         self.failUnlessEqual(instance.A.data(), set())
    434433        self.failUnlessEqual(instance.X.data(), {'A1':3.3,'A2':3.4,'A3':3.5})
    435434        self.failUnlessEqual(instance.W.data(), {'A1':4.3,'A2':4.4,'A3':4.5})
     
    472471        pyutilib.misc.reset_redirect()
    473472        model=Model()
    474         model.A = Set()
    475         model.B = Set()
     473        model.B = Set(initialize=['I1','I2','I3','I4'])
     474        model.A = Set(initialize=['A1','A2','A3'])
    476475        model.T = Param(model.A, model.B)
    477476        instance = model.create(currdir+'importT.dat')
     
    485484        pyutilib.misc.reset_redirect()
    486485        model=Model()
    487         model.A = Set()
    488         model.B = Set()
     486        model.A = Set(initialize=['I1','I2','I3','I4'])
     487        model.B = Set(initialize=['A1','A2','A3'])
    489488        model.U = Param(model.A, model.B)
    490489        instance = model.create(currdir+'importU.dat')
     
    645644        pyutilib.misc.reset_redirect()
    646645        model=Model()
    647         model.A = Set()
     646        model.A = Set(initialize=['A1','A2','A3'])
    648647        model.X = Param(model.A)
    649648        model.W = Param(model.A)
    650649        instance = model.create(currdir+'importXW.dat')
    651         self.failUnlessEqual(instance.A.data(), set())
    652650        self.failUnlessEqual(instance.X.data(), {'A1':3.3,'A2':3.4,'A3':3.5})
    653651        self.failUnlessEqual(instance.W.data(), {'A1':4.3,'A2':4.4,'A3':4.5})
     
    690688        pyutilib.misc.reset_redirect()
    691689        model=Model()
    692         model.A = Set()
    693         model.B = Set()
     690        model.B = Set(initialize=['I1','I2','I3','I4'])
     691        model.A = Set(initialize=['A1','A2','A3'])
    694692        model.T = Param(model.A, model.B)
    695693        instance = model.create(currdir+'importT.dat')
     
    703701        pyutilib.misc.reset_redirect()
    704702        model=Model()
    705         model.A = Set()
    706         model.B = Set()
     703        model.A = Set(initialize=['I1','I2','I3','I4'])
     704        model.B = Set(initialize=['A1','A2','A3'])
    707705        model.U = Param(model.A, model.B)
    708706        instance = model.create(currdir+'importU.dat')
     
    10741072        md.add(os.path.abspath(example_dir+'XW.tab'), index=['A'], param=['X','W'])
    10751073        model=Model()
    1076         model.A = Set()
     1074        model.A = Set(initialize=['A1','A2','A3'])
    10771075        model.X = Param(model.A)
    10781076        model.W = Param(model.A)
    10791077        md.read(model)
    10801078        instance = model.create(md)
    1081         self.failUnlessEqual(instance.A.data(), set())
    10821079        self.failUnlessEqual(instance.X.data(), {'A1':3.3,'A2':3.4,'A3':3.5})
    10831080        self.failUnlessEqual(instance.W.data(), {'A1':4.3,'A2':4.4,'A3':4.5})
     
    11161113        md.add(os.path.abspath(example_dir+'T.tab'), format='transposed_array', param='T')
    11171114        model=Model()
    1118         model.A = Set()
    1119         model.B = Set()
     1115        model.B = Set(initialize=['I1','I2','I3','I4'])
     1116        model.A = Set(initialize=['A1','A2','A3'])
    11201117        model.T = Param(model.A, model.B)
    11211118        md.read(model)
     
    11281125        md.add(os.path.abspath(example_dir+'T.tab'), format='array', param='U')
    11291126        model=Model()
    1130         model.A = Set()
    1131         model.B = Set()
     1127        model.A = Set(initialize=['I1','I2','I3','I4'])
     1128        model.B = Set(initialize=['A1','A2','A3'])
    11321129        model.U = Param(model.A, model.B)
    11331130        md.read(model)
  • coopr.pyomo/trunk/examples/pyomo/tutorials/param.dat

    r899 r3066  
    2121;
    2222
    23 param X: 2 4 6 8 :=
    24 1 1.3 2.3 3.3 4.3
    25 2 1.4 2.4 3.4 4.4
    26 3 1.5 2.5 3.5 4.5
     23param X: 1 2 3 :=
     242 1.3 1.4 1.5
     254 2.3 2.4 2.5
     266 3.3 3.4 3.5
     278 4.3 4.4 4.5
    2728;
    2829
  • coopr.pyomo/trunk/examples/pyomo/tutorials/param.out

    r2865 r3066  
    20209 Param Declarations
    2121   R :  Size=12         Domain=Any
     22        (2, 1) : 1
    2223        (2, 2) : 1
    23         (2, 4) : 1
    24         (2, 6) : 1
    25         (2, 8) : 1
    26         default:99.0
     24        (2, 3) : 1
     25        default: 99.0
    2726   S :  Size=1  Domain=Any
    2827        2
     
    4948        (8, 3) : 24
    5049   X :  Size=12         Domain=Any
    51         (1, 2) : 1.3
    52         (1, 4) : 2.3
    53         (1, 6) : 3.3
    54         (1, 8) : 4.3
     50        (2, 1) : 1.3
    5551        (2, 2) : 1.4
    56         (2, 4) : 2.4
    57         (2, 6) : 3.4
    58         (2, 8) : 4.4
    59         (3, 2) : 1.5
    60         (3, 4) : 2.5
    61         (3, 6) : 3.5
    62         (3, 8) : 4.5
     52        (2, 3) : 1.5
     53        (4, 1) : 2.3
     54        (4, 2) : 2.4
     55        (4, 3) : 2.5
     56        (6, 1) : 3.3
     57        (6, 2) : 3.4
     58        (6, 3) : 3.5
     59        (8, 1) : 4.3
     60        (8, 2) : 4.4
     61        (8, 3) : 4.5
    6362   Y :  Size=4  Domain=Any
    6463        2 : 3.3
  • coopr.pyomo/trunk/examples/pyomo/tutorials/param.py

    r909 r3066  
    6464V_init[2]=2
    6565V_init[3]=9
    66 model.V = Param(model.A, initialize=V_init)
     66model.V = Param(model.B, initialize=V_init)
    6767#
    6868# Note that parameter V is initialized with a dictionary, which maps
     
    103103#
    104104R_init={}
     105R_init[2,1]=1
    105106R_init[2,2]=1
    106 R_init[2,4]=1
    107 R_init[2,6]=1
    108 R_init[2,8]=1
     107R_init[2,3]=1
    109108model.R = Param(model.A, model.B, default=99.0, initialize=R_init)
    110109#
Note: See TracChangeset for help on using the changeset viewer.