{"id":15482644,"url":"https://github.com/aldma/qpdo","last_synced_at":"2025-09-12T18:46:44.007Z","repository":{"id":219976078,"uuid":"316459525","full_name":"aldma/qpdo","owner":"aldma","description":"The Quadratic Primal-Dual Optimizer","archived":false,"fork":false,"pushed_at":"2024-05-13T06:36:14.000Z","size":1400,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-30T10:28:27.280Z","etag":null,"topics":["convex-optimization","numerical-optimization","optimization","quadratic-programming"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aldma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-27T09:41:12.000Z","updated_at":"2025-07-22T16:05:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"47964e49-e555-4e4a-9e34-fc8b4ab1b77f","html_url":"https://github.com/aldma/qpdo","commit_stats":null,"previous_names":["aldma/qpdo"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aldma/qpdo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldma%2Fqpdo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldma%2Fqpdo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldma%2Fqpdo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldma%2Fqpdo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aldma","download_url":"https://codeload.github.com/aldma/qpdo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldma%2Fqpdo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273122127,"owners_count":25049539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["convex-optimization","numerical-optimization","optimization","quadratic-programming"],"created_at":"2024-10-02T05:09:43.589Z","updated_at":"2025-09-01T12:10:07.609Z","avatar_url":"https://github.com/aldma.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QPDO: the Quadratic Primal-Dual Optimizer\n\nQPDO is a numerical solver for optimization problems in the form\n```\nminimize        0.5 x' Q x + q' x\n\nsubject to      l \u003c= A x \u003c= u\n```\nwhere `x in R^n` is the decision variable. The symmetric positive semidefinite matrix `Q in S_+^n`, the vector `q in R^n`, and the matrix `A in R^{m x n}` are bounded. The vectors `l in R^m U {-inf}^m` and `u in R^m U {+inf}^m` are extended-real-valued and satisfy `l_i ⩽ u_i` for all `i in 1,...,m`.\n\n## Method and Citing\nQPDO implements a primal-dual Newton proximal method for convex quadratic programming. The proposed method can handle degenerate problems, provides a mechanism for infeasibility detection, and can exploit warm starting, while requiring only convexity. In particular, all linear systems are solvable by construction, independently from the problem data, and an exact linesearch can be performed. Details can be found in the [research paper](https://doi.org/10.1007/s10589-021-00342-y) mentioned below, which serves as a user manual for advanced users. If you use QPDO in your work, we kindly ask that you cite the following reference.\n```\n@article{demarchi2022qpdo,\n\tauthor\t\t= {De~Marchi, Alberto},\n\ttitle       \t= {On a primal-dual {N}ewton proximal method for convex quadratic programs},\n\tjournal     \t= {Computational Optimization and Applications},\n\tyear        \t= {2022},\n\tvolume      \t= {81},\n\tnumber\t    \t= {2},\n\tpages \t\t= {369--395},\n\tdoi         \t= {10.1007/s10589-021-00342-y},\n}\n```\n\n## Installation\nQPDO is implemented in C and provides a MATLAB interface via mex, inspired by [OSQP](https://github.com/osqp/osqp) and [QPALM](https://github.com/Benny44/QPALM).\n\nClone this repository with the submodule for SuiteSparse, running\n```\ngit clone https://github.com/aldma/qpdo.git\ncd qpdo\ngit submodule update --init --recursive\n```\n\n### Matlab\n* To install the mex interface of QPDO, add QPDO and its subfolders to the MATLAB path. Then go to [interfaces/mex/](./interfaces/mex/) and run `qpdo_make.m`. You can test and see how to call QPDO from MATLAB using `demo_mex.m` in the [examples/](./examples) folder.\n\n## Get in touch\nDon't hesitate to [share](mailto:aldmarchi@gmail.com) your impression! Would you like to collaborate to build better software? Here we are!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldma%2Fqpdo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faldma%2Fqpdo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldma%2Fqpdo/lists"}