I am working on a modified interior point algori thm for semidefinite for my special problem. I don't have enough skills and knowledge about interior point for semidefinite to code it from scratch. Also, I don't have enough time for that. I need a simple open source implementation of semidefinite interior point algorith to change. There are some open source codes available but I want a simple yet efficient code. What is the best code to modify it's interior point algorithm easily to demonstrate usefulness of the proposed algorithm? I highly prefer matlab codes or codes in C++ with matlab interface, easily attached to matlab. Any answer, comments or suggestion is highly appreciated.
1 Answer
A lot depends on what features you need to have in the code and whether it will be reasonable to make your modification to the code.
Do you need block diagonal structured variables?
second-order cones? Rotated second-order cones?
Free variables?
Special support for low-rank constraint matrices?
Support for log det optimization?
If you need a lot of these features then you will probably want to start with one of the well developed primal-dual codes. The most well know primal-dual interior point codes for SDP are
SeDuMi. This code uses a self-dual embedding approach that may or not be reasonable to modify a for your purposes. It is written in MATLAB with C mex subroutines.
SDPA. Uses an infeasible interior point method. Written in C++.
SDPT3. Infeasible interior point method written in MATLAB plus C.
CSDP. Infeasible interior point method, written in C. Disclaimer: I'm the author of CSDP.
Of these, perhaps SDPT3 would be of the most interest to you,
-
$\begingroup$ Thank you very much Brian. I think I need special support for low rank constraint matrices but don't need others. Still your suggestion for me is SDPT3? Is it's code is well documented or have comments to understand what's going in the code? $\endgroup$ May 26, 2015 at 5:35
-
$\begingroup$ SDPT3 is the only one of these codes with special support for low rank constraints, so it is your best bet. Yes, there are comments in the code but it will still require a lot of work to understand. Good luck! $\endgroup$ May 26, 2015 at 6:30