我有一个变量bI。b
是一个二元变量,表示是否购买产品i
。
i
取值范围为1 ~ 3。在数学格式中,我要声明的二进制变量如下所示:
bi∈{0,1}i = 1,2,3
我知道变量可以在Pyomo中使用以下代码声明
from pyomo.environ import *
b = Var(domain = Binary)
但我不确定如何才能证明b
仅为给定值的二进制I。我如何在Python中使用Pyomo表示给定值的上述二进制变量?
您只需要声明索引集,然后索引集(或多个集,如果有多个索引)引用是变量创建的第一个参数。在文档和本节中有几个例子。
import pyomo.environ as pyo
m = pyo.ConcreteModel('example')
m.I = pyo.Set(initialize=[1, 2, 3])
m.b = pyo.Var(m.I, domain=pyo.Binary)
# some nonsense objective...
m.obj = pyo.Objective(expr=sum(m.b[i] for i in m.I))
m.pprint()
另一种方法似乎如下:
from pyomo.environ import *
model = ConcreteModel()
model.i = RangeSet(1,3)
model.b = Var(model.i, domain = Binary)