Gurobi-Python 配集

Gurobi-Python with set

所以我正在尝试使用 Python-Gurobi link 来解决优化问题,但问题是我卡在了第一步!

我们有两组 M={1,2,3} 和 N={1,2}

我们有一组叫做 S_i。此 S_i 可以为空,也可以为 {1} 或 {2} 或 {1,2}。这意味着对于每个 i,S 只能是集合 N 的潜在组合之一。 我们有一个变量 X_S_i。这意味着如果 X 为 1,我们 select 将 S 的一种可能形式分配给 i。 我正在尝试解决所附图片中的模型,但我不知道如何定义一个附加了一个集合的变量。 谁能帮帮我?

这是基于幂集生成变量的示例代码(我假设这是使用 model.addVar() 完成的)。动力组发电机是从这里复制的:https://www.technomancy.org/python/powerset-generator-python/

def powerset(seq):
    """
    Returns all the subsets of this set. This is a generator.
    """
    if len(seq) <= 1:
        yield seq
        yield []
    else:
        for item in powerset(seq[1:]):
            yield [seq[0]]+item
            yield item

variables = []
for x in powerset([1, 2, 3]):
    variables.append(model.addVar())