示例#1
0
文件: LP_block.py 项目: Pyomo/pyomo
    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))
示例#2
0
    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)
示例#3
0
    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()
示例#4
0
    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()
示例#5
0
    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
示例#6
0
#

# 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())
示例#7
0
文件: containers.py 项目: Pyomo/pyomo
#

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())
示例#8
0
    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