【问题标题】:Branch and Price in SCIPSCIP中的分支和价格
【发布时间】:2015-02-25 00:25:55
【问题描述】:

我有一个关于使用 SCIP 进行分支和价格的问题。 SCIP 通常会在原始变量上分支吗?例如,在 VRP 示例中,它是在主问题变量还是原始问题变量上分支? 如果我想在原始变量上进行分支,是否需要添加自己的分支规则?

【问题讨论】:

  • 根据 Barnhart 的说法,最好在主问题变量上进行分支,因为“MIP 的紧凑公式可能具有对称结构,导致分支定界性能不佳,因为问题几乎没有分支后发生变化。具有大量变量的重新表述可以消除这种对称性。"

标签: c++ scip


【解决方案1】:

当单独谈论 SCIP 时,SCIP 默认只对模型中存在的变量进行分支(在进行分支和定价时,这些变量是您的主变量)。 VRP 示例只是定价者的一个非常简短的示例,并没有实现特定于问题的分支规则。但是,一般来说,强烈建议您实现自己的问题特定分支规则,就像在着色和装箱示例中所做的那样。它们都实现了 Ryan&Foster 分支。

Ben 是对的,对原始变量本身进行分支通常是一个坏主意,因为这可能会重新引入对称性。然而,主变量本身的分支通常同样糟糕,因为它们的数量很大,只有极少数是非零的,因此分支将非常不平衡。并且在将变量固定为零之后,您必须确保分支不会再次生成该变量的副本。 因此,我的建议是在没有对称性或约束(源自原始问题)上分支原始变量,就像 Ryan-Foster 分支规则所做的那样。

或者,您应该看看 GCG,它已经实现了一个通用的分支和价格,包括通用的分支规则。您需要将原始模型读入 GCG,然后 GCG 将根据您可以提供的结构进行 Dantzig-Wolfe 重构。

【讨论】:

    【解决方案2】:

    您使用的是GCG 还是只使用 SCIP? 已经有一些branching rules for branch-and-price available in GCG。我建议您查看这些内容,看看是否是您要查找的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多