|
@@ -125,24 +125,25 @@ func (solver *Solver) tracker() {
|
|
|
rate_diff = rate_stop - rate_start
|
|
rate_diff = rate_stop - rate_start
|
|
|
|
|
|
|
|
// Make sure something happened, making rate_start the only reliable variable
|
|
// Make sure something happened, making rate_start the only reliable variable
|
|
|
- if rate_diff == 0 && rate_start > 1 {
|
|
|
|
|
|
|
+ if rate_diff == 0 && int(percentage) > 1 {
|
|
|
percentage = 100
|
|
percentage = 100
|
|
|
solver.counter = solver.iter
|
|
solver.counter = solver.iter
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
timer_elapsed := time.Since(timer_start)
|
|
timer_elapsed := time.Since(timer_start)
|
|
|
rate := int64(rate_diff) / int64(timer_elapsed.Seconds())
|
|
rate := int64(rate_diff) / int64(timer_elapsed.Seconds())
|
|
|
|
|
+ solver.rates = append(solver.rates, rate)
|
|
|
|
|
+ rate_avg := solver.calc_avg()
|
|
|
|
|
|
|
|
- // Estimate when this is finished:
|
|
|
|
|
- // TODO: Make this Bayesian
|
|
|
|
|
|
|
+ // Estimate when this is finished
|
|
|
if rate_diff == 0 {
|
|
if rate_diff == 0 {
|
|
|
est_fin = "N/A"
|
|
est_fin = "N/A"
|
|
|
} else {
|
|
} else {
|
|
|
- est_fin = solver.secondsToHuman((int(solver.iter) - int(solver.counter)) / int(rate))
|
|
|
|
|
|
|
+ est_fin = solver.secondsToHuman((int(solver.iter) - int(solver.counter)) / int(rate_avg))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Printing the meat
|
|
// Printing the meat
|
|
|
- log.Println("Processing: " + strconv.Itoa(int(percentage)) + "% (" + strconv.Itoa(int(solver.counter)) + "/" + strconv.Itoa(int(solver.iter)) + "); Rate (avg): " + strconv.Itoa(int(rate)) + "/sec for " + timer_elapsed.String() + "; Time left (est.): " + est_fin)
|
|
|
|
|
|
|
+ log.Println("Processing: " + strconv.Itoa(int(percentage)) + "% (" + strconv.Itoa(int(solver.counter)) + "/" + strconv.Itoa(int(solver.iter)) + "); Rate: " + strconv.Itoa(int(rate)) + "/sec for " + timer_elapsed.String() + "; Time left (est.): " + est_fin)
|
|
|
|
|
|
|
|
// Wrap up the loop or break
|
|
// Wrap up the loop or break
|
|
|
if int(percentage) > track {
|
|
if int(percentage) > track {
|
|
@@ -153,10 +154,14 @@ func (solver *Solver) tracker() {
|
|
|
rate_start = rate_stop
|
|
rate_start = rate_stop
|
|
|
timer_start = time.Now()
|
|
timer_start = time.Now()
|
|
|
|
|
|
|
|
- if rate_diff == 0 && rate_start > 100 {
|
|
|
|
|
|
|
+ if percentage == 100 {
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.Println(percentage)
|
|
|
|
|
+ log.Println(solver.counter)
|
|
|
|
|
+ log.Println(rate_diff)
|
|
|
}
|
|
}
|
|
|
time.Sleep(1 * time.Second)
|
|
time.Sleep(1 * time.Second)
|
|
|
|
|
|
|
@@ -219,3 +224,16 @@ func (solver *Solver) validate_combination(row1 int, row2 int, row3 int, row4 in
|
|
|
|
|
|
|
|
return retval
|
|
return retval
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func (solver *Solver) calc_avg() int {
|
|
|
|
|
+ var avg_sum int64
|
|
|
|
|
+ var avg int
|
|
|
|
|
+
|
|
|
|
|
+ for _, value := range solver.rates {
|
|
|
|
|
+ avg_sum += value
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ avg = int(avg_sum) / len(solver.rates)
|
|
|
|
|
+
|
|
|
|
|
+ return avg
|
|
|
|
|
+}
|