Trajectory Optimization Gym#

A number of interplanetary trajectory problems are provided in pykep in the form of User Defined Problems (UDP) compatible with the pygmo [BI20] python package. All of the problems are instantiated upon import of the pykep module and can be used directly. The collection of all problems is called the “pykep gym” and hopes to become an established benchmark set to test the performances of evolutionary and traditional optimisation techniques on trajectory design problems.

MGA problems#

gym.cassini1 = Cassini MGA direct tof encoding (Trajectory Optimisation Gym P1)#

This is an MGA problem inspired to the Cassini spacecraft interplanetary transfer to Saturn. The objective of this mission is to reach Saturn and to be captured by its gravity into an orbit having pericenter radius \(r_p=108950\) km, and eccentricity \(e=0.98\). The planetary fly-by sequence considered is E-VVEJ-S (as the one used by Cassini spacecraft). As objective function we use the total \(\Delta V\) accumulated during the mission, including the launch \(\Delta V\) (exceeding a value provided for free by the launcher) and the various \(\Delta V\) one needs to give at the planets and upon arrival to perform the final orbit injection.

gym.cassini1_a = Cassini MGA alpha tof encoding (Trajectory Optimisation Gym P2)#

This is the same MGA problem as cassini1, but with using a different encoding of the decision variables. In this case, the decision variables are no longer directly the times of flight but an equivalent set called the alpha encoding. This encoding is particularly useful when bounds on the times of flight are not known a priori. It creates a less evolvable problem, albeit a less biased one, or at least one that is not using any apriori knowledge on the final solution. The decision vector is also augmented with one more variable: the total time of flight which is thus controlled via its bounds, making the encoding particularly suitable for multi-objective optimization problems where the total time of flight is a second objective for which we want to search solutions on the pareto front.

gym.cassini1_n = Cassini1 MGA eta tof encoding (Trajectory Optimisation Gym P3)#

This is the same MGA problem as cassini1, but with using a different encoding of the decision variables. In this case, the decision variables are no longer directly the times of flight but an equivalent set called the eta encoding. This encoding is particularly useful when bounds on the times of flight are not known a priori. It creates a less evolvable problem, albeit a less biased one.

MGA-1DSM problems#

gym.cassini2 = Cassini MGA-1DSM direct tof encoding (Trajectory Optimisation Gym P11)#

This is an MGA-1DSM problem inspired to the Cassini spacecraft interplanetary transfer to Saturn. It is fundamentally similar to cassini1, but it allows for one deep space maneuver (DSM) at any point of each trajectory leg, and does not account for the launch \(\Delta V\) which is bounded instead to a maximum value.

gym.rosetta = Rosetta (Trajectory Optimisation Gym P10)#

This is an MGA-1DSM problem inspired to the Rosetta spacecraft interplanetary transfer to comet 67P/Churyumov-Gerasimenko. The objective of this mission is to randevouz with the comet matching its heliocentric position and velocity exactly. The planetary fly-by sequence considered is E-EMEE-comet (as the one used by Rosetta spacecraft). As objective function we use the total \(\Delta V\) computed as the sum of all the \(\Delta V\) needed to perform the various maneuvers and fly-bys. The launch \(\Delta V\) is not accounted for, as it is bounded to a maximum value.

gym.eve_mga1dsm = Earth-Venus-Earth mga-1dsm (Trajectory Optimisation Gym P7-9)#

This is an MGA-1DSM problem useful to test the performance of evolutionary algorithms on a simpe trajectory problem. The planetary encounter sequence is E-V-E, and the objective is to randevouz with the Earth matching its heliocentric position and velocity exactly. As objective function we use the total \(\Delta V\) computed as the sum of all the \(\Delta V\) needed to perform the various maneuvers and fly-bys. The launch \(\Delta V\) is not accounted for, as it is bounded to a maximum value.

gym.eve_mga1dsm_a = Earth-Venus-Earth mga-1dsm (Trajectory Optimisation Gym P7-9)#

This is the same MGA-1DSM problem as eve_mga_1dsm, but with using a different encoding of the decision variables. In this case, the decision variables are no longer directly the times of flight but an equivalent set called the alpha encoding (see cassini1_a).

gym.eve_mga1dsm_n = Earth-Venus-Earth mga-1dsm (Trajectory Optimisation Gym P7-9)#

This is the same MGA-1DSM problem as eve_mga_1dsm, but with using a different encoding of the decision variables. In this case, the decision variables are no longer directly the times of flight but an equivalent set called the eta encoding (see cassini1_n).

gym.juice = Juice (Trajectory Optimization Gym P13-14)#

This is an MGA-1DSM problem inspired to the JUICE spacecraft interplanetary transfer to Jupiter. The selected fly-by sequence, E-EVEME-J, and other parameters are inspired by the ESA Juice mission. A launcher model is included, namely an Ariane5 launch from Kourou. JUICE - JUpiter ICy moons Explorer - is the first large-class mission in ESA’s Cosmic Vision 2015-2025 programme. Launched on the 14th of April 2023, ESA’s Jupiter Icy Moons Explorer, Juice, will make detailed observations of the giant gas planet and its three large ocean-bearing moons – Ganymede, Callisto and Europa – with a suite of remote sensing, geophysical and in situ instruments. The mission will characterise these moons as both planetary objects and possible habitats, explore Jupiter’s complex environment in depth, and study the wider Jupiter system as an archetype for gas giants across the Universe.

gym.juice_mo = Juice (Trajectory Optimization Gym P13-14)#

This is the same MGA-1DSM problem as juice, but with using the alpha encoding for the time of flight variables (see cassini1_a). The problem is also muulti-objective, with the total time of flight as a second objective, leveragng the alpha encoding to control the total time of flight (at the cost of evolvability).

gym.messenger = MGA_1DSM Trajectory#

This an MGA-1DSM problem inspired by the messenger mission that orbited the planet Mercury between 2011 and 2015, studying Mercury’s chemical composition, geology, and magnetic field. The name is a backronym for Mercury Surface, Space Environment, Geochemistry, and Ranging, and a reference to the messenger god Mercury from Roman mythology. The selected fly-by sequence, E-VVMeMeMe-Me, and other parameters are concident to the actual Messenger mission. We have only omitted the first Earth fly-by that was used to correct for launcher performances, since we here do not make use of a launcher model. As far as chemical propelled interplanetary trajectories go, this particular one is particularly complex and difficult to design. The time of flights among successive Mercury fly-bys allow for multiple rvolutions and resonances, making optimization techniques struggle to find the correct combination. The amount of specialistic knowledge that needs to be used to obtain a successful design is significant. Finding a global optimization approach able to find a good trajectory in complete autonomy without making use of additional problem knowledge is challenging but possible, but limiting the number of fitness call is difficult.

Multiple impulse problem#

gym.em3imp = Earth-Mars 3 impulses (Trajectory Optimisation Gym P4)#
gym.em5imp = Earth-Mars 5 impulses (Trajectory Optimisation Gym P5)#
gym.em7imp = Earth-Mars 7 impulses (Trajectory Optimisation Gym P6)#