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)
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
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))
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))
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)
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
# @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)
# @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,