BnB 算法

BnB

在最优化理论中,分支界定算法(Branch-and-Bound, BnB)通常是用于求解离散组合优化问题,它通过树遍历的方法对候选解进行系统的枚举。

简要阐述其基本原理:在搜索树中,每一个节点与一个集合相关,该集合是求解问题所定义的可行集中的一个子集。对于每一个节点,用相应的子集来表示一个子问题,并给出其上界和下界来估计该子问题的最优解。
在 BnB 算法的每一次迭代中,根据节点选择规则选择一个节点,该规则通常与边界相关。然后,将选择的节点(关联集)进一步分支为两个子节点(子集)。.随着树结构的不断增长,可行集被逐步分割成目标值改进后的更小的子集。最近它也被用于了连续优化问题的求解当中。特别是,遵循 BnB 原则,在每次迭代中更新所选子问题的边界,直到收敛,即,上界和下界的差为 0。
总而言之,对于 BnB 算法,有三个至关重要的因素需要精心设计:

  • 针对分支的选择节点
  • 剪枝规则
  • 边界函数

子集

恒模约束(unit-modulus-constraints, UMCs)对应的可行集为 ∣ v i ∣ = 1 \vert v_i \vert=1 ∣vi​∣=1,对应的就是整个单位圆环。如下图右,子集对应的是一段圆弧,如何刻画这段圆弧,可以用一个角度上界和下界来表示: l i l_i li​ and u i u_i ui​。
可以记作 v i ∈ A i v_i \in \mathcal{A}_i vi​∈Ai​。
多个元件的约束记作 A = Π i A i \mathcal{A} = \Pi_{i} \mathcal{A}_i A=Πi​Ai​

BnB 算法
BnB subproblem(注意是子问题)
BnB 算法

上一篇:Asp.Net MVC中Aplayer.js音乐播放器的使用


下一篇:二分查找(binary search)java实现及时间复杂度