My presentation at the ICATT 8th Edition

Some months ago, I started implementing a collection of modern Lambert’s problem solvers under the supervision of professor Manuel Sanjurjo Rivo. The goal was to identify which algorithm performs the best. As a result, a Python library named lamberthub was born, providing all implemented routines and utilities for testing other solvers. The preliminary results were presented at the ICATT 8th Edition.

What is the Lambert’s problem?

The Lambert’s problem is the boundary value problem (BVP) in the context of the restricted two-body dynamics is known asthe Lambert’s problem. It states to find for theorbit which connects two known position vectors, being known the time of flight between them, under gravitational field of given strength.

Notice that we are looking for an orbit! Therefore, the Lambert’s problem is usually included within the Initial Orbit Determination (IOD) subject.

Previous paragraphs might sound a little bit abstract, so let us put a real example:

Imagine you know your current position in space and want to travel to another location. Not only that, you want to be at that new place in a particular time. Hence, you need to solve for the Lambert’s problem.

It is important to say that solving the two-body BVP does not guarantee an transfer orbit to be optimal: Lambert’s problem solvers only care about solving the BVP in a high-performance way.

For more information about the problem, please refer to lamberthub docs.

Which solvers were analyzed and how?

A total of four solvers were implemented, analyzed and compared:

  • G. Avanzini, “A simple lambert algorithm,”Journal of guidance, control, and dynamics,vol. 31, no. 6, pp. 1587–1594, 2008.

  • R. Gooding, “A procedure for the solution of lambert’s orbital boundary-value problem,”Celestial Mechanics and Dynamical Astronomy, vol. 48, no. 2, pp. 145–165, 1990.

  • N. Arora and R. P. Russell, “A fast and robust multiple revolution lambert algorithm using a cosine transformation,”Paper AAS,vol. 13, p. 728, 2013.

  • D. Izzo, “Revisiting lambert’s problem,”Celestial Mechanics and Dynamical Astronomy, vol. 121, no. 1, pp. 1–15, 2015.

The comparison performance was done considering three points: the number of iterations, the time per iterations, the total time required. These three metrics provide a deep insight on the strengths and weakness of each solver.

Obtained results

All the results are available in the performance comparison section of lamberthub’s documentation. Nevertheless, those are provided in a figure below too:


After analyzing the results, it was clear that a robust initial guess guarantees a low number of iterations. However, if the initial guess subroutine is very complex, it will be detrimental from the point of view of the total computation time. The workload of the algorithm must be carried out by the root solver!

Finally, it must be said that these are just a set of all algorithms devised along history. This work is far from being finished, as more solvers need to be analyzed to make sure which are the ones showing a high-performance behavior.