# Add lower bound to objective function?

**URL:** https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261
**Category:** Optimization (Mathematical)
**Created:** [March 20, 2020, 1:12pm UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261 "2020-03-20T13:12:24Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![gobs](https://avatars.discourse-cdn.com/v4/letter/g/bc8723/32.png) [@gobs](https://discourse.julialang.org/u/gobs)
#### Post date: [March 20, 2020, 1:12pm UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261/1 "2020-03-20T13:12:24Z")

</div>

I would like to help the MILP solver used by JuMP by providing it with a lower bound on the objective function. Is there a “smart” way of doing this other than to just add a constraint to the objective fcn expression, e.g. a function that does something like `set_lower_bound(JuMP.Model)`?

---

<div class="post-metadata">

### Author: ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)
#### Post date: [March 20, 2020, 4:06pm UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261/2 "2020-03-20T16:06:31Z")

</div>

A better way to help the solver is to provide a good starting solution: [Variables · JuMP](https://www.juliaopt.org/JuMP.jl/stable/variables/#Start-values-1).

JuMP does not provide a solver-independent way to tell solvers a lower bound on the objective. In general, (if minimizing) lower bounds aren’t very helpful. Good _upper_ bounds are though.

---

<div class="post-metadata">

### Author: ![ccoffrin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ccoffrin/32/400_2.png) [@ccoffrin](https://discourse.julialang.org/u/ccoffrin)
#### Post date: [March 20, 2020, 6:31pm UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261/3 "2020-03-20T18:31:28Z")

</div>

A general way of communicating an objective bound to many solvers is to add it as a constraint. So you might give that a try.

In my experience (assuming a minimization problem), providing lower bounds as constraints is not particularly helpful. However, providing strong objective upper bounds as constraints can be very helpful.

---

<div class="post-metadata">

### Author: ![gobs](https://avatars.discourse-cdn.com/v4/letter/g/bc8723/32.png) [@gobs](https://discourse.julialang.org/u/gobs)
#### Post date: [March 20, 2020, 6:31pm UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261/4 "2020-03-20T18:31:48Z")

</div>

Thanks! I can do both, but from what I’ve gathered from my problem is that the solver needs a better lower bound in order to cut off branches in the branch and bound tree. It finds a good solution fairly qucikly, but then spends a lot of time bringing the lower bound up in order to decrease the optimality gap. I might be mixing up lower and upper bounds (I’m minimising).

---

<div class="post-metadata">

### Author: ![WalterMadelim](https://avatars.discourse-cdn.com/v4/letter/w/3e96dc/32.png) [@WalterMadelim](https://discourse.julialang.org/u/WalterMadelim)
#### Post date: [April 24, 2025, 2:36am UTC](https://discourse.julialang.org/t/add-lower-bound-to-objective-function/36261/5 "2025-04-24T02:36:34Z")

</div>

FWIW, here is a related reference [arXiv:2301.13149v2](https://arxiv.org/abs/2301.13149v2)
