This implementation contains both the ParaOpt and ParaDiag algorithms to perform parallel-in-time (PinT) optimal control. Detailed documentation can be found in the M-files of the methods themselves, as well as in Appendix C of the thesis which this code accompanies.
The paradiag
function uses the ParaDiag method for solving
the all-at-once system arising in a time discretisation of the optimality
system. See this paper by Wu et al.
for the base method, and the thesis for extensions and improvements.
The paraopt
function uses the ParaOpt method that sub-divides
the time interval into smaller parts. The original terminal-cost method is
described in this paper by Gander et al.,
and extensions are offered in the thesis. In particular, the function supports
subspace enhancement and ParaDiag-based preconditioners.
The test_paradiag.m
and test_paraopt.m
files contain tests of the paradiag
and paraopt
functions, respectively,
demonstrating their main features.