[sdpb] 15/233: Added code to print constraint matrices

Tobias Hansen thansen at moszumanska.debian.org
Thu Mar 9 04:06:12 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 8c075f0994fe9356bf1c8d1ce8c4ff731a6d5771
Author: David Simmons-Duffin <dsd at athena.sns.ias.edu>
Date:   Wed Jul 9 21:06:26 2014 -0400

    Added code to print constraint matrices
---
 main.cpp | 43 +++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/main.cpp b/main.cpp
index a9b58e0..78e1c4e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1163,6 +1163,39 @@ void SDPSolver::computeSearchDirection() {
 
 }
 
+void printSDPData(const SDP &sdp, const vector<vector<IndexTuple> > &constraintIndexTuples) {
+  BlockDiagonalMatrix F(BlockDiagonalMatrix(sdp.objDimension, sdp.psdMatrixBlockDims()));
+  int p = 0;
+  for (unsigned int j = 0; j < sdp.dimensions.size(); j++) {
+    for (vector<IndexTuple>::const_iterator t = constraintIndexTuples[j].begin();
+         t != constraintIndexTuples[j].end();
+         t++) {
+      F.scalarMultiply(0);
+
+      for (int n = 0; n < sdp.polMatrixValues.cols; n++)
+        F.diagonalPart[n] = sdp.polMatrixValues.get(p, n);
+
+      for (vector<int>::const_iterator b = sdp.blocks[j].begin();
+           b != sdp.blocks[j].end();
+           b++) {
+        const int delta = sdp.bilinearBases[*b].rows;
+        const Real *q = &sdp.bilinearBases[*b].elements[(t->k) * delta];
+
+        for (int e = 0; e < delta; e++) {
+          for (int f = 0; f < delta; f++) {
+            F.blocks[*b].set((t->r)*delta + e, (t->s)*delta + f, (*(q+e)) * (*(q+f)));
+          }
+        }
+        F.blocks[*b].symmetrize();
+      }
+
+      cout << "F[" << p << "] = " << F << ";\n";
+
+      p++;
+    }
+  }
+}
+
 void testSDPSolver() {
   const SDP sdp = readBootstrapSDP("test.sdp");
   cout << sdp << endl;
@@ -1171,8 +1204,12 @@ void testSDPSolver() {
   solver.computeSearchDirection();
   cout << "done." << endl;
 
-  cout << solver.S << endl;
-  cout << solver.T << endl;
+  // cout << solver.S << endl;
+  // cout << solver.T << endl;
+  cout << "X = " << solver.X << endl;
+  cout << "Y = " << solver.Y << endl;
+  cout << "mu = " << solver.mu << endl;
+
   cout << "schurComplement: " << solver.schurComplement << endl;
   cout << "Rc = " << solver.Rc << endl;
   cout << "d = ";
@@ -1185,6 +1222,8 @@ void testSDPSolver() {
   cout << endl;
   cout << "dX = " << solver.dX << endl;
   cout << "dY = " << solver.dY << endl;
+
+  printSDPData(sdp, solver.constraintIndexTuples);
 }
 
 int main(int argc, char** argv) {

-- 
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