Skip to content
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

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

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.

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.

3 participants