如何为JuMP最小化模型设置目标函数上界?
JuMP最小化问题设置目标上界的实现方法
- 你需要的是目标截断(cutoff)功能,设置后求解器会直接剪去所有目标值高于该上界的节点,无需额外添加普通约束,剪枝效率更高。
- 具体实现代码非常简单:先获取模型的目标函数表达式,直接给它设置上界即可,示例如下:
using JuMP, HiGHS # 导入JuMP和你使用的求解器 # 初始化模型 model = Model(HiGHS.Optimizer) # 定义变量、约束 @variable(model, x[1:2] >= 0) @constraint(model, sum(x) >= 4) # 定义最小化目标 @objective(model, Min, 3x[1] + 5x[2]) # 给目标函数设置上界15,所有目标值超过15的可行解和节点都会被忽略 set_upper_bound(objective_function(model), 15) # 正常求解即可 optimize!(model)
- 如果你使用的求解器有专属的截断参数,也可以直接设置求解器参数实现相同效果,比如Gurobi的
Cutoff参数、CBC的cutoff参数,设置逻辑和普通求解器参数一致。
搜索关键词参考
你之前只搜bound范围太广很难匹配到对应内容,可以用以下组合关键词搜索:
- JuMP objective cutoff
- JuMP minimization objective upper bound
- MIP cutoff bound JuMP
- 如果你使用特定求解器,可以加上求解器名称缩小范围,比如
JuMP HiGHS objective cutoff
内容的提问来源于stack exchange,提问作者JKHA
相关产品推荐
相关产品推荐

