I’m currently doing all my ODE adjoint solves with something like
fwd_sol = solve(ODEProblem(f, (0.0, 1.0)))
solve(ODEAdjointProblem(fwd_sol, InterpolatingAdjoint(), (out, x, p, t, i) -> (out[:] = g), [1.0]))
which is great, but what if I’m interested in actually just doing the adjoint solve between t = 1.0 → t = 0.5, for example? Is there any way to do so?
I haven’t been able to find such an option and my attempts at altering fwd_sol.tspan
haven’t worked out either.
I don’t think there’s a way to do that right now, but it could be exposed. What’s the use case?
The use-case is as a workaround/fix for https://github.com/SciML/DifferentialEquations.jl/issues/674. I have some events in my forward simulation, and I know how to differentiate “around” them. So all I need now is a way to do the adjoint solve right up to event_time + epsilon
, do my own little tricks to change the adjoint for the event, and then continue with another adjoint solve starting at event_time - epsilon
.