[sdpb] 29/233: Some cleanup and documentation

Tobias Hansen thansen at moszumanska.debian.org
Thu Mar 9 04:06:14 UTC 2017


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository sdpb.

commit 6f369fe9546b702f0d43331a5babc83a82b22b1a
Author: David Simmons-Duffin <dsd at athena.sns.ias.edu>
Date:   Thu Jul 17 12:23:51 2014 -0400

    Some cleanup and documentation
---
 main.cpp | 66 ++++++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 39 insertions(+), 27 deletions(-)

diff --git a/main.cpp b/main.cpp
index 9588318..7e4675e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -800,6 +800,7 @@ public:
         }
       }
     }
+    assert(p == numConstraints());
   }
 
   void addSlack() {
@@ -1064,25 +1065,36 @@ class SDPSolver {
 public:
   SDP sdp;
   SolverParameters parameters;
+
+  // current point
   Vector x;
+  BlockDiagonalMatrix X;
+  BlockDiagonalMatrix Y;
+
+  // search direction
   Vector dx;
+  BlockDiagonalMatrix dX;
+  BlockDiagonalMatrix dY;
+
+  // discrepancies in dual and primal equality constraints
   Vector dualResidues;
-  Vector XInvYDiag;
-  BlockDiagonalMatrix X;
+  BlockDiagonalMatrix PrimalResidues;
+
+  // Schur complement for computing search direction
+  Matrix schurComplement;
+  Matrix schurComplementCholesky;
+
+  // intermediate computations
   BlockDiagonalMatrix XInv;
   BlockDiagonalMatrix XInvCholesky;
-  BlockDiagonalMatrix Y;
   BlockDiagonalMatrix YInvCholesky;
   BlockDiagonalMatrix Z;
-  BlockDiagonalMatrix dX;
-  BlockDiagonalMatrix dY;
-  BlockDiagonalMatrix Rc;
-  BlockDiagonalMatrix PrimalResidues;
+  BlockDiagonalMatrix R;
   BlockDiagonalMatrix BilinearPairingsXInv;
   BlockDiagonalMatrix BilinearPairingsY;
-  Matrix schurComplement;
-  Matrix schurComplementCholesky;
+
   // workspace variables
+  Vector XInvYDiagWorkspace;
   BlockDiagonalMatrix XInvWorkspace;
   BlockDiagonalMatrix StepMatrixWorkspace;
   vector<Matrix> bilinearPairingsWorkspace;
@@ -1093,23 +1105,23 @@ public:
     sdp(sdp),
     parameters(parameters),
     x(sdp.numConstraints(), 0),
+    X(sdp.objective.size(), sdp.psdMatrixBlockDims()),
+    Y(X),
     dx(x),
+    dX(X),
+    dY(Y),
     dualResidues(x),
-    XInvYDiag(sdp.objective.size(), 0),
-    X(sdp.objective.size(), sdp.psdMatrixBlockDims()),
+    PrimalResidues(X),
+    schurComplement(sdp.numConstraints(), sdp.numConstraints()),
+    schurComplementCholesky(schurComplement),
     XInv(X),
     XInvCholesky(X),
-    Y(X),
     YInvCholesky(X),
     Z(X),
-    dX(X),
-    dY(X),
-    Rc(X),
-    PrimalResidues(X),
+    R(X),
     BilinearPairingsXInv(0, sdp.bilinearPairingBlockDims()),
     BilinearPairingsY(BilinearPairingsXInv),
-    schurComplement(sdp.numConstraints(), sdp.numConstraints()),
-    schurComplementCholesky(schurComplement),
+    XInvYDiagWorkspace(sdp.objective.size(), 0),
     XInvWorkspace(X),
     StepMatrixWorkspace(X)
   {
@@ -1494,14 +1506,14 @@ void computeSchurComplementCholesky(const BlockDiagonalMatrix &XInv,
                                     const BlockDiagonalMatrix &Y,
                                     const BlockDiagonalMatrix &BilinearPairingsY,
                                     const SDP &sdp,
-                                    Vector &XInvYDiag,
+                                    Vector &XInvYDiagWorkspace,
                                     Matrix &schurComplement,
                                     Matrix &schurComplementCholesky) {
 
   // schurComplement_{pq} = Tr(F_q X^{-1} F_p Y)
-  componentProduct(XInv.diagonalPart, Y.diagonalPart, XInvYDiag);
+  componentProduct(XInv.diagonalPart, Y.diagonalPart, XInvYDiagWorkspace);
 
-  diagonalCongruence(&XInvYDiag[0], sdp.polMatrixValues, 0, 0, schurComplement);
+  diagonalCongruence(&XInvYDiagWorkspace[0], sdp.polMatrixValues, 0, 0, schurComplement);
   addSchurBlocks(sdp, BilinearPairingsXInv, BilinearPairingsY, schurComplement);
 
   choleskyDecomposition(schurComplement, schurComplementCholesky);
@@ -1597,7 +1609,7 @@ void SDPSolver::run() {
     computeSchurComplementCholesky(XInv, BilinearPairingsXInv,
                                    Y,    BilinearPairingsY,
                                    sdp,
-                                   XInvYDiag,
+                                   XInvYDiagWorkspace,
                                    schurComplement,
                                    schurComplementCholesky);
 
@@ -1606,8 +1618,8 @@ void SDPSolver::run() {
     // Mehrotra predictor solution for (dx, dX, dY)
     Real betaPredictor = predictorCenteringParameter(parameters, primalFeasible, dualFeasible, reductionSwitch);
     cout << "betaPredictor = " << betaPredictor << endl;
-    computePredictorRMatrix(betaPredictor, mu, X, Y, Rc);
-    computeSearchDirectionWithRMatrix(Rc, primalFeasible);
+    computePredictorRMatrix(betaPredictor, mu, X, Y, R);
+    computeSearchDirectionWithRMatrix(R, primalFeasible);
 
     cout << "dx_p = " << dx << endl;
     cout << "dX_p = " << dX << endl;
@@ -1616,8 +1628,8 @@ void SDPSolver::run() {
     // Mehrotra corrector solution for (dx, dX, dY)
     Real betaCorrector = correctorCenteringParameter(parameters, X, dX, Y, dY, mu, primalFeasible, dualFeasible);
     cout << "betaCorrector = " << betaCorrector << endl;
-    computeCorrectorRMatrix(betaCorrector, mu, X, dX, Y, dY, Rc);
-    computeSearchDirectionWithRMatrix(Rc, primalFeasible);
+    computeCorrectorRMatrix(betaCorrector, mu, X, dX, Y, dY, R);
+    computeSearchDirectionWithRMatrix(R, primalFeasible);
 
     cout << "dx_c = " << dx << endl;
     cout << "dX_c = " << dX << endl;
@@ -1868,7 +1880,7 @@ void testSDPSolver(const char *file) {
   // cout << "BilinearPairingsXInv = " << solver.BilinearPairingsXInv << endl;
   // cout << "BilinearPairingsY = " << solver.BilinearPairingsY << endl;
   // cout << "schurComplement = " << solver.schurComplement << ";\n";
-  // cout << "Rc = " << solver.Rc << ";\n";
+  // cout << "R = " << solver.R << ";\n";
   // cout << "dualResidues = " << solver.dualResidues << ";\n";
   // cout << "PrimalResidues = " << solver.PrimalResidues << ";\n";
   // cout << "Z = " << solver.Z << ";\n";

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/sdpb.git



More information about the debian-science-commits mailing list