[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 ¶meters,
- 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 ¶meters) {
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 ¶meters);
- SDPSolverTerminateReason run(const SDPSolverParameters ¶meters,
- const path outFile,
- path checkpointFile);
+ SDPSolverTerminateReason run(const SDPSolverParameters ¶meters, 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