Train speed profile optimization with on-board energy storage devices: A dynamic programming based approach. (December 2018)