当使用纸浆定义混合整数线性规划问题时,可以这样定义 sos:
x1 = LpVariable('x1', cat = LpInteger)
x2 = LpVariable('x2', cat = LpInteger)
prob.sos1['sos'] = x1 + 2*x2
(“sos”或特殊排序的集合是一种特殊约束,指定集合中只有一个变量可以是非零的)。
我们看到这允许为 sos 变量(在本例中为 1,2)指定权重。大概它们定义了每个变量的优先级,即在分支时哪些变量首先允许为非零。
但是权重究竟是如何定义的呢?
底层求解器是 coin-or-cbc,我找不到任何关于他们如何使用 SOS 权重的信息。