def define_model(**kwds): sense = kwds.pop("sense") m = pmo.block() m.x = pmo.variable_list() m.Fx = pmo.variable_list() m.piecewise = pmo.block_list() for i in range(4): m.x.append(pmo.variable(lb=0, ub=3)) m.Fx.append(pmo.variable()) m.piecewise.append( pmo.piecewise(breakpoints, values, input=m.x[i], output=m.Fx[i], **kwds)) m.obj = pmo.objective(expr=sum(m.Fx) + sum(m.x), sense=sense) # fix the answer for testing purposes m.set_answer = pmo.constraint_list() # Fx1 should solve to 0 m.set_answer.append(pmo.constraint(expr= m.x[0] == 0.5)) m.set_answer.append(pmo.constraint(expr= m.x[1] == 1.0)) m.set_answer.append(pmo.constraint(expr= m.Fx[1] == 0.5)) # Fx[2] should solve to 1 m.set_answer.append(pmo.constraint(expr= m.x[2] == 1.5)) # Fx[3] should solve to 1.5 m.set_answer.append(pmo.constraint(expr= m.x[3] == 2.5)) return m
def define_model(**kwds): sense = kwds.pop("sense") m = pmo.block() m.x = pmo.variable_list() m.Fx = pmo.variable_list() m.piecewise = pmo.block_list() for i in range(7): m.x.append(pmo.variable(lb=-5, ub=4)) m.Fx.append(pmo.variable()) m.piecewise.append( pmo.piecewise(breakpoints, values, input=m.x[i], output=m.Fx[i], **kwds)) m.obj = pmo.objective(expr=sum(m.Fx), sense=sense) # fix the answer for testing purposes m.set_answer = pmo.constraint_list() m.set_answer.append(pmo.constraint(m.x[0] == -5.0)) m.set_answer.append(pmo.constraint(m.x[1] == -3.0)) m.set_answer.append(pmo.constraint(m.x[2] == -2.5)) m.set_answer.append(pmo.constraint(m.x[3] == -1.5)) m.set_answer.append(pmo.constraint(m.x[4] == 2.0)) m.set_answer.append(pmo.constraint(m.x[5] == 3.5)) m.set_answer.append(pmo.constraint(m.x[6] == 4.0)) return m
def define_model(**kwds): sense = kwds.pop("sense") m = block() m.x = variable_list() m.Fx = variable_list() m.piecewise = block_list() for i in range(4): m.x.append(variable(lb=0, ub=6)) m.Fx.append(variable()) m.piecewise.append( piecewise(breakpoints, values, input=m.x[i], output=m.Fx[i], **kwds)) m.obj = objective(expr=sum(m.Fx), sense=sense) # fix the answer for testing purposes m.set_answer = constraint_list() m.set_answer.append(constraint(m.x[0] == 0.0)) m.set_answer.append(constraint(m.x[1] == 3.0)) m.set_answer.append(constraint(m.x[2] == 5.5)) m.set_answer.append(constraint(m.x[3] == 6.0)) return m
def test_component_map_hack(self): m = pmo.block() m.v = pmo.variable() m.c = pmo.constraint() m.B = pmo.block_list() m.B.append(pmo.block()) m.B[0].v = pmo.variable() m.B[0].c = pmo.constraint() m.b = pmo.block() m.b.v = pmo.variable() m.b.c = pmo.constraint() self.assertTrue(type(m.component_map()) == dict)
def build_block_list_with_variables(): blist = block_list() for i in range(N): b = block() b._activate_large_storage_mode() b.x1 = variable(domain_type=None, lb=None, ub=None) b.x2 = variable(domain_type=None, lb=None, ub=None) b.x3 = variable(domain_type=None, lb=None, ub=None) b.x4 = variable(domain_type=None, lb=None, ub=None) b.x5 = variable(domain_type=None, lb=None, ub=None) blist.append(b) return blist
def build_block_list_with_variables(): blist = block_list() for i in range(N): b = block() b.x1 = variable(domain_type=None, lb=None, ub=None) b.x2 = variable(domain_type=None, lb=None, ub=None) b.x3 = variable(domain_type=None, lb=None, ub=None) b.x4 = variable(domain_type=None, lb=None, ub=None) b.x5 = variable(domain_type=None, lb=None, ub=None) b.x6 = variable(domain_type=None, lb=None, ub=None) b.x7 = variable(domain_type=None, lb=None, ub=None) b.x8 = variable(domain_type=None, lb=None, ub=None) blist.append(b) return blist
def test_component_objects_hack(self): m = pmo.block() m.v = pmo.variable() m.c = pmo.constraint() m.B = pmo.block_list() m.B.append(pmo.block()) m.B[0].v = pmo.variable() m.B[0].c = pmo.constraint() m.b = pmo.block() m.b.v = pmo.variable() m.b.c = pmo.constraint() for obj1, obj2 in zip(m.components(), m.component_objects()): self.assertIs(obj1, obj2)
def build_small_block_list_with_staticvariables(): return block_list(build_small_block_list_with_staticvariables.myblock() for i in range(N))
def build_tiny_block_list_with_variables(): return block_list(build_tiny_block_list_with_variables.myblock() for i in range(N))
_ctype = IJunk _model = pmo.block() _model.v = pmo.variable() _model.V = pmo.variable_list() _model.V.append(pmo.variable()) _model.V.append(pmo.variable_list()) _model.V[1].append(pmo.variable()) _model.c = pmo.constraint() _model.C = pmo.constraint_list() _model.C.append(pmo.constraint()) _model.C.append(pmo.constraint_list()) _model.C[1].append(pmo.constraint()) b_clone = _model.clone() _model.b = b_clone.clone() _model.B = pmo.block_list() _model.B.append(b_clone.clone()) _model.B.append(pmo.block_list()) _model.B[1].append(b_clone.clone()) del b_clone _model.j = junk() _model.J = junk_list() _model.J.append(junk()) _model.J.append(junk_list()) _model.J[1].append(junk()) _model.J[1][0].b = pmo.block() _model.J[1][0].b.v = pmo.variable() model_clone = _model.clone() _model.k = pmo.block() _model.K = pmo.block_list() _model.K.append(model_clone.clone())
def build_small_block_list_with_staticvariables(): return block_list( build_small_block_list_with_staticvariables.myblock() for i in range(N))
# vd = pmo.variable_dict( ((str(i), pmo.variable()) for i in range(10))) cd = pmo.constraint_dict( (i, pmo.constraint(v == 1)) for i,v in vd.items()) cd = pmo.constraint_dict() for i, v in vd.items(): cd[i] = pmo.constraint(v == 1) cd = pmo.constraint_dict() cd.update((i, pmo.constraint()) for i,v in vd.items()) cd[None] = pmo.constraint() del cd[None] # # Nesting containers # b = pmo.block() b.bd = pmo.block_dict() b.bd[None] = pmo.block_dict() b.bd[None][1] = pmo.block() b.bd[None][1].x = pmo.variable() b.bd['a'] = pmo.block_list() b.bd['a'].append(pmo.block())
_model = pmo.block() _model.v = pmo.variable() _model.V = pmo.variable_list() _model.V.append(pmo.variable()) _model.V.append(pmo.variable_list()) _model.V[1].append(pmo.variable()) _model.c = pmo.constraint() _model.C = pmo.constraint_list() _model.C.append(pmo.constraint()) _model.C.append(pmo.constraint_list()) _model.C[1].append(pmo.constraint()) b_clone = _model.clone() _model.b = b_clone.clone() _model.B = pmo.block_list() _model.B.append(b_clone.clone()) _model.B.append(pmo.block_list()) _model.B[1].append(b_clone.clone()) del b_clone _model.j = junk() _model.J = junk_list() _model.J.append(junk()) _model.J.append(junk_list()) _model.J[1].append(junk()) _model.J[1][0].b = pmo.block() _model.J[1][0].b.v = pmo.variable() model_clone = _model.clone() _model.k = pmo.block() _model.K = pmo.block_list() _model.K.append(model_clone.clone())
b.c = pmo.constraint(b.x >= 1) b.clist = pmo.constraint_list( pmo.constraint(b.xlist[i] >= i) for i in range(10)) b.cdict = pmo.constraint_dict(((i, j), pmo.constraint(b.xdict[i, j] >= i * j)) for i in range(10) for j in range(10)) b.o = pmo.objective(b.x + sum(b.xlist) + sum(b.xdict.values())) # # Define a custom tiny_block # # The tiny_block class uses more efficient storage for the # case when a small number of objects are placed on the block. class Widget(pmo.tiny_block): def __init__(self, p, input=None): super(Widget, self).__init__() self.p = pmo.parameter(value=p) self.input = pmo.expression(expr=input) self.output = pmo.variable() self.c = pmo.constraint(self.output == self.input**2 / self.p) b = pmo.block() b.x = pmo.variable() b.widgets = pmo.block_list() for i in range(10): b.widgets.append(Widget(i, input=b.x))
# # uses OrderedDict when ordered=True vd = pmo.variable_dict(((str(i), pmo.variable()) for i in range(10)), ordered=True) cd = pmo.constraint_dict((i, pmo.constraint(v == 1)) for i, v in vd.items()) cd = pmo.constraint_dict() for i, v in vd.items(): cd[i] = pmo.constraint(v == 1) cd = pmo.constraint_dict() cd.update((i, pmo.constraint()) for i, v in vd.items()) cd[None] = pmo.constraint() del cd[None] # # Nesting containers # b = pmo.block() b.bd = pmo.block_dict() b.bd[None] = pmo.block_dict() b.bd[None][1] = pmo.block() b.bd[None][1].x = pmo.variable() b.bd['a'] = pmo.block_list() b.bd['a'].append(pmo.block())