Git Product home page Git Product logo

Comments (7)

andreadelprete avatar andreadelprete commented on September 26, 2024 1

I think the main advantage of having our own package with a standard API (which is the one implemented by solver-HQP-...) is that we could easily switch solver if one day we need to.

from tsid.

jcarpent avatar jcarpent commented on September 26, 2024

Indeed, we already discussed with @andreadelprete and @nmansard about that. I've already started such a project on my own but still work in progress.
And it seems pretty easy to do that. I think the main issue to discuss a bit about is a common interface for all these solvers.
Can we make a meeting next week @ LAAS to discuss all of that?

from tsid.

proyan avatar proyan commented on September 26, 2024

If it is any help, I think stephane caron did make a unified API in python for some of the available QP Solvers.
https://github.com/stephane-caron/qpsolvers

from tsid.

olivier-stasse avatar olivier-stasse commented on September 26, 2024

And then you get http://roboptim.net/

from tsid.

andreadelprete avatar andreadelprete commented on September 26, 2024

@gabrielebndn has started working on this and he may update us on the status of that project here.

from tsid.

gabrielebndn avatar gabrielebndn commented on September 26, 2024

@andreadelprete, the externalized code can be found in repo eiquadprog.
In there, I copied eiquadprog_2011 (renamed eiquadprog.hpp, I don't think it's used a lot and I would not recommend it), eiquadprog-fast.hpp (which I turned to a header-only version) and eiquadprog-rt.hpp (which I reorganized so that it works by including eiquadprog-rt.hpp, not eiquadprog-rt.hxx, and where I fixed some minor Eigen compilation issues related to problems with less then two constraints).

The code is unit tested in folder unittest for many different cases.
The solvers seem to work perfectly well for all convex, bounded, feasible problems.
I sometimes get unexpected results for problems that do not respect these three conditions at the same time: sometimes I get a solution when there isn't one; sometimes I get a wrong solution; sometimes I do not get a solution when there technically is at lease one; sometimes I correctly get that there is no solution, but the specific error code is not correct.
I do not know how important this is, as I would expect that most of the problems we actually try to solve indeed do respect the above conditions. The above-listed cases are also documented in the unit tests: I am just using BOOST_WARN instead of BOOST_CHECK, so that the unit tests issue warnings when executed with -l warning, but they still technically pass.

I did not copy files solver-HQP-eiquadprog-fast.hpp and solver-HQP-eiquadprog-rt.hpp, as they seemed to me incomplete and non-essential.

Version 1.0.0 was released about a month ago. I've been using it on real problems for Talos and so far, it seems to do well. As far as I am concerned, work on it is more or less done and I am not planning to change anything. If you wish, I think you may remove the original files from tsid and depend on eiquadprog instead.

If you want to improve on existing algorithms, or help fixing the non-convex/unbonded/unfeasible cases (if you think it is desirable), or move solver-HQP-eiquadprog-fast.hpp and solver-HQP-eiquadprog-rt.hpp there, you are more than welcome to do so through a PR, which I can verify.

This is what concerns eiquadprog. But there is another point: in a recent issue (see stack-of-tasks/eiquadprog#2) @andreadelprete pointed out that QuadProg++ contains lots of the things we need. If we can confirm that QuadProg++ has everything we need, that it is stable, that it works well, that it is easy to integrate in our own systems, and that there are no problems with licences, then it is probably useless to have our own in-house solver and we could just rely on QuadProg++

from tsid.

proyan avatar proyan commented on September 26, 2024

It would also help with easily benchmarking different solvers.

from tsid.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.