Branch and Bound VRP节点数为0 如何关闭Gurobi预求解功能
Gurobi关闭预求解运行分支定界的配置方案
完全可以通过调整Gurobi参数关闭预求解功能,强制算法进入分支定界流程,满足你分析VRP问题分支定界树运行情况的需求。
具体参数配置方法
不同调用接口的配置语法如下:
- Python接口
代码示例:import gurobipy as gp # 构建VRP模型逻辑 model = gp.Model("VRP_Solver") # 核心参数:关闭预求解 model.setParam("Presolve", 0) # 可选:同步关闭根节点启发式,避免启发式直接找到最优解跳过分支流程 model.setParam("Heuristics", 0) model.optimize() - C++接口
#include "gurobi_c++.h" GRBModel model = GRBModel(env, "VRP_Solver"); // 关闭预求解 model.set(GRB_IntParam_Presolve, 0); // 可选关闭启发式 model.set(GRB_DoubleParam_Heuristics, 0); - Java接口
import gurobi.*; GRBModel model = new GRBModel(env, "VRP_Solver"); // 关闭预求解 model.set(GRB.IntParam.Presolve, 0); // 可选关闭启发式 model.set(GRB.DoubleParam.Heuristics, 0);
注意事项
- 关闭预求解后根节点松弛下界的质量会明显降低,分支定界探索节点数、求解耗时都会大幅上升,刚好适配你分析分支定界树运行状态的需求
- 如果你的VRP问题规模较大,可以额外设置
TimeLimit(时间上限)、NodeLimit(探索节点上限)参数,控制求解范围避免长时间无意义运行 - 如果仅关闭预求解后仍在根节点完成求解,大概率是根节点的启发式算法直接找到了全局最优解,开启上文提到的
Heuristics = 0参数即可强制触发分支流程
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

