{"id":32154000,"url":"https://github.com/mariohsouto/proxsdp.jl","last_synced_at":"2026-02-19T07:01:52.690Z","repository":{"id":43766497,"uuid":"116823374","full_name":"mariohsouto/ProxSDP.jl","owner":"mariohsouto","description":"Semidefinite programming optimization solver","archived":false,"fork":false,"pushed_at":"2025-05-25T16:36:45.000Z","size":12637,"stargazers_count":99,"open_issues_count":14,"forks_count":13,"subscribers_count":9,"default_branch":"master","last_synced_at":"2026-01-27T22:11:35.850Z","etag":null,"topics":["conic-programs","convex-optimization","julia","optimization","sdp","semidefinite-programming","solver"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mariohsouto.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.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-01-09T14:02:23.000Z","updated_at":"2026-01-24T18:21:47.000Z","dependencies_parsed_at":"2025-09-05T07:29:18.745Z","dependency_job_id":"42fbd5a0-2d2f-4ad6-9ee7-b05a9260baa2","html_url":"https://github.com/mariohsouto/ProxSDP.jl","commit_stats":{"total_commits":547,"total_committers":7,"mean_commits":78.14285714285714,"dds":"0.41133455210237657","last_synced_commit":"5523da31229babcda049ba946bf67e90abf964f1"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/mariohsouto/ProxSDP.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariohsouto%2FProxSDP.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariohsouto%2FProxSDP.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariohsouto%2FProxSDP.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariohsouto%2FProxSDP.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mariohsouto","download_url":"https://codeload.github.com/mariohsouto/ProxSDP.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariohsouto%2FProxSDP.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29605799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T06:47:36.664Z","status":"ssl_error","status_checked_at":"2026-02-19T06:45:47.551Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["conic-programs","convex-optimization","julia","optimization","sdp","semidefinite-programming","solver"],"created_at":"2025-10-21T11:49:05.397Z","updated_at":"2026-02-19T07:01:52.685Z","avatar_url":"https://github.com/mariohsouto.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/mariohsouto/ProxSDP_aux/19f261a912e29c77cb68ee2957a5b41128824f22/logo_proxSDP.png\" alt=\"logo\"/\u003e\n\n[![](https://github.com/mariohsouto/ProxSDP.jl/workflows/CI/badge.svg?branch=master)](https://github.com/mariohsouto/ProxSDP.jl/actions?query=workflow%3ACI)\n[![](http://codecov.io/github/mariohsouto/ProxSDP.jl/coverage.svg?branch=master)](http://codecov.io/github/mariohsouto/ProxSDP.jl?branch=master)\n[![](https://img.shields.io/badge/docs-latest-blue.svg)](https://mariohsouto.github.io/ProxSDP.jl/latest/)\n\n[ProxSDP](https://github.com/mariohsouto/ProxSDP.jl) is an open-source\nsemidefinite programming ([SDP](https://en.wikipedia.org/wiki/Semidefinite_programming))\nsolver based on the paper [\"Exploiting Low-Rank Structure in Semidefinite Programming by Approximate Operator Splitting\"](https://arxiv.org/abs/1810.05231).\n\nThe main advantage of ProxSDP over other state-of-the-art solvers is the ability\nto exploit the **low-rank** structure inherent to several SDP problems.\n\n## Overview of problems ProxSDP can solve\n\n * General conic convex optimization problems with the presence of the\n   [positive semidefinite cone](https://web.stanford.edu/~boyd/papers/pdf/semidef_prog.pdf),\n   [second-order cone](https://web.stanford.edu/~boyd/papers/pdf/socp.pdf) and\n   [positive orthant](https://www.math.ucla.edu/~tom/LP.pdf);\n * Semidefinite relaxation of nonconvex problems, for example,\n   [max-cut](http://www-math.mit.edu/~goemans/PAPERS/maxcut-jacm.pdf),\n   [binary MIMO](https://arxiv.org/pdf/cs/0606083.pdf),\n   [optimal power flow](http://authorstest.library.caltech.edu/141/1/TPS_OPF_2_tech.pdf),\n   [sensor localization](https://web.stanford.edu/~boyd/papers/pdf/sensor_selection.pdf),\n   [sum-of-squares](https://en.wikipedia.org/wiki/Sum-of-squares_optimization);\n * Control theory problems with [LMI](https://en.wikipedia.org/wiki/Linear_matrix_inequality)\n   constraints;\n * Nuclear norm minimization problems, for example,\n   [matrix completion](https://statweb.stanford.edu/~candes/papers/MatrixCompletion.pdf);\n\n## License\n\nProxSDP is licensed under the [MIT License](https://github.com/mariohsouto/ProxSDP.jl/blob/master/LICENSE).\n\n## Installation\n\nInstall ProxSDP using Julia package manager:\n```julia\nimport Pkg\nPkg.add(\"ProxSDP\")\n```\n\n## Documentation\n\nThe online documentation is available at [https://mariohsouto.github.io/ProxSDP.jl/latest/](https://mariohsouto.github.io/ProxSDP.jl/latest/).\n\n## Usage\n\nConsider the semidefinite programming relaxation of the\n[max-cut](http://www-math.mit.edu/~goemans/PAPERS/maxcut-jacm.pdf) problem, as\nin:\n```\nmax   0.25 * W•X\ns.t.  diag(X) = 1,\n      X ≽ 0,\n```\n\n### JuMP\n\nThis problem can be solved by the following code using **ProxSDP** and\n[JuMP](https://github.com/JuliaOpt/JuMP.jl).\n```julia\n# Load packages\nusing ProxSDP, JuMP, LinearAlgebra\n# Number of vertices\nn = 4\n# Graph weights\nW = [\n    18.0  -5.0  -7.0  -6.0\n    -5.0   6.0   0.0  -1.0\n    -7.0   0.0   8.0  -1.0\n    -6.0  -1.0  -1.0   8.0\n]\n# Build Max-Cut SDP relaxation via JuMP\nmodel = Model(ProxSDP.Optimizer)\nset_optimizer_attribute(model, \"log_verbose\", true)\nset_optimizer_attribute(model, \"tol_gap\", 1e-4)\nset_optimizer_attribute(model, \"tol_feasibility\", 1e-4)\n@variable(model, X[1:n, 1:n], PSD)\n@objective(model, Max, 0.25 * LinearAlgebra.dot(W, X))\n@constraint(model, LinearAlgebra.diag(X) .== 1)\n# Solve optimization problem with ProxSDP\noptimize!(model)\n# Retrieve solution\nXsol = value.(X)\n```\n\n### Convex.jl\n\nAnother alternative is to use **ProxSDP** via\n[Convex.jl](https://github.com/jump-dev/Convex.jl):\n```julia\n# Load packages\nusing Convex, ProxSDP\n# Number of vertices\nn = 4\n# Graph weights\nW = [\n    18.0  -5.0  -7.0  -6.0\n    -5.0   6.0   0.0  -1.0\n    -7.0   0.0   8.0  -1.0\n    -6.0  -1.0  -1.0   8.0\n]\n# Define optimization problem\nX = Semidefinite(n)\nproblem = maximize(0.25 * dot(W, X), diag(X) == 1)\n# Solve optimization problem with ProxSDP\nsolve!(problem, ProxSDP.Optimizer(log_verbose=true, tol_gap=1e-4, tol_feasibility=1e-4))\n# Get the objective value\nproblem.optval\n# Retrieve solution\nevaluate(X)\n```\n\n## Citing this package\n\nThe published version of the paper can be found [here](https://doi.org/10.1080/02331934.2020.1823387)\nand the arXiv version [here](https://arxiv.org/pdf/1810.05231.pdf).\n\nWe kindly request that you cite the paper as:\n```bibtex\n@article{souto2020exploiting,\n  author = {Mario Souto and Joaquim D. Garcia and \\'Alvaro Veiga},\n  title = {Exploiting low-rank structure in semidefinite programming by approximate operator splitting},\n  journal = {Optimization},\n  pages = {1-28},\n  year  = {2020},\n  publisher = {Taylor \u0026 Francis},\n  doi = {10.1080/02331934.2020.1823387},\n  URL = {https://doi.org/10.1080/02331934.2020.1823387}\n}\n```\n\nThe preprint version of the paper can be found [here](https://arxiv.org/abs/1810.05231).\n\n## Disclaimer\n\n * ProxSDP is a research software, therefore it should not be used in production.\n * Please open an issue if you find any problems, developers will try to fix and\n   find alternatives.\n * There is no continuous development for 32-bit systems, the package should\n   work, but might reach some issues.\n * ProxSDP assumes primal and dual feasibility.\n\n## ROAD MAP\n\n * Support for exponential and power cones\n * Warm start\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariohsouto%2Fproxsdp.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmariohsouto%2Fproxsdp.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariohsouto%2Fproxsdp.jl/lists"}