|
@@ -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);
|
|
|
|