Adjoint optimization

Adjoint optimization#