【发布时间】:2021-01-13 23:19:22
【问题描述】:
我正在解决一个优化问题,我需要为每个产品分配一个纸箱类型,并确定应该使用多少个相应类型的纸箱。每个产品只能分配到一种纸箱类型。一个特定类型的纸箱可以容纳多少个特定产品是已知的。
我创建了如下决策变量:
import pyomo.environ as pyo
model = pyo.ConcreteModel(name="Pack_size_optim")
model.dv_prod_carton = pyo.Var(prod, cartons, within=pyo.NonNegativeIntegers)
prod, cartons 是具有独特产品和纸箱类型的列表
现在,对于我的问题,我想要的是决策变量:对于所有纸箱类型的每种产品都应该是一组 SOS 1,即对于每种产品,只有一种纸箱类型应该具有 > 0 的值。
我正在尝试类似下面的方法,但它不起作用:
for i in prod:
pyo.SOSConstraint(var = [model.dv_prod_carton[i, j] for j in cartons], sos = 1)
我认为上面 pyo.SOSConstraint 函数中的 var 参数应该是一个“IndexedVar”,但我有一个变量列表。
任何人都可以帮助我实现上述目标。谢谢。
【问题讨论】:
标签: linear-programming pyomo mixed-integer-programming