SDPLRPlus
<!– Tidyverse lifecycle badges, see https://www.tidyverse.org/lifecycle/ Uncomment or delete as needed. –> <!–
–>
<!– travis-ci.com badge, uncomment or delete as needed, depending on whether you are using that service. –> <!–
–> <!– Coverage badge on codecov.io, which is used by default. –> <!– Aqua badge, see test/runtests.jl –> <!–
–>
SDPLRPlus is a pure julia package which integrates the suboptimality bound and dynamic rank update idea introduced in the following paper with the original SDPLR solver.
@misc{huang2024suboptimality,
title={Suboptimality bounds for trace-bounded SDPs enable a faster and scalable low-rank SDP solver SDPLR+},
author={Yufan Huang and David F. Gleich},
year={2024},
eprint={2406.10407},
archivePrefix={arXiv},
}If you feel this package or our paper useful for your work, we kindly request you to cite it.
Installation
Install SDPLRPlus as follows:
import Pkg
Pkg.add("SDPLRPlus")Use with JuMP
You can solve an JuMP model by using LowRankOpt.jl.
using JuMP, LowRankOpt, SDPLRPlus
model = Model(NLPModelsJuMP.Optimizer)
set_attribute(model, "solver", LRO.BurerMonteiro.Solver)
set_attribute(model, "sub_solver", SDPLRPlus.Solver)
set_attribute(model, "ranks", [1]) # Set the rank used by Burer-Monteiro for the PSD constraintsFor information with regard to the interfaces, refer to the documentation for more details.
Experiments
For more information about experiments in the paper, take a look at the README under exps/.
Contact
The documentation and examples are quite experimental. If anything is unclear or wrong, feel free to contact via email or create issues or pull requests (any contribution to the project is welcome).
Acknowledgement
Part of this project started as a julia reproduction of the solver SDPLR and we would like to thank the authors for their effort in developing such an amazing package. Please consider citing their papers if you use this package in your work, see reference section in the documentation for more information.