Frank Schäfer

Results 28 issues of Frank Schäfer

I'd like to apply a controller periodically in an ensemble simulation. The controller should act based on the current state of the integrator and change a parameter of the DE....

```julia using RecursiveArrayTools using OrdinaryDiffEq using SciMLSensitivity using Zygote, ForwardDiff using Test function fiip(du, u, p, t) x = u.x[1] dx = du.x[1] dx[1] = p[1] * x[1] - p[2]...

MWE: ```julia using OrdinaryDiffEq, Zygote using DiffEqSensitivity, Test, ForwardDiff p = rand(3) function dudt(u, p, t) u .* p end function loss(p) prob = ODEProblem(dudt, [3.0, 2.0, 1.0], (0.0, 1.0),...

upstream

This was found in #553. See the comment https://github.com/SciML/DiffEqSensitivity.jl/pull/553#discussion_r900298762. MWE: ```julia using OrdinaryDiffEq, Zygote using DiffEqSensitivity, Test, ForwardDiff abstol = 1e-12 reltol = 1e-12 savingtimes = 0.5 # test the...

tangent/forward: https://arxiv.org/abs/2009.00595 adjoint/backward: https://arxiv.org/abs/2111.07692 related issue: https://github.com/SciML/DiffEqSensitivity.jl/issues/102

`NILSAS` is currently hardcoded to `BacksolveAdjoint(autojacvec=ReverseDiffVJP())` it should be relatively straightforward to support `InterpolatingAdjoint` or `QuadratureAdjoint` and an automated `autojacvec` selection. Supporting different `sensealg`s will require similar generalizations as in...

To deal with, e.g., non-diagonal noise processes, we have the `_jacNoise!` functions: https://github.com/SciML/DiffEqSensitivity.jl/blob/7ac2c4a53c713d86360dd6532482b934f991ac06/src/derivative_wrappers.jl#L634 An `EnzymeVJP` version is currently missing.

related to #484 . See also https://github.com/SciML/DiffEqFlux.jl/pull/613 and https://github.com/SciML/DiffEqSensitivity.jl/pull/474 . The loss gradients are off when `saveat::Number` is used but the time evolution is terminated by a callback.

2 times the standard correction term from Stratonovich to Ito must be added to the drift function to ensure that we get the proper backwards evolution in the Ito sense.

When the noise is purely additive, it follows that `dsigma/dx = 0` . For (purely) multiplicative noises, i.e., `du = const. * u ` , it will be a constant....