My 1 Year Anniversary

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.

46 Likes

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!

9 Likes

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).

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:

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.

2 Likes

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).

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.

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.

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.

1 Like

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