分支和界限 - 存储什么

时间:2012-12-14 23:20:55

标签: optimization branch-and-bound

我已经阅读了多本书(包括Wolsey),在实现分支定界算法时,不需要存储整个树,只需要存储活动节点列表(叶节点,我理解)。

问题是,如果我没有每个祖先的界限,我无法理解如何在分支之后计算出新界限。

对此的一些澄清将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,让我们举个例子吧。假设您正在实现一个相当天真的整数程序求解器,它试图通过求解其LP松弛来求解二进制整数程序,并且,如果它没有得到整数解,则在某个变量上分支。我们假设你有一个最大化问题。

让我们考虑一个分支之后会发生什么。你解决了根子问题,并假设它给你一个目标值为10的分数解。然后你对一个变量进行分支,得到一个具有最佳目标值9的左子问题和一个具有最佳目标值8的右子问题。

我们从根子问题得到了10的全局界限。我们也知道每个积分解决方案都在左子问题或右子问题中,我们知道左子问题没有优于9的解决方案,而右子问题没有优于8的子问题。那么没有比9更好的解决方案。到根子问题,即使根LP松弛不足以告诉我们。

通常,您的最佳全局绑定是任何活动子问题的最差绑定。敏感的子问题是无关紧要的,因为它们不能包含一个比现任者具有更好客观价值的可行解决方案。已经分支的子问题是无关紧要的,因为他们的界限应该由他们孩子的最弱边界支配。