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())
所以我正在尝试使用 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())