[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