In conversation with the HiGHS project developers

What is HiGHS? How is it used for MIP solving? Who’s using HiGHS? And what’s next for this open source project? We spoke with the creators of the HiGHS project to find out.

Many operations research and decision science practitioners start their optimization modeling journey with open source projects such as HiGHS. Recently, Nextmv CTO and co-founder Ryan O’Neil interviewed Julian Hall and Ivet Galabova, developers on the HiGHS project, about the recent HiGHS workshop, what’s next in the HiGHS community, and the role of open source solvers in the growth of optimization as a discipline.

The following captures portions of a longer conversation, and has been edited for length and clarity.

Ryan O’Neil: To get us warmed up, can you give everyone a brief orientation to the timeline — from inception to now — of the HiGHS project so far?

Julian Hall: At the University of Edinburgh, we had a couple of really high-quality linear programming (LP) solvers written by PhD students who left them to us after they graduated, but we couldn't leverage them because they were written in C++. That was until Ivet came along and she bridged the gap between me and these codes. 

For a while, it was just a couple of good LP solvers until I saw there was a real gap in the open source market due to aging projects elsewhere. So we decided to actually turn them into proper software. There's an awful lot I could say, but the game-changer was when we managed to get our friend, Leona Gottwald, to write a MIP solver for us, which was a win-win because she really wanted to do it, and that's what changed everything. Since then we've been looking to improve and broaden what we offer alongside those solvers.

Ryan: Your opening talk at the HiGHS workshop this summer covered that journey from gradware to software nicely. At the workshop, people also presented how they were using HiGHS in the wild. What are some of the applications that stood out to you?

Ivet Galabova: One company that made an impression on me is a Dutch company that optimizes water flow management. They have several objectives, the most important of which is not to flood the Netherlands as they open and close the gates of the channels. A recent objective they incorporated is to better look after the fish. They have investigated the impact of water pumping on fish migration and well-being, so that was a really nice application of HiGHS.

Another industry application that made an impression is a Danish company called EMD. They make software for energy modeling and power plants, particularly for producing renewable energies. They use their software to model and optimize their prediction and trading prices.

From the academic participants, there was a really interesting talk on the kidney exchange program in the UK. Someone is modeling that as a problem and using HiGHS to solve the allocation of organs to people in need of surgery. I thought that was really great as well.

Julian: The content on digital twins appealed to me because I like how you can actually see what’s directly going on and how the software's being used. I was quite impressed that we had very large companies using HiGHS, for example, Microsoft Research. It's good to see that we've got a corner where it's more convenient to use HiGHS, and we're powerful enough for them.

Ryan: Open source is frequently a springboard for newcomers to a discipline. In optimization and operations research, there's a lot less open source software than there is in machine learning or data science. How do you view the role of open source in OR and optimization today? And how do you think that will change in the future?

Julian: OR is probably not quite as amenable to open source, particularly when it comes to solvers. They are phenomenally well-developed and technical, which are very hard for someone to just produce in a short time. The good thing about the technologies which are available to support open source, like GitHub and CMake, is that if someone does come up with something new, they can popularize it fairly easily. We've seen a good example of that with this third way of solving LP problems known as PDLP (Primal-Dual hybrid gradient enhanced for Linear Programming). There's a lot of excitement around that at the moment. I also see an increase in the role of open source optimization simply because the world is getting increasingly comfortable with the use of open source software. Hopefully in the future, we'll see philanthropic funders realize that supporting this is important.

Ryan: I think one of the things that we're learning from the recent AI revolution is that a lot of people are willing to use customized hardware for something specialized, but it doesn't necessarily have to be commodity hardware.

Are you planning to integrate generic column generation algorithms into HiGHS, like branch and price? What do you have support for now, and what are you planning to add?

Julian: We’ve got no support at the moment. I have spoken to people, and we have an industrial collaborator who's interested in putting the decomposition algorithms into HiGHS. I think it will happen in some form. We're trying to decide whether it should be an application that sits on top of HiGHS. Therefore, people who don't need it don't have to drag it around, and we don't have to compile it in order to work on HiGHS. It might also mean that it can be easier for the smart developers to tailor it to their application. Column generation, branch and price, Bender’s decomposition, they're all in discussion at the moment.

Ryan: Let's talk a little bit more about open source from a community and longevity perspective. Open source projects are often created by individuals or small groups of people, and then when they take off, they get adopted by larger communities around them. How do you think about project longevity for HiGHS and staying power for the software outlasting the contributions of the initial team?

Ivet: In optimization, my impression is that it has been an issue. As Julian mentioned, the codes are more complicated, and it's difficult for many people to work on one project. They're very tightly integrated. That is the difference with some machine learning open source projects. In machine learning, it's easier to make small modifications and experiment with results and actually get some performance out, and it's much easier to have a lot of people contributing because machine learning is a really big field. At the moment, there's a lot of funding. A lot of students are studying machine learning and AI topics, but with optimization and OR there's much fewer students. Academic funding is not so widely available. One of the problems in developing optimization software is that there are not enough skilled developers and the commercial companies are outbidding the people who are available. With HiGHS, we had an idea to involve younger people from the start, who are up to date with technical tools and would be able to continue the project over time. I think it's important to keep younger people involved.

Julian: Speaking as the older member of the team, I'm looking at some of the solo projects in optimization. I don't want to be doing this when I'm 70 to 75. I want to hand it over to somebody a lot younger, even if it means that development doesn't continue. Maintenance is so crucial. That's why it's important that I make it worth Ivet's while to continue as a member of the team. Ultimately, it would be great if she takes it over when I’m beyond being able to do that.

Ryan: We already have a named successor then?

Julian: Yes, planning the succession is essential in any revolution. Funding is also important. As HiGHS gets used more and more by companies with funds, our value to society is viewed well by philanthropic funders. It's important to keep them interested and keep funding coming in that way. That seems to be working quite well. There's three companies now looking to fund industrial PhD studentships which will bring young people in. Hopefully we can get more philanthropic funding as well to keep it going in the background.

Ryan: At the workshop you talked a bit about the near-term to midterm roadmap for HiGHS, but I suspect many aren't familiar with that. Can you talk a little bit about new features we can expect from the project?

Julian: Principally, it's in the world of mixed integer programming. Despite having the best open source MIP solver in the world, there's still a big gap between us and the better commercial solvers. We will be implementing some things which will improve the performance of the MIP solver for general problems. We’re also looking to add more primal heuristics, which may only be valuable for certain classes of problems. At the moment, the MIP solver is a bit of a black box. We realize we need to add lazy constraints for people who are solving things where they can't define all the constraints initially and also use cuts that are valuable for the sort of things they're modeling. They want to be able to insert those at the beginning of the elimination tree, at the root node.

The other new feature is the new interior point solver for solving LPs. What we have is as good as what anybody else has, but there's still a gap that we're trying to bridge. That work has already started, and hopefully we will have something for people to play with within a year.

Ryan: What are some ways that people in the community can either support HiGHS or become involved?

Ivet: Funding is always appreciated, and little bug fixes in pull requests are also appreciated. We are an open source project, and we have had contributions. Major changes to the MIP solver are more questionable. We are careful not to modify it too much and make sure everything is thoroughly tested. So for the moment, we'd like to keep its performance and eventually improve it. Ideally people can support HiGHS by using it. The more that people use our code, then the more likely it is that we will continue being able to develop it.

Julian: We're also able to take contributions in kind. A nice example of this is Mathworks. Mathworks now uses HiGHS as its LP and MIP solver. They have an employee who used to maintain their MIP solver, who is using quite a lot of his time to help improve our MIP solver as well. No money changes hands, but it's a win-win on both sides.

Ryan: What’s the best way for people to get started with HiGHS? 

Ivet: We are getting there with the documentation. There is a nice automation that parses out these strings in the C API to the documentation website. Discord is a very recent addition. We created it after the workshop because a lot of our users expressed interest in being able to communicate on that platform. We also have a newsletter which we share every few months or so.

‍To learn more, view the whole conversation from our recent techtalk, or browse our full collection of techtalks and videos.

Video by:
No items found.