A C++ class supporting adjoint-state methods
Enriquez, Marco U.
Symes, William W.
Master of Arts
The adjoint-state method is widely used for computing gradients in simulation-driven optimization problems. The adjoint-state evolution equation requires access to the entire history of the system states. There are instances, however, where the required state for the adjoint-state evolution is not readily accessible; consider large-scale problems, for example, where the entire simulation history is not saved to conserve memory. This thesis introduces a C++ state-access class, StateHistory , to support a myriad of solutions to this problem. Derived StateHistory classes implement a (simulation) time-altering function and data-access functions, which can be used in tandem to access the entire state history. This thesis also presents a derived StateHistory class, GriewankStateHistory , which uses Griewank's optimal checkpointing scheme. While only storing a small fraction of simulation states, GriewankStateHistory objects can reconstitute unsaved states for a small computational cost. These ideas were implemented in the context of TSOpt, a time-stepping library for simulation-driven optimization algorithms.
Mathematics; Computer science; Applied sciences; Pure sciences