#7 (Should) fix end-state issue.
This commit is contained in:
parent
26b78420a2
commit
acf6ad1bb9
@ -98,36 +98,43 @@ func (solver *Solver) tracker() {
|
||||
defer solver.timeTrack(time.Now(), "Validated solutions")
|
||||
log.Println("Validating solutions")
|
||||
|
||||
// Tracking percenting an progress
|
||||
// Determine if the main-loop is done
|
||||
var done bool
|
||||
|
||||
// Tracking progress in percentages
|
||||
var percentage float32
|
||||
// Tracking progress in validated solutions
|
||||
var track int
|
||||
|
||||
// Tracking the rate
|
||||
var rate_start int
|
||||
var rate_stop int
|
||||
var rate_diff int
|
||||
// Tracking the rate, starting point
|
||||
var rate_start int64
|
||||
// Tracking the rate, difference between previous iterations
|
||||
var rate_diff int64
|
||||
|
||||
// Tracking duration
|
||||
var timer_start = time.Now()
|
||||
// Prevent division-by-zero error when establishing `rate`
|
||||
// Prevent division-by-zero error when establishing `rate_diff`
|
||||
time.Sleep(time.Second)
|
||||
|
||||
// Estimation how long it will take
|
||||
var est_fin string
|
||||
|
||||
for solver.iter != solver.counter {
|
||||
// for solver.iter != solver.counter { // Start for-loop
|
||||
for !done {
|
||||
|
||||
// Determine how far we are.
|
||||
percentage = (float32(solver.counter) / (float32(solver.iter) / 100))
|
||||
if track <= int(percentage) {
|
||||
// Reset the loop
|
||||
rate_stop = int(solver.counter)
|
||||
rate_diff = rate_stop - rate_start
|
||||
|
||||
// Reset the loop
|
||||
rate_diff = solver.counter - rate_start
|
||||
|
||||
if track <= int(percentage) || rate_diff == 0 { // Start if-statement
|
||||
|
||||
// Make sure something happened, making rate_start the only reliable variable
|
||||
if rate_diff == 0 && int(percentage) > 1 {
|
||||
if rate_diff == 0 {
|
||||
percentage = 100
|
||||
solver.counter = solver.iter
|
||||
done = true
|
||||
}
|
||||
|
||||
timer_elapsed := time.Since(timer_start)
|
||||
@ -142,30 +149,31 @@ func (solver *Solver) tracker() {
|
||||
est_fin = solver.secondsToHuman((int(solver.iter) - int(solver.counter)) / int(rate_avg))
|
||||
}
|
||||
|
||||
// Printing the meat
|
||||
// Printing the progress
|
||||
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)
|
||||
|
||||
// After we are done printing, exit this for-loop
|
||||
if percentage == 100 {
|
||||
break
|
||||
}
|
||||
|
||||
// Wrap up the loop or break
|
||||
if int(percentage) > track {
|
||||
track = int(percentage)
|
||||
} else {
|
||||
track = track + 1
|
||||
}
|
||||
rate_start = rate_stop
|
||||
|
||||
timer_start = time.Now()
|
||||
|
||||
if percentage == 100 {
|
||||
break
|
||||
}
|
||||
|
||||
} else {
|
||||
log.Println(percentage)
|
||||
log.Println(solver.counter)
|
||||
log.Println(rate_diff)
|
||||
}
|
||||
|
||||
// Resert the rate counter
|
||||
rate_start = solver.counter
|
||||
// Sleep for a second
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
}
|
||||
} // End for-loop
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user