Browse Source

visualisation

Willi Zschiebsch 4 years ago
parent
commit
c41dd18ce7
3 changed files with 36 additions and 22 deletions
  1. 2 2
      lib/include/OptimizerBase.h
  2. 34 20
      lib/src/OptimizerBase.cpp
  3. BIN
      lib/test/db/optimization.db

+ 2 - 2
lib/include/OptimizerBase.h

@@ -90,9 +90,9 @@ namespace mdd {
 		json dumpPermutations();
 		json dumpSteps();
 
-		bool addPermutation(const Permutation& per);
+		bool addPermutation(const json& per);
 		bool addStep(int step, json dna);
-		bool changePermutation(const Permutation& per);
+		bool changePermutation(const json& per);
 
 		virtual void reset();
 		virtual bool reachAbort(const std::vector<Permutation>& pers);

+ 34 - 20
lib/src/OptimizerBase.cpp

@@ -232,10 +232,10 @@ namespace mdd{
 		_mutex.lock();
 		for (int i = 0; i < pers.size(); ++i)
 		{
-			auto ind = pers[i];
+			auto ind = Permutation_to_JSON(pers[i]);
 			addPermutation(ind);
-			addStep(step, ind.dna);
-			ret["permutations"].push_back(Permutation_to_JSON(ind));
+			addStep(step, pers[i].dna);
+			ret["permutations"].push_back(ind);
 		}
 		_mutex.unlock();
 		json jcall;
@@ -248,9 +248,10 @@ namespace mdd{
 	void OptimizerBase::callback_evaluate_opt(const Permutation& per) {
 		json ret;
 		ret["step"] = step;
-		changePermutation(per);
+		
 		json jind = Permutation_to_JSON(per);
-		//jind["processor"] = _module->dump();
+		jind["processor"] = _module->dump();
+		changePermutation(jind);
 		ret["permutation"] = jind;
 		json jcall;
 		jcall["operation"] = "change";
@@ -417,8 +418,7 @@ namespace mdd{
 	bool OptimizerBase::createDB(const std::string& db_path) {
 		_db_path = db_path;
 		if (std::filesystem::exists(_db_path)) {
-			//return clearDB(db_path);
-			return true;
+			clearDB();
 		}
 		sqlite3* _db;
 		int rc;
@@ -431,7 +431,8 @@ namespace mdd{
 			"dna		TEXT	NOT NULL	PRIMARY KEY," \
 			"fitness	FLOAT," \
 			"time		FLOAT," \
-			"status		TEXT" \
+			"status		TEXT," \
+			"processor	TEXT" \
 			");";
 
 		ret = exec_sql(sql);
@@ -505,7 +506,7 @@ namespace mdd{
 		bool ret = true;
 		for (size_t i = 0; i < j.size(); i++)
 		{
-			ret = ret && addPermutation(JSON_to_Permutation(j.at(i)));
+			ret = ret && addPermutation(j.at(i));
 		}
 		return ret;
 	}
@@ -523,13 +524,21 @@ namespace mdd{
 		return ret;
 	}
 
-	bool OptimizerBase::addPermutation(const Permutation& per) {
+	bool OptimizerBase::addPermutation(const json& jper) {
 		// Create SQL statement
-		json jdna;
-		jdna = per.dna;
-		std::string sval =  "'" + jdna.dump() + "', " + std::to_string(per.fitness)+ ", " + std::to_string(per.time) + ", " + std::to_string((char)(per.status));
+		std::string sval = "'" + jper["dna"].dump() + "', " + jper["fitness"].dump() + ", " + jper["time"].dump() + ", " + jper["status"].dump();
+		auto it = jper.find("processor");
+		if (it != jper.end())
+		{
+			sval += ", " + it->dump();
+		}
+		else
+		{
+			sval += ", NULL";
+		}
+		
 		std::string sql;
-		sql =	"INSERT INTO PERMUTATIONS (dna, fitness, time, status) "\
+		sql =	"INSERT INTO PERMUTATIONS (dna, fitness, time, status, processor) "\
 				"VALUES (" + sval + "); ";
 
 		return exec_sql(sql);
@@ -542,13 +551,18 @@ namespace mdd{
 		return exec_sql(sql);
 	}
 
-	bool OptimizerBase::changePermutation(const Permutation& per) {
-		json jdna;
-		jdna = per.dna;
+	bool OptimizerBase::changePermutation(const json& jper) {
+		//std::to_string((char)(per.status))
+		std::string sval = "fitness = " + jper["fitness"].dump() + ", time = " + jper["time"].dump() + ", status = " + jper["status"].dump();
+		auto it = jper.find("processor");
+		if (it != jper.end())
+		{
+			sval += ", processor = '" + it->dump() + "' ";
+		}
 		std::string sql;
 		sql =	"UPDATE PERMUTATIONS "\
-				"SET  fitness = "+ std::to_string(per.fitness)+ ", time = "+ std::to_string(per.time) + ", status = " + std::to_string((char)(per.status)) + " "\
-				"WHERE dna = '" + jdna.dump() + "';";
+				"SET " + sval + " "+ 
+				"WHERE dna = '" + jper["dna"].dump() + "';";
 
 		return exec_sql(sql);
 	}
@@ -583,7 +597,7 @@ namespace mdd{
 
 	json OptimizerBase::getPermutations() {
 		std::string sql;
-		sql = "SELECT s.step, p.dna, p.fitness, p.time, p.status FROM PERMUTATIONS AS p "\
+		sql = "SELECT s.step, p.dna, p.fitness, p.time, p.status, p.processor FROM PERMUTATIONS AS p "\
 			"LEFT JOIN STEPS AS s ON s.dna = p.dna; ";
 		json ret = exec_sql_with_callback(sql);
 

BIN
lib/test/db/optimization.db