Descent minimizers: stopping criterion is broken
Currently, descent_minimizer.py contains the following lines:
elif delta < self.convergence_tolerance:
convergence += 1
self.logger.info("Updated convergence level to: %u" %
convergence)
The problem is that delta
never goes down far enough for the algorithms to stop in there, even though the energy is tiny compared to the starting energy (example below).
This can't be a valid stopping criterion.
VL_BFGS: DEBUG: Iteration:00000001 step_length=3.7E+01 delta=1.4E+00 energy=5.1E+01
VL_BFGS: DEBUG: Iteration:00000002 step_length=7.5E+00 delta=1.5E+00 energy=4.6E+00
VL_BFGS: DEBUG: Iteration:00000003 step_length=2.6E+00 delta=1.9E+00 energy=6.5E-01
VL_BFGS: DEBUG: Iteration:00000004 step_length=1.4E+00 delta=3.4E+00 energy=2.3E-02
VL_BFGS: DEBUG: Iteration:00000005 step_length=3.1E-01 delta=5.2E+00 energy=8.8E-03
VL_BFGS: DEBUG: Iteration:00000006 step_length=1.1E-01 delta=2.9E+00 energy=2.3E-04
VL_BFGS: DEBUG: Iteration:00000007 step_length=1.5E-02 delta=2.5E+00 energy=5.0E-05
VL_BFGS: DEBUG: Iteration:00000008 step_length=1.3E-02 delta=6.7E+00 energy=1.2E-06
VL_BFGS: DEBUG: Iteration:00000009 step_length=2.4E-03 delta=6.4E+00 energy=6.2E-07
VL_BFGS: DEBUG: Iteration:00000010 step_length=9.0E-04 delta=3.0E+00 energy=1.5E-08
VL_BFGS: DEBUG: Iteration:00000011 step_length=1.2E-04 delta=2.7E+00 energy=2.7E-09
VL_BFGS: DEBUG: Iteration:00000012 step_length=8.7E-05 delta=7.7E+00 energy=9.6E-11
VL_BFGS: DEBUG: Iteration:00000013 step_length=1.9E-05 delta=6.2E+00 energy=1.4E-11
VL_BFGS: DEBUG: Iteration:00000014 step_length=5.5E-06 delta=3.9E+00 energy=1.3E-12
VL_BFGS: DEBUG: Iteration:00000015 step_length=1.4E-06 delta=3.2E+00 energy=6.4E-14
VL_BFGS: DEBUG: Iteration:00000016 step_length=2.5E-07 delta=4.3E+00 energy=1.4E-14
VL_BFGS: DEBUG: Iteration:00000017 step_length=2.2E-07 delta=1.0E+01 energy=1.8E-16
VL_BFGS: DEBUG: Iteration:00000018 step_length=1.6E-08 delta=3.6E+00 energy=1.4E-17
VL_BFGS: DEBUG: Iteration:00000019 step_length=3.3E-09 delta=1.7E+00 energy=3.5E-18
VL_BFGS: DEBUG: Iteration:00000020 step_length=3.2E-09 delta=4.8E+00 energy=9.6E-20
VL_BFGS: DEBUG: Iteration:00000021 step_length=6.2E-10 delta=4.6E+00 energy=3.0E-20
VL_BFGS: DEBUG: Iteration:00000022 step_length=2.0E-10 delta=3.6E+00 energy=1.0E-21
VL_BFGS: DEBUG: Iteration:00000023 step_length=3.3E-11 delta=2.6E+00 energy=2.0E-22
VL_BFGS: DEBUG: Iteration:00000024 step_length=2.6E-11 delta=6.8E+00 energy=6.3E-24
VL_BFGS: DEBUG: Iteration:00000025 step_length=5.8E-12 delta=8.6E+00 energy=4.5E-24
VL_BFGS: DEBUG: Iteration:00000026 step_length=1.0E-12 delta=1.5E+00 energy=1.7E-24
VL_BFGS: DEBUG: Iteration:00000027 step_length=1.6E-12 delta=3.6E+00 energy=2.4E-26
VL_BFGS: DEBUG: Iteration:00000028 step_length=1.5E-13 delta=4.8E+00 energy=5.9E-27
VL_BFGS: DEBUG: Iteration:00000029 step_length=1.5E-13 delta=1.1E+01 energy=3.0E-29
VL_BFGS: DEBUG: Iteration:00000030 step_length=7.0E-15 delta=3.2E+00 energy=4.3E-30
VL_BFGS: WARNING: Reached iteration limit. Stopping.