|
|
SBB 求解器 — 基于分支定界法的 MINLP 求解器
SBB(Simple Branch and Bound)是 GAMS 中用于求解混合整数非线性规划(MINLP)问题的求解器,基于标准的分支定界(Branch and Bound)算法框架,能够高效处理同时包含整数变量和非线性约束的复杂优化问题。 SBB 求解器在分支定界框架下,通过在每个分支节点上求解 NLP 子问题(放松整数约束后的连续非线性规划)来推进搜索过程。它支持多种 NLP 求解器作为子求解器,包括 CONOPT、MINOS 和 SNOPT,用户可根据问题特性灵活选择最合适的求解方案。 SBB 广泛应用于过程工程、能源系统优化、供应链管理、工程设计等领域的 MINLP 问题求解,是 GAMS 中解决混合整数非线性优化问题的可靠工具。
目录
1. Introduction(简介)SBB 是 GAMS 中最早推出的 MINLP 求解器之一,其核心算法为经典的分支定界法(Branch and Bound,简称 B&B)。与 DICOPT 等基于外逼近法的求解器不同,SBB 采用直接枚举整数解空间的搜索方式,通过系统性地分支和剪枝操作找到最优解。 SBB 适用于求解以下类型的 MINLP 问题:
SBB 的主算法流程如下:
2. Branch and Bound(分支定界算法说明)SBB 的分支定界算法是其核心计算框架。本节详细介绍算法的各个关键环节。 2.1 算法框架SBB 的分支定界算法采用树形搜索结构,树的每个节点代表一个 NLP 子问题。根节点为原始问题放松整数约束后的 NLP 问题。每层分支将当前节点分裂为两个子节点,分别对分支变量施加额外的上界或下界约束。 2.2 节点选择策略SBB 提供多种节点选择策略,用于决定下一个需要处理的节点:
2.3 分支变量选择分支变量的选择对算法效率有显著影响。SBB 支持以下分支策略:
2.4 NLP 子问题求解在每个节点上,SBB 需要求解一个 NLP 子问题。子问题的求解方式和求解器选择对整体性能影响重大:
3. Pseudo Costs(伪费用分支策略)伪费用(Pseudo Costs)是 SBB 中一种重要的分支变量选择策略。该策略通过记录历史分支信息,估算每个整数变量在分支后可能产生的目标函数变化,从而选择预期效果最优的分支变量。 3.1 基本原理伪费用为每个整数变量维护两组统计数据:向上分支和向下分支的单位费用估计值。当变量 xj 在第 k 次被选为分支变量时,系统记录上取整和下取整后的目标函数变化量,并更新对应的伪费用值:
3.2 收益估计对于当前处于松弛解的变量 xj,其分支收益的估计值按下式计算: Scorej = max(P+j · fracj, P-j · (1−fracj)) 其中 fracj 为变量的分数部分。得分越高的变量被认为分支收益越大,优先选择。 3.3 自适应更新SBB 的伪费用策略具有自适应性:在求解过程中,随着更多分支信息的积累,伪费用的估计值会越来越准确,分支决策的质量也随之提升。初期缺乏历史数据时,SBB 会退化为最不可行性分支作为默认策略,待积累足够数据后再切换到伪费用策略。
4. Options(求解器选项)SBB 提供了丰富的求解器选项,帮助用户根据问题特性调整求解行为。下表列出主要的控制参数:
选项可通过 GAMS 的 option 语句设置,例如: option NLP = conopt; option optcr = 0.05; option reslim = 3600; option nodeLim = 500000; SBB.optFile = 1; $onecho > sbb.opt NodeSel 3 BranchSel 2 PseudoCostUp 0.2 PseudoCostDown 0.2 $offecho
5. Log File(日志文件解读)SBB 在求解过程中会输出详细日志,帮助用户了解求解进度和问题特性。以下是一个典型的日志示例及解读: 5.1 日志示例--- SBB reading parameter(s) --- SBB started solving --- NLP Solver CONOPT --- SBB: Node 0 Depth 0 Obj 125.34 Best +inf Gap Inf --- SBB: Node 1 Depth 1 Obj 128.50 Best +inf Gap Inf --- SBB: Node 3 Depth 2 Obj 130.20 Best 135.80 Gap 4.12% --- SBB: Node 7 Depth 3 Obj 132.10 Best 135.80 Gap 2.79% --- SBB: Node 15 Depth 4 Obj 135.80 Best 135.80 Gap 0.00% --- SBB: Search Completed - Best 135.80 --- SBB: 15 nodes processed 5.2 字段说明
5.3 终止状态解读
6. Comparison with DICOPT(与 DICOPT 的比较)DICOPT 是 GAMS 中另一款常用的 MINLP 求解器,基于外逼近法(Outer Approximation)和等式松弛法(Equality Relaxation)。SBB 和 DICOPT 具有不同的算法特点,适合不同类型的问题:
6.1 选型建议
在线留言尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||