## Low thrust trajectory optimization

This forum is for discussing the implementation of low thrust optimization.

### Low thrust trajectory optimization

Here is a preliminary presentation of the approach for solving low-thrust trajectory problem under GMAT.

The method used for formulating the optimizationn problem is based on pseudospectral method. The objective function is always the mass (minimisation).
The code is full functional, although only rendezvous terminal constraints are implemented, and the initial guess is proposed internally by the code. Eventually, as we discussed, the user should be able to provide the initial guess - most certainly under the form of an array of variables [10 x number of nodes]

Any comments on improving the GUI are welcome. I basically tried to make it simple, avoiding duplication with other GMAT feature, and implementing some of the options that have been discussed.

Joris
Attachments
example of low-thrust transfer from Earth to Mars. Earth and Mars are massless point. 25 nodes.
the GUI ... work in progress.
Jorisatesa

Posts: 11
Joined: Fri Dec 04, 2009 8:54 am

### Re: Low thrust trajectory optimization

This is incredible work Joris.

Here are some ideas and questions:
• Is the time of flight currently a fixed constant or can departure and arrival epoch be included as optimization parameters?
• For longer or more complex trajectories, we probably need to have several pseudospectral segments that have position (and probably velocity) continuity at the nodes. Can you implement something where you can create a number of segments and then order them into a complete trajectory like this:
Code: Select all
`Create LowThrustArc departure;departure.NumberofNodes = 45;departure.InitialEpoch = 01 Jan 2010 12:00:00:000;Create LowThrustArc cruise;Create LowThrustArc arrival;Create LowThrustTrajectory lowThrustTraj;lowThrustTraj.Arcs = {departure, cruise, arrival};`
• How can we configure the pseusospectral command for a flyby where we need to apply a constraint on minimum flyby altitude.
shughes

Posts: 443
Joined: Mon Jun 09, 2008 6:27 pm

### Re: Low thrust trajectory optimization

So far, the time of flight is fixed, but it can be easily included as an optimization parameter. However, we have to be careful about how the ephemerides are handled. It is not possible to use the ephemerides (e.g. DE405) directly during the optimisation - non differentiability in general - and most likely we should use somewhat degraded ephemerides, for instance, by propagating a celestial body state (e.g. planet or moon) from a DE405 state during the optimisation ... not sure I am clear.

I will implement the LowThrustArc object you propose and most certainly something similar for the constraints. That would yield something cleaner for the scripting, which is for now "heavy" for the pseudospectral command.

I think the swing-by/flyby case can be tricky! Basically, for fidelity purposes, I am not sure the swing-by phase should be done with intermediate constraints, but it is possible to have: {PseudoSpectral LowThrust Segment 1 + Propagate + PseudoSpectral LowThrust Segment 2} to construct a valid NLP for the Optimize command. Thus, it would simply require an inequality terminal constraint on the final state wrt the flyby body B-plane for {PseudoSpectral LowThrust Segment 1}.
This constraint is not yet implemented. We should also check how the vinfs are defined, and if the periapsis radius can be easily computed. I may be a bit over optimistic for that part though...
Jorisatesa

Posts: 11
Joined: Fri Dec 04, 2009 8:54 am

### Re: Low thrust trajectory optimization

Jorisatesa wrote:So far, the time of flight is fixed, but it can be easily included as an optimization parameter. However, we have to be careful about how the ephemerides are handled. It is not possible to use the ephemerides (e.g. DE405) directly during the optimisation - non differentiability in general -

The DE files are contain coefficients of Chebyshev polynomials (9th order if my memory is correct) and so they can provide planetary velocities and accelerations. Isn't that all you need to allow the endpoints to vary?
shughes

Posts: 443
Joined: Mon Jun 09, 2008 6:27 pm

### Re: Low thrust trajectory optimization

Indeed it is all I need! I thought the polynomials were only valid on short intervals (few days) creating some discontinuities at some order . I will try that then!
Jorisatesa

Posts: 11
Joined: Fri Dec 04, 2009 8:54 am

### Re: Low thrust trajectory optimization

The polynomials are short over some time spans, but given the high order, I believe the first few derivatives are smooth at the segments. I'm sure they are for velocity. Not as sure for acceleration.
shughes

Posts: 443
Joined: Mon Jun 09, 2008 6:27 pm

### Re: Low thrust trajectory optimization

What version of GMAT has the PseudoSpectral command? Both 2008-09-30 and R2011a do not have this command available as one of the command choices when adding commands in the Missions tab.
Briehm

Posts: 2
Joined: Mon Aug 22, 2011 9:06 pm

### Re: Low thrust trajectory optimization

Hi Brian,
Sorry I haven't seen your message earlier.

It is indeed a plugin, which is however not yet fully operational for GMAT. The dynamic is a separate implementation the one used in GMAT. That is, you can compute an optimal low-thrust trajectory, but it would overlook dynamical contributions other than the main gravity. All parameters are however coming from GMAT. Changes on the plugin would be minor and straightforward, but GMAT has to provide information on the gradient of the dynamics for the plugin to be full operational - I haven't checked if it is the case in the new release.
Furthermore, this plugin requires an optimizer, e.g. Ipopt or Snopt. It is given in a separate plugin. Unfortunately for this one, few changes were necessary in the older version of GMAT, and I haven't checked yet if it can work with the R2011a without changes of GMAT's base code.

At this stage, if you only need a simple two-body low-thrust trajectory under GMAT, the only thing to check would be the optimizer plugin. If you want, I can send you the code and tell you how to make it work.

Joris
Jorisatesa

Posts: 11
Joined: Fri Dec 04, 2009 8:54 am

### Re: Low thrust trajectory optimization

The code and instructions for the plug-in would be very helpful.
Briehm

Posts: 2
Joined: Mon Aug 22, 2011 9:06 pm

### Re: Low thrust trajectory optimization

Can you send me the code and instrucction? Please. I am trying to make a preliminary trajectory for a university project