<p>The implementation is based on the XZ+ZX method presented here: <a href="https://www.cs.nyu.edu/overton/papers/pdffiles/pdsdp.pdf">https://www.cs.nyu.edu/overton/papers/pdffiles/pdsdp.pdf</a></p>
<hr>
<h4>You can view, comment on, or merge this pull request online at:</h4>
<p> <a href='https://github.com/mlpack/mlpack/pull/391'>https://github.com/mlpack/mlpack/pull/391</a></p>
<h4>Commit Summary</h4>
<ul>
<li>WIP: a compiling, but non-functioning primal-dual IP SDP solver</li>
<li>WIP: a compiling test case</li>
<li>WIP: hammer out a few bugs, still doesn't work</li>
<li>WIP: fix a few more bugs</li>
<li>add a check for dual feasibility</li>
<li>WIP: commit missing data file</li>
<li>restructure the primal-dual tests a bit</li>
<li>error checking of initial matrices</li>
<li>lovasz theta SDP test</li>
<li>Add log chebyshev approx testcase</li>
<li>add a comment on why the MVU test fails</li>
<li>comment out MVU test case</li>
<li>add correlation coeff sdp test from wiki</li>
<li>minor cleanup of comments</li>
<li>Add some comments/TODOs to the primal-dual implementation</li>
<li>implement the mehrotra's predictor-corrector rule</li>
<li>refactor KKT solver</li>
<li>more refactoring</li>
<li>sparse svec</li>
<li>primal dual method now takes adv of sparse constraints</li>
<li>use glibc constants</li>
<li>make the SDP objective matrix type a template parameter</li>
<li>iteration check is now iteration != maxIterations</li>
<li>Port LR-SDP to use the new SDP problem object</li>
<li>fix up PrimalDualSolver::Optimize() return value</li>
<li>Merge remote-tracking branch 'mlpack/master' into ip</li>
</ul>
<h4>File Changes</h4>
<ul>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-0">src/mlpack/core/math/CMakeLists.txt</a>
(1)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-1">src/mlpack/core/math/lin_alg.cpp</a>
(89)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-2">src/mlpack/core/math/lin_alg.hpp</a>
(46)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-3">src/mlpack/core/math/lin_alg_impl.hpp</a>
(23)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-4">src/mlpack/core/optimizers/CMakeLists.txt</a>
(2)
</li>
<li>
<strong>D</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-5">src/mlpack/core/optimizers/lrsdp/CMakeLists.txt</a>
(13)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-6">src/mlpack/core/optimizers/sdp/CMakeLists.txt</a>
(17)
</li>
<li>
<strong>R</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-7">src/mlpack/core/optimizers/sdp/lrsdp.hpp</a>
(34)
</li>
<li>
<strong>R</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-8">src/mlpack/core/optimizers/sdp/lrsdp_function.hpp</a>
(118)
</li>
<li>
<strong>R</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-9">src/mlpack/core/optimizers/sdp/lrsdp_function_impl.hpp</a>
(159)
</li>
<li>
<strong>R</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-10">src/mlpack/core/optimizers/sdp/lrsdp_impl.hpp</a>
(26)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-11">src/mlpack/core/optimizers/sdp/primal_dual.hpp</a>
(133)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-12">src/mlpack/core/optimizers/sdp/primal_dual_impl.hpp</a>
(386)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-13">src/mlpack/core/optimizers/sdp/sdp.hpp</a>
(116)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-14">src/mlpack/core/optimizers/sdp/sdp_impl.hpp</a>
(71)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-15">src/mlpack/methods/matrix_completion/matrix_completion.cpp</a>
(2)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-16">src/mlpack/methods/matrix_completion/matrix_completion.hpp</a>
(9)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-17">src/mlpack/methods/mvu/mvu.cpp</a>
(4)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-18">src/mlpack/tests/CMakeLists.txt</a>
(1)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-19">src/mlpack/tests/data/r10.txt</a>
(10)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-20">src/mlpack/tests/lin_alg_test.cpp</a>
(99)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-21">src/mlpack/tests/lrsdp_test.cpp</a>
(24)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-22">src/mlpack/tests/sdp_primal_dual_test.cpp</a>
(635)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/391/files#diff-23">src/mlpack/tests/to_string_test.cpp</a>
(4)
</li>
</ul>
<h4>Patch Links:</h4>
<ul>
<li><a href='https://github.com/mlpack/mlpack/pull/391.patch'>https://github.com/mlpack/mlpack/pull/391.patch</a></li>
<li><a href='https://github.com/mlpack/mlpack/pull/391.diff'>https://github.com/mlpack/mlpack/pull/391.diff</a></li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/mlpack/mlpack/pull/391">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFOflpzPyqiWK1LFrtCeqRHolQLwEks5nkFUagaJpZM4DVljE.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
<link itemprop="url" href="https://github.com/mlpack/mlpack/pull/391"></link>
<meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>