BUGFIX: when ONE or TWO tuner cannot solve a problem
[satune.git] / src / Tuner / comptuner.cc
index 92a8985278a60b49d6172adffb85068641e14f3d..d630f2d2280d77fc09b259275901710a46c614d2 100644 (file)
@@ -4,6 +4,7 @@
 #include "searchtuner.h"
 #include <iostream>
 #include <fstream>
+#include <limits>
 #include "solver_interface.h"
 
 CompTuner::CompTuner(uint _budget, uint _timeout) :
@@ -29,7 +30,15 @@ void CompTuner::findBestTwoTuners() {
                        double mintimes[problems.getSize()];
                        for (uint l = 0; l < problems.getSize(); l++) {
                                Problem *problem = problems.get(l);
-                               mintimes[l] = pow(min(tuner1->getTime(problem), tuner2->getTime(problem)), (double)1 / problems.getSize());
+                               long long time1 = tuner1->getTime(problem);
+                               if(time1 == -1){
+                                       time1=LLONG_MAX;
+                               }
+                               long long time2 = tuner2->getTime(problem);
+                               if(time2 == -1){
+                                       time2 = LLONG_MAX;
+                               }
+                               mintimes[l] = pow(min(time1,time2), (double)1 / problems.getSize());
                        }
                        double result = 1;
                        for (uint l = 0; l < problems.getSize(); l++) {