I've been playing around linear tangent based guidance laws (specifically the old Atlas-Centaur Surveyor guidance, Apollo IGM and Space Shuttle PEG code) and while PEG has an option for a coast phase before the final burn, I do not there's any modes where the predictor-corrector will optimize that coast. It seems to be an external parameter.
I've found papers like, e.g.:
Ping Lu, Brian J. Griffin, Gregory A. Dukeman, and Frank R. Chavez. "Rapid Optimal Multiburn Ascent Planning and Guidance", Journal of Guidance, Control, and Dynamics, Vol. 31, No. 6 (2008), pp. 1656-1664.
But ripping out the guts of the PEG algorithm and replacing it with an approach like that is going to be fairly aggressive (and I'm not sure I'd be capable of that right now). I also don't necessarily require optimality down to the last dV of fuel and simplicity and convergence would be more important to me -- so the algorithms that NASA currently uses are likely more extensive than what I'm asking for.
I suspect there's some simple late-60s/early-70s era algorithms for producing at least good-enough answers to:
- coast-phase before final burn to orbital insertion
- time of ignition before an on-orbit finite-thrust manuever
- time of ignition before a descent burn to land on a body (airless)
And this is ultimately a Kerbal Space Program question. And unfortunately my last calculus of variations course was about 20 years ago, so I'm a bit rusty on math.
I vaguely understand primer vector theory, and it certainly seems like the bang-bang switching function is the thing I'd like to get to, but I don't know how to get it out of PEG, or how to bolt it onto PEG.
Some possible clarification: I don't think I'm concerned with closed-loop optimization. I suspect what I want is closer to the OPGUID algorithm and the SWITCH algorithm defined in:
Brown, K.R., Harrold, E.F., and Johnson, G.W. 1969. Rapid optimization of multiple-burn rocket flights. Technical Report NASA CR-1430, NASA, Marshall Space Flight Center.
What I don't know is if there's simpler approaches that I could use which could leverage more recent off-the-shelf algorithms (more specifically I already link against http://www.alglib.net/optimization/ for the Levenberg-Marquardt optimizer there, and it has a lot of other optimizers that might make solving the trajectory optimization problem much simpler, but I don't have the background to know what might be useful).
And I think my question comes down to if I should dive into the OPGUID and SWITCH algorithms -- and into dozens of pages of Fortran code which are older than I am -- or if there's a simpler more modern way to go about this which I'm missing? Subject to the external constraint that so far I've been more successful at implementing old NASA TDs than algorithms in the literature.