def _generate_model(self): self.model = pmo.block() model = self.model model._name = self.description model.b = pmo.block() model.B = pmo.block_dict((i, pmo.block()) for i in range(1,4)) model.a = pmo.parameter(value=1.0) model.b.x = pmo.variable(lb=0) model.B[1].x = pmo.variable(lb=0) model.obj = pmo.objective(expr=model.b.x + 3.0*model.B[1].x) model.obj.deactivate() model.B[2].c = pmo.constraint(expr=-model.B[1].x <= -model.a) model.B[2].obj = pmo.objective(expr=model.b.x + 3.0*model.B[1].x + 2) model.B[3].c = pmo.constraint(expr=(2.0, model.b.x/model.a - model.B[1].x, 10))
def _generate_model(self): self.model = pmo.block() model = self.model model._name = self.description model.b = pmo.block() model.B = pmo.block_dict((i, pmo.block()) for i in range(1, 4)) model.a = pmo.parameter(value=1.0) model.b.x = pmo.variable(lb=0) model.B[1].x = pmo.variable(lb=0) model.obj = pmo.objective(expr=model.b.x + 3.0 * model.B[1].x) model.obj.deactivate() model.B[2].c = pmo.constraint(expr=-model.B[1].x <= -model.a) model.B[2].obj = pmo.objective(expr=model.b.x + 3.0 * model.B[1].x + 2) model.B[3].c = pmo.constraint( expr=2.0 <= model.b.x / model.a - model.B[1].x <= 10)
def _generate_model(self): self.model = pmo.block() model = self.model model._name = self.description model.s = [1,2] model.x = pmo.variable() model.y = pmo.variable() model.z = pmo.variable(lb=0) model.obj = pmo.objective_dict() for i in model.s: model.obj[i] = pmo.objective( inactive_index_LP_obj_rule(model,i)) model.OBJ = pmo.objective(model.x+model.y) model.obj[1].deactivate() model.OBJ.deactivate() model.c1 = pmo.constraint_dict() model.c1[1] = pmo.constraint(model.x<=1) model.c1[2] = pmo.constraint(model.x>=-1) model.c1[3] = pmo.constraint(model.y<=1) model.c1[4] = pmo.constraint(model.y>=-1) model.c1[1].deactivate() model.c1[4].deactivate() model.c2 = pmo.constraint_dict() for i in model.s: model.c2[i] = pmo.constraint( inactive_index_LP_c2_rule(model, i)) model.b = pmo.block() model.b.c = pmo.constraint(model.z >= 2) model.B = pmo.block_dict() model.B[1] = pmo.block() model.B[1].c = pmo.constraint(model.z >= 3) model.B[2] = pmo.block() model.B[2].c = pmo.constraint(model.z >= 1) model.b.deactivate() model.B.deactivate() model.B[2].activate()
def _generate_model(self): self.model = pmo.block() model = self.model model._name = self.description model.s = [1,2] model.x = pmo.variable() model.y = pmo.variable() model.z = pmo.variable(lb=0) model.obj = pmo.objective_dict() for i in model.s: model.obj[i] = pmo.objective( inactive_index_LP_obj_rule(model,i)) model.OBJ = pmo.objective(model.x+model.y) model.obj[1].deactivate() model.OBJ.deactivate() model.c1 = pmo.constraint_dict() model.c1[1] = pmo.constraint(model.x<=1) model.c1[2] = pmo.constraint(model.x>=-1) model.c1[3] = pmo.constraint(model.y<=1) model.c1[4] = pmo.constraint(model.y>=-1) model.c1[1].deactivate() model.c1[4].deactivate() model.c2 = pmo.constraint_dict() for i in model.s: model.c2[i] = pmo.constraint( inactive_index_LP_c2_rule(model, i)) model.b = pmo.block() model.b.c = pmo.constraint(model.z >= 2) model.B = pmo.block_dict() model.B[1] = pmo.block() model.B[1].c = pmo.constraint(model.z >= 3) model.B[2] = pmo.block() model.B[2].c = pmo.constraint(model.z >= 1) model.b.deactivate() model.B[1].deactivate()
def _generate_model(self): self.model = pmo.block() model = self.model model._name = self.description model.s = [1, 2] model.x_unused = pmo.variable(domain=pmo.IntegerSet) model.x_unused.stale = False model.x_unused_initialy_stale = pmo.variable(domain=pmo.IntegerSet) model.x_unused_initialy_stale.stale = True model.X_unused = pmo.variable_dict( (i, pmo.variable(domain=pmo.IntegerSet)) for i in model.s) model.X_unused_initialy_stale = pmo.variable_dict( (i, pmo.variable(domain=pmo.IntegerSet)) for i in model.s) for i in model.s: model.X_unused[i].stale = False model.X_unused_initialy_stale[i].stale = True model.x = pmo.variable(domain=RangeSet(None, None)) model.x.stale = False model.x_initialy_stale = pmo.variable(domain=pmo.IntegerSet) model.x_initialy_stale.stale = True model.X = pmo.variable_dict( (i, pmo.variable(domain=pmo.IntegerSet)) for i in model.s) model.X_initialy_stale = pmo.variable_dict( (i, pmo.variable(domain=pmo.IntegerSet)) for i in model.s) for i in model.s: model.X[i].stale = False model.X_initialy_stale[i].stale = True model.obj = pmo.objective(model.x + \ model.x_initialy_stale + \ sum(model.X.values()) + \ sum(model.X_initialy_stale.values())) model.c = pmo.constraint_dict() model.c[1] = pmo.constraint(model.x >= 1) model.c[2] = pmo.constraint(model.x_initialy_stale >= 1) model.c[3] = pmo.constraint(model.X[1] >= 0) model.c[4] = pmo.constraint(model.X[2] >= 1) model.c[5] = pmo.constraint(model.X_initialy_stale[1] >= 0) model.c[6] = pmo.constraint(model.X_initialy_stale[2] >= 1) # Test that stale flags do not get updated # on inactive blocks (where "inactive blocks" mean blocks # that do NOT follow a path of all active parent blocks # up to the top-level model) flat_model = model.clone() model.b = pmo.block() model.B = pmo.block_dict() model.b.b = flat_model.clone() model.B[1] = pmo.block() model.B[1].b = flat_model.clone() model.B[2] = pmo.block() model.B[2].b = flat_model.clone() model.b.deactivate() model.B.deactivate(shallow=False) model.b.b.activate() model.B[1].b.activate() model.B[2].b.deactivate() assert model.b.active is False assert model.B[1].active is False assert model.B[1].active is False assert model.b.b.active is True assert model.B[1].b.active is True assert model.B[2].b.active is False
# # 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())
# 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())
def _generate_model(self): self.model = None self.model = pmo.block() model = self.model model._name = self.description model.s = [1,2] model.x_unused = pmo.variable() model.x_unused.stale = False model.x_unused_initialy_stale = pmo.variable() model.x_unused_initialy_stale.stale = True model.X_unused = pmo.variable_dict( (i, pmo.variable()) for i in model.s) model.X_unused_initialy_stale = pmo.variable_dict( (i, pmo.variable()) for i in model.s) for i in model.X_unused: model.X_unused[i].stale = False model.X_unused_initialy_stale[i].stale = True model.x = pmo.variable() model.x.stale = False model.x_initialy_stale = pmo.variable() model.x_initialy_stale.stale = True model.X = pmo.variable_dict( (i, pmo.variable()) for i in model.s) model.X_initialy_stale = pmo.variable_dict( (i, pmo.variable()) for i in model.s) for i in model.X: model.X[i].stale = False model.X_initialy_stale[i].stale = True model.obj = pmo.objective(model.x + \ model.x_initialy_stale + \ sum(model.X.values()) + \ sum(model.X_initialy_stale.values())) model.c = pmo.constraint_dict() model.c[1] = pmo.constraint(model.x >= 1) model.c[2] = pmo.constraint(model.x_initialy_stale >= 1) model.c[3] = pmo.constraint(model.X[1] >= 0) model.c[4] = pmo.constraint(model.X[2] >= 1) model.c[5] = pmo.constraint(model.X_initialy_stale[1] >= 0) model.c[6] = pmo.constraint(model.X_initialy_stale[2] >= 1) # Test that stale flags do not get updated # on inactive blocks (where "inactive blocks" mean blocks # that do NOT follow a path of all active parent blocks # up to the top-level model) flat_model = model.clone() model.b = pmo.block() model.B = pmo.block_dict() model.B[1] = pmo.block() model.B[2] = pmo.block() model.b.b = flat_model.clone() model.B[1].b = flat_model.clone() model.B[2].b = flat_model.clone() model.b.deactivate() model.B.deactivate(shallow=False) model.b.b.activate() model.B[1].b.activate() model.B[2].b.deactivate() assert model.b.active is False assert model.B[1].active is False assert model.B[1].active is False assert model.b.b.active is True assert model.B[1].b.active is True assert model.B[2].b.active is False