Speed optimisation is an important energy efficiency practice, which can bring good economic and environmental benefits. The methodology of the speed optimisation and dynamic programming of ships are firstly investigated. With the total fuel consumption as the objective function and main engine speed as the decision variable, a novel multi-stage speed optimisation model of ship is then developed based on dynamic programming algorithm. A Yangtze river ship is selected as a case study, the actual operational data are acquired through sensors installed onboard the ship. Using the operational data, regression analysis is applied to establish the relationship models of ship fuel consumption and speed in relative to main engine speed. Finally, simulating calculation and comparative analyses are carried out. The results indicate that the velocity and direction of water flow is a key factor affecting the speed optimisation of ships in the Yangtze river; the proposed multi-stage decision making method is effective in the speed optimisation for ship with a long-distance and changing-environment voyage. This study can provide methodological support for ship navigational optimisation.