在(二进制)整数程序中破坏对称性

计算科学 线性规划 混合整数规划 对称
2021-12-20 00:21:59

我想用二进制变量解决整数规划问题x1,,xn.

我有一个排列组GSn这样对于每个fG向量x¯1,,x¯n是一个可行的解决方案当且仅当x¯f(1),,x¯f(n)是一个可行的解决方案。

我想知道是否有任何聪明的方法来考虑由G?

如果我们修复一个特定的fG我们总是可以添加单个约束x1xf(1)但我不知道如何将其完全概括为整个领域f也许每一个元素G.

我很清楚下面的论述,但我还没有看到所提出的方法是否适用于这种情况。

与此同时,我想在这里提出这个问题,以防有明显的解决方案。

编辑。澄清问题。我想知道是否有一种方法来编码的对称性G作为整数程序的约束。我已经尝试使用 CPLEX 和 Gurobi,将两者都设置为最大限度地利用对称性,但我很确定它们没有获得全部的对称性,并且正在执行相当大的冗余计算。

3个回答

在这一点上,已经写了很多关于在整数规划中利用对称性的论文,并且对称破坏技术已经被很多人实现,并且可以在广泛使用的 CPLEX 和 Gurobi 求解器中使用。所以是的,这些技术在实践中很有用。

你的问题真的很模糊。您能否更具体地说明您想了解该主题的哪些内容或您想用它做什么?

我认为您应该探索排列组所描述的对象的几何形状。例如,考虑如果你有三个变量,如果你的排列允许排列x2x3. 那么你的优化问题是在超平面上提出的(x1,x2,x2). 同样,如果您允许完整的排列组,您将在线优化(x1,x1,x1). 如果你能证明如果你的排列组有k不可约生成器,您正在优化的对象具有维度nk并且您可以找到仅与nk自变量。(例如,在上面的两个例子中,{x1,x2}{x1}是自变量。)这将允许您通过减少您拥有的变量数量来简单地表达排列组的动作,而不是试图在优化问题中明确表示它。

可以使用任何组G使用 Margot 的同构修剪 (ISOP 1.1) 求解器进行同构修剪。一种方法是创建一个不同的整数线性程序 (ILP),其对称群为G并将此 ILP 提交给 Margot 的求解器以查找对称群。然后您可以用原始 ILP 替换此 ILP 并将其提交为需要通过使用解决的问题G. 需要创建的不同 ILP 可以以零函数为目标。这个新 ILP 的约束可以通过将原始问题中的所有约束与可以从原始约束中获得的约束相结合来获得G对他们采取行动。您最终可能不得不使用 GAP 通过计算轨道来生成新的约束。

使用这种方法,您还可以摆脱原始问题中的所有冗余约束并提交G到 Margot 的 ISOP 1.1 求解器。(消除冗余约束会加快 LP 松弛的求解时间。)如果这样做,那么您将获得的所有同构类解的集合将保持不变。