Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.1%) to scientific vocabulary
Keywords
Repository
Semidefinite programming optimization solver
Basic Info
Statistics
- Stars: 95
- Watchers: 10
- Forks: 13
- Open Issues: 14
- Releases: 25
Topics
Metadata Files
README.md

ProxSDP is an open-source semidefinite programming (SDP) solver based on the paper "Exploiting Low-Rank Structure in Semidefinite Programming by Approximate Operator Splitting".
The main advantage of ProxSDP over other state-of-the-art solvers is the ability to exploit the low-rank structure inherent to several SDP problems.
Overview of problems ProxSDP can solve
- General conic convex optimization problems with the presence of the positive semidefinite cone, second-order cone and positive orthant;
- Semidefinite relaxation of nonconvex problems, for example, max-cut, binary MIMO, optimal power flow, sensor localization, sum-of-squares;
- Control theory problems with LMI constraints;
- Nuclear norm minimization problems, for example, matrix completion;
License
ProxSDP is licensed under the MIT License.
Installation
Install ProxSDP using Julia package manager:
julia
import Pkg
Pkg.add("ProxSDP")
Documentation
The online documentation is available at https://mariohsouto.github.io/ProxSDP.jl/latest/.
Usage
Consider the semidefinite programming relaxation of the
max-cut problem, as
in:
max 0.25 * W•X
s.t. diag(X) = 1,
X ≽ 0,
JuMP
This problem can be solved by the following code using ProxSDP and JuMP. ```julia
Load packages
using ProxSDP, JuMP, LinearAlgebra
Number of vertices
n = 4
Graph weights
W = [ 18.0 -5.0 -7.0 -6.0 -5.0 6.0 0.0 -1.0 -7.0 0.0 8.0 -1.0 -6.0 -1.0 -1.0 8.0 ]
Build Max-Cut SDP relaxation via JuMP
model = Model(ProxSDP.Optimizer) setoptimizerattribute(model, "logverbose", true) setoptimizerattribute(model, "tolgap", 1e-4) setoptimizerattribute(model, "tol_feasibility", 1e-4) @variable(model, X[1:n, 1:n], PSD) @objective(model, Max, 0.25 * LinearAlgebra.dot(W, X)) @constraint(model, LinearAlgebra.diag(X) .== 1)
Solve optimization problem with ProxSDP
optimize!(model)
Retrieve solution
Xsol = value.(X) ```
Convex.jl
Another alternative is to use ProxSDP via Convex.jl: ```julia
Load packages
using Convex, ProxSDP
Number of vertices
n = 4
Graph weights
W = [ 18.0 -5.0 -7.0 -6.0 -5.0 6.0 0.0 -1.0 -7.0 0.0 8.0 -1.0 -6.0 -1.0 -1.0 8.0 ]
Define optimization problem
X = Semidefinite(n) problem = maximize(0.25 * dot(W, X), diag(X) == 1)
Solve optimization problem with ProxSDP
solve!(problem, ProxSDP.Optimizer(logverbose=true, tolgap=1e-4, tol_feasibility=1e-4))
Get the objective value
problem.optval
Retrieve solution
evaluate(X) ```
Citing this package
The published version of the paper can be found here and the arXiv version here.
We kindly request that you cite the paper as:
bibtex
@article{souto2020exploiting,
author = {Mario Souto and Joaquim D. Garcia and \'Alvaro Veiga},
title = {Exploiting low-rank structure in semidefinite programming by approximate operator splitting},
journal = {Optimization},
pages = {1-28},
year = {2020},
publisher = {Taylor & Francis},
doi = {10.1080/02331934.2020.1823387},
URL = {https://doi.org/10.1080/02331934.2020.1823387}
}
The preprint version of the paper can be found here.
Disclaimer
- ProxSDP is a research software, therefore it should not be used in production.
- Please open an issue if you find any problems, developers will try to fix and find alternatives.
- There is no continuous development for 32-bit systems, the package should work, but might reach some issues.
- ProxSDP assumes primal and dual feasibility.
ROAD MAP
- Support for exponential and power cones
- Warm start
Owner
- Name: Mario Souto
- Login: mariohsouto
- Kind: user
- Location: Canada
- Company: Equilibrium Energy
- Website: mariohsouto.github.io
- Twitter: mariohsouto
- Repositories: 2
- Profile: https://github.com/mariohsouto
Optimization and machine learning scientist.
Citation (CITATION.bib)
@article{souto2020exploiting,
author = {Mario Souto and Joaquim D. Garcia and \'Alvaro Veiga},
title = {Exploiting low-rank structure in semidefinite programming by approximate operator splitting},
journal = {Optimization},
pages = {1-28},
year = {2020},
publisher = {Taylor & Francis},
doi = {10.1080/02331934.2020.1823387},
URL = {https://doi.org/10.1080/02331934.2020.1823387}
}
GitHub Events
Total
- Watch event: 3
- Issue comment event: 5
- Push event: 5
- Pull request event: 7
- Create event: 2
Last Year
- Watch event: 3
- Issue comment event: 5
- Push event: 5
- Pull request event: 7
- Create event: 2
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 547
- Total Committers: 7
- Avg Commits per committer: 78.143
- Development Distribution Score (DDS): 0.411
Top Committers
| Name | Commits | |
|---|---|---|
| Mario Henrique Souto | m****o@g****m | 322 |
| Joaquim Garcia | j****a@p****m | 106 |
| joaquimg | j****a@g****m | 65 |
| Guilherme Bodin | g****s@g****m | 51 |
| Oscar Dowson | o****w@u****m | 1 |
| Benoît Legat | b****t@g****m | 1 |
| Guilherme Bodin | 3****n@u****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 39
- Total pull requests: 68
- Average time to close issues: about 2 months
- Average time to close pull requests: about 1 month
- Total issue authors: 11
- Total pull request authors: 7
- Average comments per issue: 1.64
- Average comments per pull request: 1.26
- Merged pull requests: 60
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 4
- Average time to close issues: N/A
- Average time to close pull requests: about 5 hours
- Issue authors: 0
- Pull request authors: 3
- Average comments per issue: 0
- Average comments per pull request: 1.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- joaquimg (22)
- blegat (5)
- hankyang94 (2)
- guilhermebodin (2)
- ericphanson (2)
- bcdandurand (1)
- kalmarek (1)
- affans (1)
- nrontsis (1)
- mariohsouto (1)
- JuliaTagBot (1)
Pull Request Authors
- joaquimg (34)
- guilhermebodin (15)
- blegat (10)
- mariohsouto (9)
- odow (5)
- projekter (2)
- JuliaTagBot (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 25 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 22
juliahub.com: ProxSDP
Semidefinite programming optimization solver
- Documentation: https://docs.juliahub.com/General/ProxSDP/stable/
- License: MIT
-
Latest release: 1.8.3
published over 2 years ago
Rankings
Dependencies
- JuliaRegistries/TagBot v1 composite
- actions/cache v1 composite
- actions/checkout v2 composite
- codecov/codecov-action v1 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite