예제 #1
0
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
예제 #2
0
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
예제 #3
0
파일: concave_var.py 프로젝트: Pyomo/pyomo
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
예제 #4
0
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
예제 #5
0
 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)
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
 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)
예제 #10
0
def build_small_block_list_with_staticvariables():
    return block_list(build_small_block_list_with_staticvariables.myblock()
                      for i in range(N))
예제 #11
0
def build_tiny_block_list_with_variables():
    return block_list(build_tiny_block_list_with_variables.myblock()
                      for i in range(N))
예제 #12
0
파일: test_kernel.py 프로젝트: Pyomo/pyomo
    _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())
예제 #13
0
def build_small_block_list_with_staticvariables():
    return block_list(
        build_small_block_list_with_staticvariables.myblock()
        for i in range(N))
예제 #14
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())
예제 #15
0

_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())
예제 #16
0
파일: blocks.py 프로젝트: pazochoa/pyomo
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))
예제 #17
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())