在特殊有序集合中使用什么重量?
What weights to use in special ordered sets?
我目前正在研究 MIP 问题,我可以在其中利用类型 2 (SOS2) 的特殊有序集。
我的问题是,我还没有完全理解这些集合。这样做的原因是因为我必须为 SOS2 中的变量分配权重。
我不确定我到底应该分配什么。我的集合中有一个非常明确的顺序,但我不确定权重应该是多少,只是分配 1,2,3 ... 我认为 n 不正确?
所以我的问题是,有人可以向我解释一下特殊有序集中变量的权重是什么以及应该为它们分配什么值吗?
首先他们定义了一个顺序。特别是对于 SOS2 集,存在邻居的概念:在 SOS2 集中,只有两个相邻变量可以是非负的。一些求解器还在其分支决策中使用权重。如果您有 (1,2,3,10000)
这样的 x 值,这会很有用。因此,请查阅您的求解器文档。一般来说,sos 权重应该是唯一的。使用 (1,2,3,...)
通常是一个很好的默认值,否则使用类似 x 值的值(假设您没有平行于 y 轴的线段)。
请注意,在许多情况下,具有二元变量的公式会优于 SOS 公式(对于可以对具有二元变量的公式应用智能切割的高端求解器来说尤其如此)。一些求解器甚至会尝试自动将一些 SOS 集重新表示为使用二进制变量的形式。
我目前正在研究 MIP 问题,我可以在其中利用类型 2 (SOS2) 的特殊有序集。
我的问题是,我还没有完全理解这些集合。这样做的原因是因为我必须为 SOS2 中的变量分配权重。
我不确定我到底应该分配什么。我的集合中有一个非常明确的顺序,但我不确定权重应该是多少,只是分配 1,2,3 ... 我认为 n 不正确?
所以我的问题是,有人可以向我解释一下特殊有序集中变量的权重是什么以及应该为它们分配什么值吗?
首先他们定义了一个顺序。特别是对于 SOS2 集,存在邻居的概念:在 SOS2 集中,只有两个相邻变量可以是非负的。一些求解器还在其分支决策中使用权重。如果您有 (1,2,3,10000)
这样的 x 值,这会很有用。因此,请查阅您的求解器文档。一般来说,sos 权重应该是唯一的。使用 (1,2,3,...)
通常是一个很好的默认值,否则使用类似 x 值的值(假设您没有平行于 y 轴的线段)。
请注意,在许多情况下,具有二元变量的公式会优于 SOS 公式(对于可以对具有二元变量的公式应用智能切割的高端求解器来说尤其如此)。一些求解器甚至会尝试自动将一些 SOS 集重新表示为使用二进制变量的形式。