本文整理汇总了Python中pyomo.core.ConcreteModel.disjunction方法的典型用法代码示例。如果您正苦于以下问题:Python ConcreteModel.disjunction方法的具体用法?Python ConcreteModel.disjunction怎么用?Python ConcreteModel.disjunction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyomo.core.ConcreteModel
的用法示例。
在下文中一共展示了ConcreteModel.disjunction方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: makeTwoTermDisj_IndexedConstraints_BoundedVars
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermDisj_IndexedConstraints_BoundedVars():
# same concept as above, but bounded variables
m = ConcreteModel()
m.s = Set(initialize=[1, 2])
m.lbs = Param(m.s, initialize={1: 2, 2: 4})
m.ubs = Param(m.s, initialize={1: 7, 2: 6})
def bounds_rule(m, s):
return (m.lbs[s], m.ubs[s])
m.a = Var(m.s, bounds=bounds_rule)
def d_rule(disjunct, flag):
m = disjunct.model()
def true_rule(d, s):
return m.a[s] == 0
def false_rule(d, s):
return m.a[s] >= 5
if flag:
disjunct.c = Constraint(m.s, rule=true_rule)
else:
disjunct.c = Constraint(m.s, rule=false_rule)
m.disjunct = Disjunct([0, 1], rule=d_rule)
m.disjunction = Disjunction(expr=[m.disjunct[0], m.disjunct[1]])
return m
示例2: makeThreeTermDisj_IndexedConstraints
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeThreeTermDisj_IndexedConstraints():
m = ConcreteModel()
m.I = [1, 2, 3]
m.x = Var(m.I, bounds=(0, 10))
def c_rule(b, i):
m = b.model()
return m.x[i] >= i
def d_rule(d, j):
m = d.model()
d.c = Constraint(m.I[:j], rule=c_rule)
m.d = Disjunct(m.I, rule=d_rule)
m.disjunction = Disjunction(expr=[m.d[i] for i in m.I])
return m
示例3: makeTwoTermDisj
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermDisj():
m = ConcreteModel()
m.a = Var(bounds=(2, 7))
m.x = Var(bounds=(4, 9))
def d_rule(disjunct, flag):
m = disjunct.model()
if flag:
disjunct.c1 = Constraint(expr=m.a == 0)
disjunct.c2 = Constraint(expr=m.x <= 7)
else:
disjunct.c = Constraint(expr=m.a >= 5)
m.d = Disjunct([0, 1], rule=d_rule)
m.disjunction = Disjunction(expr=[m.d[0], m.d[1]])
return m
示例4: makeTwoTermDisj_Nonlinear
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermDisj_Nonlinear():
m = ConcreteModel()
m.w = Var(bounds=(2, 7))
m.x = Var(bounds=(1, 8))
m.y = Var(bounds=(-10, -3))
def d_rule(disjunct, flag):
m = disjunct.model()
if flag:
disjunct.c1 = Constraint(expr=m.x >= 2)
disjunct.c2 = Constraint(expr=m.w == 3)
disjunct.c3 = Constraint(expr=(1, m.x, 3))
else:
disjunct.c = Constraint(expr=m.x + m.y**2 <= 14)
m.d = Disjunct([0, 1], rule=d_rule)
m.disjunction = Disjunction(expr=[m.d[0], m.d[1]])
return m
示例5: makeTwoTermIndexedDisjunction_BoundedVars
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermIndexedDisjunction_BoundedVars():
m = ConcreteModel()
m.s = Set(initialize=[1, 2, 3])
m.a = Var(m.s, bounds=(-100, 100))
def disjunct_rule(d, s, flag):
m = d.model()
if flag:
d.c = Constraint(expr=m.a[s] >= 6)
else:
d.c = Constraint(expr=m.a[s] <= 3)
m.disjunct = Disjunct(m.s, [0, 1], rule=disjunct_rule)
def disjunction_rule(m, s):
return [m.disjunct[s, flag] for flag in [0, 1]]
m.disjunction = Disjunction(m.s, rule=disjunction_rule)
return m
示例6: makeTwoTermMultiIndexedDisjunction
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermMultiIndexedDisjunction():
m = ConcreteModel()
m.s = Set(initialize=[1, 2])
m.t = Set(initialize=['A', 'B'])
m.a = Var(m.s, m.t, bounds=(2, 7))
def d_rule(disjunct, flag, s, t):
m = disjunct.model()
if flag:
disjunct.c = Constraint(expr=m.a[s, t] == 0)
else:
disjunct.c = Constraint(expr=m.a[s, t] >= 5)
m.disjunct = Disjunct([0, 1], m.s, m.t, rule=d_rule)
def disj_rule(m, s, t):
return [m.disjunct[0, s, t], m.disjunct[1, s, t]]
m.disjunction = Disjunction(m.s, m.t, rule=disj_rule)
return m
示例7: makeTwoTermIndexedDisjunction
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermIndexedDisjunction():
m = ConcreteModel()
m.A = Set(initialize=[1, 2, 3])
m.B = Set(initialize=['a', 'b'])
m.x = Var(m.A, bounds=(-10, 10))
def disjunct_rule(d, i, k):
m = d.model()
if k == 'a':
d.cons_a = Constraint(expr=m.x[i] >= 5)
if k == 'b':
d.cons_b = Constraint(expr=m.x[i] <= 0)
m.disjunct = Disjunct(m.A, m.B, rule=disjunct_rule)
def disj_rule(m, i):
return [m.disjunct[i, k] for k in m.B]
m.disjunction = Disjunction(m.A, rule=disj_rule)
return m
示例8: makeNestedDisjunctions
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeNestedDisjunctions():
m = ConcreteModel()
m.x = Var(bounds=(-9, 9))
m.z = Var(bounds=(0, 10))
m.a = Var(bounds=(0, 23))
def disjunct_rule(disjunct, flag):
m = disjunct.model()
if flag:
def innerdisj_rule(disjunct, flag):
m = disjunct.model()
if flag:
disjunct.c = Constraint(expr=m.z >= 5)
else:
disjunct.c = Constraint(expr=m.z == 0)
disjunct.innerdisjunct = Disjunct([0, 1], rule=innerdisj_rule)
@disjunct.Disjunction([0])
def innerdisjunction(b, i):
return [b.innerdisjunct[0], b.innerdisjunct[1]]
disjunct.c = Constraint(expr=m.a <= 2)
else:
disjunct.c = Constraint(expr=m.x == 2)
m.disjunct = Disjunct([0, 1], rule=disjunct_rule)
# I want a SimpleDisjunct with a disjunction in it too
def simpledisj_rule(disjunct):
m = disjunct.model()
@disjunct.Disjunct()
def innerdisjunct0(disjunct):
disjunct.c = Constraint(expr=m.x <= 2)
@disjunct.Disjunct()
def innerdisjunct1(disjunct):
disjunct.c = Constraint(expr=m.x >= 4)
disjunct.innerdisjunction = Disjunction(
expr=[disjunct.innerdisjunct0, disjunct.innerdisjunct1])
m.simpledisjunct = Disjunct(rule=simpledisj_rule)
m.disjunction = Disjunction(
expr=[m.simpledisjunct, m.disjunct[0], m.disjunct[1]])
return m
示例9: makeThreeTermIndexedDisj
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeThreeTermIndexedDisj():
m = ConcreteModel()
m.s = Set(initialize=[1, 2])
m.a = Var(m.s, bounds=(2, 7))
def d_rule(disjunct, flag, s):
m = disjunct.model()
if flag == 0:
disjunct.c = Constraint(expr=m.a[s] == 0)
elif flag == 1:
disjunct.c = Constraint(expr=m.a[s] >= 5)
else:
disjunct.c = Constraint(expr=inequality(2, m.a[s], 4))
m.disjunct = Disjunct([0, 1, 2], m.s, rule=d_rule)
def disj_rule(m, s):
return [m.disjunct[0, s], m.disjunct[1, s], m.disjunct[2, s]]
m.disjunction = Disjunction(m.s, rule=disj_rule)
return m
示例10: makeTwoTermDisj_BlockOnDisj
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeTwoTermDisj_BlockOnDisj():
m = ConcreteModel()
m.x = Var(bounds=(0, 1000))
m.y = Var(bounds=(0, 800))
def disj_rule(d, flag):
m = d.model()
if flag:
d.b = Block()
d.b.c = Constraint(expr=m.x == 0)
d.add_component('b.c', Constraint(expr=m.y >= 9))
d.b.anotherblock = Block()
d.b.anotherblock.c = Constraint(expr=m.y >= 11)
d.bb = Block([1])
d.bb[1].c = Constraint(expr=m.x == 0)
else:
d.c = Constraint(expr=m.x >= 80)
m.evil = Disjunct([0, 1], rule=disj_rule)
m.disjunction = Disjunction(expr=[m.evil[0], m.evil[1]])
return m
示例11: makeDuplicatedNestedDisjunction
# 需要导入模块: from pyomo.core import ConcreteModel [as 别名]
# 或者: from pyomo.core.ConcreteModel import disjunction [as 别名]
def makeDuplicatedNestedDisjunction():
m = ConcreteModel()
m.x = Var(bounds=(0, 8))
def outerdisj_rule(d, flag):
m = d.model()
if flag:
def innerdisj_rule(d, flag):
m = d.model()
if flag:
d.c = Constraint(expr=m.x >= 2)
else:
d.c = Constraint(expr=m.x == 0)
d.innerdisjunct = Disjunct([0, 1], rule=innerdisj_rule)
d.innerdisjunction = Disjunction(expr=[d.innerdisjunct[0],
d.innerdisjunct[1]])
d.duplicateddisjunction = Disjunction(expr=[d.innerdisjunct[0],
d.innerdisjunct[1]])
else:
d.c = Constraint(expr=m.x == 8)
m.outerdisjunct = Disjunct([0, 1], rule=outerdisj_rule)
m.disjunction = Disjunction(expr=[m.outerdisjunct[0],
m.outerdisjunct[1]])
return m