#7 (Should) fix end-state issue.

This commit is contained in:
Sacha Ligthert 2025-01-25 17:32:11 +01:00
parent 26b78420a2
commit acf6ad1bb9

View File

@ -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
}