Skip to content

First draft at integrating the leopard linear solver into Ipopt. #709

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: stable/3.14
Choose a base branch
from

Conversation

molysgaard
Copy link

For the last few years I have been playing with a side project to implement a multifrontal, sparse, indefinite direct matrix factorization algorithm, in the spirit of MA57 and similar.

Now I have something that works pretty well, and have made a first release.

The solver is very well suited for optimization algorithms like Ipopt. It is able to supply the matrix inertia and naturally handles indefinite systems.

See https://github.com/molysgaard/leopard for the full project description.

It would be interesting to see Leopard integrated into Ipopt. Currently, there are not many free solvers integrated into Ipopt, and this creates friction for ad-hoc experimentation and research. My hope is that contributing the leopard solver as a free solver will do a little to democratize research and experimentation within constrained optimization.

This PR currently works with leopard on my machine, but I have yet to understand all the autotools stuff to auto-detect and properly set linker flags during the Ipopt build. I would be very thankful for any insight into how to properly integrate leopard into the Ipopt-autotools build system.

Leopard is distributed as a .deb package and contains a leopard.pc pkc-config file, so I guess one way to do it is to use autotools pkg-config integration if that exists?

I am prepared to work more to complete this integration, but I would like to first check if you would be positive to such an integration?

Regards Morten

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@molysgaard molysgaard marked this pull request as draft October 3, 2023 13:43
@svigerske
Copy link
Member

Yes, positive on integrating another linear solver interface, especially when most of the work is already done.
I'll give this a try - just cannot tell when - and can take care of the buildsystem integration.

@molysgaard
Copy link
Author

molysgaard commented Oct 5, 2023

@svigerske that's exciting!

I have updated the Leopard API to v0.2.0. This is a breaking change that adds support for changing settings during numerical factorization.
Currently, the only setting is the pivot tolerance, but because of how the new API is structured, it is possible to add new settings in the future without breaking API compatibility.

I have tested the changes on my machine, and pushed the required changes to this PR.

@kkofler
Copy link

kkofler commented Mar 28, 2025

I think that it does not make much sense for Ipopt to add support for a binary-only solver ("free" only as in "beer") that has had 2 blob drops within 3 days and then… nothing! No updates whatsoever for soon 1½ years.

If you were willing to release your source code, so that your solver is actually Free Software, and so that others can continue the work that you seem to have no time to work on anymore, this might be worth it. But an abandoned fire&forget blob release?

@molysgaard
Copy link
Author

molysgaard commented Apr 7, 2025

I don't mind supporting it if it finds use. There are not many places where something like this would be used, but Ipopt really could use it :)
So please do not judge it by not being updated, when there are zero users. I would be very invested in keeping it running well if Ipopt choose to integrate it, as it would mean a big deal to me :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants