Browse Source

(export iterations) Hybrid engine: If enabled, export iterations to HTML file

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@12075 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Joachim Klein 9 years ago
parent
commit
06e23c9b4f
  1. 15
      prism/src/hybrid/PH_JOR.cc
  2. 11
      prism/src/hybrid/PH_NondetReachReward.cc
  3. 11
      prism/src/hybrid/PH_NondetUntil.cc
  4. 15
      prism/src/hybrid/PH_PSOR.cc
  5. 11
      prism/src/hybrid/PH_Power.cc
  6. 15
      prism/src/hybrid/PH_SOR.cc

15
prism/src/hybrid/PH_JOR.cc

@ -37,7 +37,9 @@
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "prism.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void jor_rec(HDDNode *hdd, int level, int row_offset, int col_offset, bool transpose);
@ -215,6 +217,16 @@ jdouble omega // omega (over-relaxation parameter)
// print total memory usage
PH_PrintMemoryToMainLog(env, "TOTAL: [", kbt, "]\n");
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
std::string title("PH_JOR (");
title += (omega == 1.0)?"Jacobi": ("JOR omega=" + std::to_string(omega));
title += ")";
iterationExport.reset(new ExportIterations(title.c_str()));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -258,6 +270,9 @@ jdouble omega // omega (over-relaxation parameter)
}
}
if (iterationExport)
iterationExport->exportVector(soln2, n, 0);
// check convergence
sup_norm = 0.0;
for (i = 0; i < n; i++) {

11
prism/src/hybrid/PH_NondetReachReward.cc

@ -37,7 +37,9 @@
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "prism.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void mult_rec(HDDNode *hdd, int level, int row_offset, int col_offset, int code);
@ -204,6 +206,12 @@ jboolean min // min or max probabilities (true = min, false = max)
soln[i] = 0;
}
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
iterationExport.reset(new ExportIterations("PH_NondetReachReward"));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -285,6 +293,9 @@ jboolean min // min or max probabilities (true = min, false = max)
for (i = 0; i < n; i++) { if(soln2[i] < 0) soln2[i] = 0; soln2[i] += rew_dist->dist[rew_dist->ptrs[i]]; }
}
if (iterationExport)
iterationExport->exportVector(soln2, n, 0);
// check convergence
sup_norm = 0.0;
for (i = 0; i < n; i++) {

11
prism/src/hybrid/PH_NondetUntil.cc

@ -37,7 +37,9 @@
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "prism.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void mult_rec(HDDNode *hdd, int level, int row_offset, int col_offset);
@ -169,6 +171,12 @@ jboolean min // min or max probabilities (true = min, false = max)
for (i = 0; i < n; i++) { soln[i] = yes_dist->dist[yes_dist->ptrs[i]]; }
}
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
iterationExport.reset(new ExportIterations("PH_NondetUntil"));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -236,6 +244,9 @@ jboolean min // min or max probabilities (true = min, false = max)
}
}
if (iterationExport)
iterationExport->exportVector(soln2, n, 0);
// check convergence
sup_norm = 0.0;
for (i = 0; i < n; i++) {

15
prism/src/hybrid/PH_PSOR.cc

@ -37,7 +37,9 @@
#include "hybrid.h"
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void psor_rec(HDDNode *hdd, int level, int row_offset, int col_offset, bool transpose);
@ -229,6 +231,16 @@ jboolean forwards // forwards or backwards?
// print total memory usage
PH_PrintMemoryToMainLog(env, "TOTAL: [", kbt, "]\n");
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
std::string title("PH_PSOR (");
title += (omega == 1.0)?"Pseudo Gauss-Seidel": ("Pseudo SOR omega=" + std::to_string(omega));
title += ")";
iterationExport.reset(new ExportIterations(title.c_str()));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -327,6 +339,9 @@ jboolean forwards // forwards or backwards?
}
}
if (iterationExport)
iterationExport->exportVector(soln, n, 0);
// check convergence
if (sup_norm < term_crit_param) {
done = true;

11
prism/src/hybrid/PH_Power.cc

@ -37,7 +37,9 @@
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "prism.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void power_rec(HDDNode *hdd, int level, int row_offset, int col_offset, bool transpose);
@ -165,6 +167,12 @@ jboolean transpose // transpose A? (i.e. solve xA=x not Ax=x?)
// print total memory usage
PH_PrintMemoryToMainLog(env, "TOTAL: [", kbt, "]\n");
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
iterationExport.reset(new ExportIterations("PH_Power"));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -194,6 +202,9 @@ jboolean transpose // transpose A? (i.e. solve xA=x not Ax=x?)
// do matrix vector multiply bit
power_rec(hdd, 0, 0, 0, transpose);
if (iterationExport)
iterationExport->exportVector(soln2, n, 0);
// check convergence
sup_norm = 0.0;
for (i = 0; i < n; i++) {

15
prism/src/hybrid/PH_SOR.cc

@ -38,7 +38,9 @@
#include "PrismHybridGlob.h"
#include "jnipointer.h"
#include "prism.h"
#include "ExportIterations.h"
#include <new>
#include <memory>
// local prototypes
static void sor_rec(HDDNode *hdd, int level, int row_offset, int col_offset, int r, int c, bool transpose);
@ -238,6 +240,16 @@ jboolean fwds // forwards or backwards?
// print total memory usage
PH_PrintMemoryToMainLog(env, "TOTAL: [", kbt, "]\n");
std::unique_ptr<ExportIterations> iterationExport;
if (PH_GetFlagExportIterations()) {
std::string title("PH_SOR (");
title += (omega == 1.0)?"Gauss-Seidel": ("SOR omega=" + std::to_string(omega));
title += ")";
iterationExport.reset(new ExportIterations(title.c_str()));
iterationExport->exportVector(soln, n, 0);
}
// get setup time
stop = util_cpu_time();
time_for_setup = (double)(stop - start2)/1000;
@ -365,6 +377,9 @@ jboolean fwds // forwards or backwards?
}
}
if (iterationExport)
iterationExport->exportVector(soln, n, 0);
// check convergence
if (sup_norm < term_crit_param) {
done = true;

Loading…
Cancel
Save