예제 #1
0
 def test_iis_no_variable_values(self):
     with pyomo.opt.ReaderFactory("sol") as reader:
         if reader is None:
             raise IOError("Reader 'sol' is not registered")
         result = reader(currdir+"iis_no_variable_values.sol", suffixes=["iis"])
         soln = result.solution(0)
         self.assertEqual(len(list(soln.variable['v0'].keys())), 1)
         self.assertEqual(soln.variable['v0']['iis'], 1)
         self.assertEqual(len(list(soln.variable['v1'].keys())), 1)
         self.assertEqual(soln.variable['v1']['iis'], 1)
         self.assertEqual(len(list(soln.constraint['c0'].keys())), 1)
         self.assertEqual(soln.constraint['c0']['Iis'], 4)
         import pyomo.kernel as pmo
         m = pmo.block()
         m.v0 = pmo.variable()
         m.v1 = pmo.variable()
         m.c0 = pmo.constraint()
         m.iis = pmo.suffix(direction=pmo.suffix.IMPORT)
         from pyomo.core.expr.symbol_map import SymbolMap
         soln.symbol_map = SymbolMap()
         soln.symbol_map.addSymbol(m.v0, 'v0')
         soln.symbol_map.addSymbol(m.v1, 'v1')
         soln.symbol_map.addSymbol(m.c0, 'c0')
         m.load_solution(soln)
         pmo.pprint(m.iis)
         self.assertEqual(m.iis[m.v0], 1)
         self.assertEqual(m.iis[m.v1], 1)
         self.assertEqual(m.iis[m.c0], 4)
예제 #2
0
    def get_mock_model_with_priorities(self):
        m = pmo.block()
        m.x = pmo.variable(domain=Integers)
        m.s = range(10)

        m.y = pmo.variable_list(pmo.variable(domain=Integers) for _ in m.s)

        m.o = pmo.objective(expr=m.x + sum(m.y), sense=minimize)
        m.c = pmo.constraint(expr=m.x >= 1)
        m.c2 = pmo.constraint(expr=quicksum(m.y[i] for i in m.s) >= 10)

        m.priority = pmo.suffix(direction=Suffix.EXPORT, datatype=Suffix.INT)
        m.direction = pmo.suffix(direction=Suffix.EXPORT, datatype=Suffix.INT)

        m.priority[m.x] = 1
        m.priority[m.y] = 2
        m.direction[m.y] = BranchDirection.down
        m.direction[m.y[-1]] = BranchDirection.up
        return m
예제 #3
0
파일: base.py 프로젝트: Pyomo/pyomo
 def generate_model(self, import_suffixes=[]):
     """ Generate the model """
     self._generate_model()
     # Add suffixes
     self.test_suffixes = [] if self.disable_suffix_tests else \
                     import_suffixes
     if isinstance(self.model, IBlock):
         for suffix in self.test_suffixes:
             setattr(self.model, suffix, pmo.suffix(direction=pmo.suffix.IMPORT))
     else:
         for suffix in self.test_suffixes:
             setattr(self.model, suffix, Suffix(direction=Suffix.IMPORT))
예제 #4
0
파일: base.py 프로젝트: sgjkkx/pyomo
 def generate_model(self, import_suffixes=[]):
     """ Generate the model """
     self._generate_model()
     # Add suffixes
     self.test_suffixes = [] if self.disable_suffix_tests else \
                     import_suffixes
     if isinstance(self.model, IBlockStorage):
         for suffix in self.test_suffixes:
             setattr(self.model, suffix, pmo.suffix(direction=pmo.suffix.IMPORT))
     else:
         for suffix in self.test_suffixes:
             setattr(self.model, suffix, Suffix(direction=Suffix.IMPORT))
예제 #5
0
파일: test_kernel.py 프로젝트: Pyomo/pyomo
 def test_type_hack(self):
     for obj in [pmo.variable(),
                 pmo.constraint(),
                 pmo.objective(),
                 pmo.expression(),
                 pmo.parameter(),
                 pmo.suffix(),
                 pmo.sos([]),
                 pmo.block()]:
         ctype = obj.ctype
         self.assertIs(obj.__class__._ctype, ctype)
         self.assertIs(obj.type(), ctype)
예제 #6
0
 def test_type_hack(self):
     for obj in [
             pmo.variable(),
             pmo.constraint(),
             pmo.objective(),
             pmo.expression(),
             pmo.parameter(),
             pmo.suffix(),
             pmo.sos([]),
             pmo.block()
     ]:
         ctype = obj.ctype
         self.assertIs(obj.__class__._ctype, ctype)
         self.assertIs(obj.type(), ctype)
import pyomo.kernel as pmo

#
# Suffixes
#

# collect dual information when the model is solved
b = pmo.block()
b.x = pmo.variable()
b.c = pmo.constraint(expr=b.x >= 1)
b.o = pmo.objective(expr=b.x)
b.dual = pmo.suffix(direction=pmo.suffix.IMPORT)

# suffixes behave as dictionaries that map
# components to values
s = pmo.suffix()
assert len(s) == 0

v = pmo.variable()
s[v] = 2
assert len(s) == 1
assert bool(v in s) == True
assert s[v] == 2

# error (a dict / list container is not a component)
vlist = pmo.variable_list()
s[vlist] = 1
예제 #8
0
# @SOS_single
# @SOS_dict
m.sd = pmo.sos_dict()
m.sd[1] = pmo.sos1(m.vd.values())
m.sd[2] = pmo.sos1(m.vl)

# @SOS_dict
# @SOS_list
# uses 0-based indexing
m.sl = pmo.sos_list()
for i in m.s:
    m.sl.append(pmo.sos1([m.vl[i], m.vd[i]]))
# @SOS_list

# @Suffix_single
m.dual = pmo.suffix(direction=pmo.suffix.IMPORT)
# @Suffix_single
# @Suffix_dict
m.suffixes = pmo.suffix_dict()
m.suffixes['dual'] = pmo.suffix(direction=pmo.suffix.IMPORT)
# @Suffix_dict

# @Piecewise_1d
breakpoints = [1, 2, 3, 4]
values = [1, 2, 1, 2]
m.f = pmo.variable()
m.pw = pmo.piecewise(breakpoints, values, input=m.v, output=m.f, bound='eq')
# @Piecewise_1d

pmo.pprint(m)
예제 #9
0


# @SOS_dict
# @SOS_list
# uses 0-based indexing
m.sl = pmo.sos_list()
for i in m.s:
    m.sl.append(pmo.sos1(
        [m.vl[i], m.vd[i]]))
# @SOS_list



# @Suffix_single
m.dual = pmo.suffix(
    direction=pmo.suffix.IMPORT)
# @Suffix_single
# @Suffix_dict
m.suffixes = pmo.suffix_dict()
m.suffixes['dual'] = pmo.suffix(
    direction=pmo.suffix.IMPORT)
# @Suffix_dict



# @Piecewise_1d
breakpoints = [1,2,3,4]
values = [1,2,1,2]
m.f = pmo.variable()
m.pw = pmo.piecewise(
    breakpoints,