Change the termination conditions in subtle, but important, way. When using
epsilon termination (and ALLOW_NEGATIVE_EPSILON), it used to be the case that we wrapped the termination condition in a fabs(), and compared that to epsilon. The termination condition is basically a measure of how 'stable' of a score we're at. What this meant was that we used to keep going until we reached a space where the solution was going neither up nor down too much. All this is relative to the difference between initial socre and the best score - so, if those are close (ie. it's an easy problem), we could end up thrashing a whole lot. With the new behavior, if we ever hit a spot in which solutions start getting worse, we'll stop. Also, fix the GNUPLOT_OUTPUT code, which I used to debut this.
Showing with 10 additions and 2 deletions