# My 1 Year Anniversary

**URL:** <https://discourse.julialang.org/t/my-1-year-anniversary/37648>\
**Category:** Offtopic\
**Tags:** jump, optimization\
**Created:** [April 15, 2020, 3:18pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648 "2020-04-15T15:18:31Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![dburch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dburch/32/8741_2.png) [@dburch](https://discourse.julialang.org/u/dburch)\
**Post date:** [April 15, 2020, 3:18pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/1 "2020-04-15T15:18:31Z")

</div>

It’s my 1 year anniversary for joining the community. Apparently, I joined on tax day 2019. Yay! Thank you all for the support with my code.

I’ve used the JuMP package to create several optimization tools at a large supply chain company. I really like working with Julia. My optimization tools are outperforming industry leading software in supply chain. It’s fun.

The funniest comment came from an expert in supply chain software from another company who said:

> “it’s impossible that you built an efficient simulation engine with an open source solver.”

Statements like that make me excited to use Julia to solve problems. What’s amazing is that I have the option to switch to a commercial solver like CPLEX with almost zero change to the code. JuMP is a great tool. Thanks for making it.

---

<div class="post-metadata">

**Author:** ![mthelm85](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mthelm85/32/224164_2.png) [@mthelm85](https://discourse.julialang.org/u/mthelm85)\
**Post date:** [April 15, 2020, 3:25pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/2 "2020-04-15T15:25:16Z")

</div>

Julia has been a game-changer for my professional life as well. Success stories like yours are really great to hear and the community is glad to have you!

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [April 15, 2020, 11:27pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/3 "2020-04-15T23:27:41Z")

</div>

> [@dburch](#):
>
> “it’s impossible that you built an efficient simulation engine with an open source solver.”

If you can disclose, I am really curious about which solver did you use. I am using CPLEX/Gurobi for academic purposes, and I have no experience with a MIP solver that can match them (unfortunately, as I do not really like the idea of depending on proprietary software).

---

<div class="post-metadata">

**Author:** ![dburch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dburch/32/8741_2.png) [@dburch](https://discourse.julialang.org/u/dburch)\
**Post date:** [April 16, 2020, 1:22pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/4 "2020-04-16T13:22:04Z")

</div>

For my use case, I didn’t need an optimal solution, but I needed it to be something like 99.9% optimal. I am using the **Cbc solver**. It has a “seconds” parameter that can limit the solve time, because some problems I’m solving will get stuck for awhile. I also like that it is multi-threaded, so it can take advantage of the full CPU utility.

Example:

```julia
model = Model(with_optimizer(Cbc.Optimizer
                                        ,seconds=30
                                        ,threads=8
                                        ,loglevel=0
                                        ,ratioGap=0.0001))

```

I found GLPK to not fit my work. I couldn’t find an effective way to limit the solve time, or when I did limit the solve time it just ended without providing any solution at all.

For my problems (which are large) Cbc had the best flexibility, plus multi-treading.

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [April 16, 2020, 2:20pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/5 "2020-04-16T14:20:42Z")

</div>

Good to know. For my case I need _proven_ optimal solutions (as this is the scope of my work), and my experience with Cbc was… well, I found it a little buggy (and for my huge models also, unfortunately, too slow). But I hope in the future its is an alternative, and I would be happy to contribute to it in order to do so (just let me finish my PhD first, XD).

> [@dburch](#):
>
> I couldn’t find an effective way to limit the solve time, or when I did limit the solve time it just ended without providing any solution at all.

You mean, you used the `tm_lim` parameter that takes milliseconds instead of seconds, right? But, yeah, GLPK is even slower, I found it a good tool for teaching, but not for actually solving hard optimization problems.

---

<div class="post-metadata">

**Author:** ![dburch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dburch/32/8741_2.png) [@dburch](https://discourse.julialang.org/u/dburch)\
**Post date:** [April 16, 2020, 3:15pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/6 "2020-04-16T15:15:59Z")

</div>

Yes, limited to something like 30000 milliseconds. GLPK would just end and the results were empty as far as I could tell. Cbc usually has some sub-optimal solution at the end, so that I know the problem is feasible and I can gauge how long to run the simulation and what heuristics to modify, etc. If you have access to CPLEX, then it’s way faster than Cbc or GLPK in my experience. I’ve never used Gurobi though.

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [April 16, 2020, 3:22pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/7 "2020-04-16T15:22:07Z")

</div>

Gurobi currently claims to be “faster” than CPLEX and, sincerely, I believe them. However, I have found some things that CPLEX allows that Gurobi does not, and if your method depends on that detail then CPLEX ends up being your best alternative. However, people already told me that I have a “preponderance of unusual workflows” (XD) so for most people you probably can stick to Gurobi and get best performance with no downsides.

---

<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:** [April 16, 2020, 5:13pm UTC](https://discourse.julialang.org/t/my-1-year-anniversary/37648/8 "2020-04-16T17:13:59Z")

</div>

@dburch, I sent you a private message. Interested in talking offline.
