Skip to content

warm start #2

@andreadelprete

Description

@andreadelprete

@gabrielebndn I just saw that there is a version of Eiquadprog with warm-start capabilities and other juicy features here. It would be great to integrate their work into our version of the solver. This is a (partial) list of what they did on top of the version of eiquadprog I started from:

  • Rewitre and optimize QuadProg++ to be fully based on Eigen. This leads to a more readable code, and significant speed up to compute step directons and add/delete constraints.
  • Generalize QuadProg++ API to allow passing the inital guess, to export the resulting active-set, to pass a list of inequalities to satisfy first, and options and schedule the inequalities.
  • Add various inequality scheduling heuristics:
    • WorstFirst : the default for QuadProg++
    • SlidingWindows: treat the worst of the current subset, and shift/grow the subset (the default for rational_quadprog)
    • WorstSetFirst: treat all the N worst before checking for the others
  • Add new options for rational_quadprog:
    _scheduling_mode = args.get_string("scheduling-mode","SlidingWindows"); -> can also be "WorstFirt" or "WorstSetFirst"
    _scheduling_chunk_size = args.get_int("scheduling-chunk-size",-1); -> the default is usually very good
    _scheduling_grow_factor = args.get_float("scheduling-grow-factor",-1); -> not recommended
    _export_qp = args.is_defined("export-qp"); -> export QP problem to files for testing with other solvers
    _delta = args.get_float("delta", 1);
    _add_ls_energy = args.is_defined("add-ls-energy"); -> recommended
  • Update rational_quadprog_parallel to reflect API changes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions