[sdpb] 73/233: Some cleanup; have yet to print solution to file

Tobias Hansen thansen at moszumanska.debian.org
Thu Mar 9 04:06:20 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 f0955db3e0333d9c0cb4ba5ffe2f0e6c7041fa2b
Author: David Simmons-Duffin <dsd at neptune.sns.ias.edu>
Date:   Mon Aug 11 18:46:32 2014 -0400

    Some cleanup; have yet to print solution to file
---
 src/SDPSolver.cpp | 13 +++++++++----
 src/SDPSolver.h   | 11 +++++------
 src/main.cpp      |  7 +++++--
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/SDPSolver.cpp b/src/SDPSolver.cpp
index 06824a2..11a9ed2 100644
--- a/src/SDPSolver.cpp
+++ b/src/SDPSolver.cpp
@@ -100,7 +100,7 @@ SDPSolver::SDPSolver(const SDP &sdp):
 }
 
 void printSolverHeader() {
-  cout << "     mu       P-obj       D-obj     gap         P-err        D-err       P-step   D-step   beta\n";
+  cout << "\n     mu       P-obj       D-obj     gap         P-err        D-err       P-step   D-step   beta\n";
   cout << "---------------------------------------------------------------------------------------------------\n";
 }
 
@@ -630,7 +630,6 @@ void SDPSolver::computeSearchDirection(const Real &beta,
 }
 
 SDPSolverTerminateReason SDPSolver::run(const SDPSolverParameters &parameters,
-                                        const path outFile,
                                         const path checkpointFile) {
   printSolverHeader();
   timers["Run solver"].start();
@@ -773,7 +772,7 @@ ostream& operator<<(ostream& os, const SDPSolverStatus& s) {
 void backupCheckpointFile(path const& checkpointFile) {
   path backupFile(checkpointFile);
   backupFile.replace_extension(".ck.bk");
-  cout << "Saving checkpoint backup: " << backupFile << endl;
+  cout << "Backing up checkpoint to: " << backupFile << endl;
   copy_file(checkpointFile, backupFile, boost::filesystem::copy_option::overwrite_if_exists);
 }
 
@@ -782,7 +781,7 @@ void SDPSolver::saveCheckpoint(const path &checkpointFile) {
     backupCheckpointFile(checkpointFile);
   boost::filesystem::ofstream ofs(checkpointFile);
   boost::archive::text_oarchive ar(ofs);
-  cout << "Saving checkpoint       : " << checkpointFile << endl;
+  cout << "Saving checkpoint to    : " << checkpointFile << endl;
   boost::serialization::serializeSDPSolverState(ar, x, X, Y);
 }
 
@@ -800,3 +799,9 @@ void SDPSolver::initialize(const SDPSolverParameters &parameters) {
   Y.setZero();
   Y.addDiagonal(parameters.initialMatrixScale);
 }
+
+void SDPSolver::saveSolution(const path &outFile) {
+  boost::filesystem::ofstream ofs(outFile);
+  cout << "Saving solution to: " << outFile << endl;
+  ofs << "foo" << endl;
+}
diff --git a/src/SDPSolver.h b/src/SDPSolver.h
index 184dd04..e8db588 100644
--- a/src/SDPSolver.h
+++ b/src/SDPSolver.h
@@ -48,9 +48,9 @@ public:
 
 enum SDPSolverTerminateReason {
   PrimalDualOptimal,
+  DualFeasibleMaxObjectiveExceeded,
   MaxIterationsExceeded,
   MaxRuntimeExceeded,
-  DualFeasibleMaxObjectiveExceeded,
 };
 
 ostream &operator<<(ostream& os, const SDPSolverTerminateReason& r);
@@ -122,15 +122,14 @@ public:
 
   SDPSolver(const SDP &sdp);
   void initialize(const SDPSolverParameters &parameters);
-  SDPSolverTerminateReason run(const SDPSolverParameters &parameters,
-                               const path outFile, 
-                               path checkpointFile);
+  SDPSolverTerminateReason run(const SDPSolverParameters &parameters, const path checkpointFile);
   void initializeSchurComplementSolver(const BlockDiagonalMatrix &BilinearPairingsXInv,
                                        const BlockDiagonalMatrix &BilinearPairingsY);
   void solveSchurComplementEquation(Vector &dx);
   void computeSearchDirection(const Real &beta, const Real &mu, const bool correctorPhase);
-  void saveCheckpoint(const path &checkpointPath);
-  void loadCheckpoint(const path &checkpointPath);
+  void saveCheckpoint(const path &checkpointFile);
+  void loadCheckpoint(const path &checkpointFile);
+  void saveSolution(const path &outFile);
 };
 
 #endif  // SDP_BOOTSTRAP_SDPSOLVER_H_
diff --git a/src/main.cpp b/src/main.cpp
index a1909e5..dcb8dea 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -29,6 +29,7 @@ int solveSDP(const path &sdpFile,
 
   mpf_set_default_prec(parameters.precision);
   cout.precision(int(parameters.precision * 0.30102999566398114 + 5));
+  // Ensure all the Real parameters have the appropriate precision
   parameters.resetPrecision();
   omp_set_num_threads(parameters.maxThreads);
 
@@ -50,13 +51,15 @@ int solveSDP(const path &sdpFile,
   else
     solver.initialize(parameters);
 
-  SDPSolverTerminateReason reason = solver.run(parameters, outFile, checkpointFile);
-
+  SDPSolverTerminateReason reason = solver.run(parameters, checkpointFile);
   cout << "\nTerminated: " << reason << endl;
   cout << "\nStatus:\n";
   cout << solver.status << endl;
   cout << timers << endl;
 
+  if (reason == PrimalDualOptimal || reason == DualFeasibleMaxObjectiveExceeded)
+    solver.saveSolution(outFile);
+
   return 0;
 }
 

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