Index: branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs
===================================================================
--- branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs	(revision 16215)
+++ branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs	(revision 16222)
@@ -609,4 +609,43 @@
 
     #region interpretation
+
+    // the following uses auto-diff to calculate the gradient w.r.t. the parameters forward in time.
+    // this is basically the method described in Gronwall T. Note on the derivatives with respect to a parameter of the solutions of a system of differential equations. Ann. Math. 1919;20:292–296.
+
+    // a comparison of three potential calculation methods for the gradient is given in:
+    // Sengupta, B., Friston, K. J., & Penny, W. D. (2014). Efficient gradient computation for dynamical models. Neuroimage, 98(100), 521–527. http://doi.org/10.1016/j.neuroimage.2014.04.040
+    // "Our comparison establishes that the adjoint method is computationally more efficient for numerical estimation of parametric gradients
+    // for state-space models — both linear and non-linear, as in the case of a dynamical causal model (DCM)"
+
+    // for a solver with the necessary features see: https://computation.llnl.gov/projects/sundials/cvodes
+    /*
+     * SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic Equation Solvers
+     * CVODES
+     * CVODES is a solver for stiff and nonstiff ODE systems (initial value problem) given in explicit 
+     * form y’ = f(t,y,p) with sensitivity analysis capabilities (both forward and adjoint modes). CVODES
+     * is a superset of CVODE and hence all options available to CVODE (with the exception of the FCVODE 
+     * interface module) are also available for CVODES. Both integration methods (Adams-Moulton and BDF) 
+     * and the corresponding nonlinear iteration methods, as well as all linear solver and preconditioner
+     * modules, are available for the integration of the original ODEs, the sensitivity systems, or the 
+     * adjoint system. Depending on the number of model parameters and the number of functional outputs, 
+     * one of two sensitivity methods is more appropriate. The forward sensitivity analysis (FSA) method 
+     * is mostly suitable when the gradients of many outputs (for example the entire solution vector) with 
+     * respect to relatively few parameters are needed. In this approach, the model is differentiated with 
+     * respect to each parameter in turn to yield an additional system of the same size as the original 
+     * one, the result of which is the solution sensitivity. The gradient of any output function depending
+     * on the solution can then be directly obtained from these sensitivities by applying the chain rule
+     * of differentiation. The adjoint sensitivity analysis (ASA) method is more practical than the 
+     * forward approach when the number of parameters is large and the gradients of only few output 
+     * functionals are needed. In this approach, the solution sensitivities need not be computed 
+     * explicitly. Instead, for each output functional of interest, an additional system, adjoint to the 
+     * original one, is formed and solved. The solution of the adjoint system can then be used to evaluate
+     * the gradient of the output functional with respect to any set of model parameters. The FSA module 
+     * in CVODES implements a simultaneous corrector method as well as two flavors of staggered corrector
+     * methods–for the case when sensitivity right hand sides are generated all at once or separated for
+     * each model parameter. The ASA module provides the infrastructure required for the backward 
+     * integration in time of systems of differential equations dependent on the solution of the original
+     * ODEs. It employs a checkpointing scheme for efficient interpolation of forward solutions during the
+     * backward integration.
+     */
     private static IEnumerable<Tuple<double, Vector>[]> Integrate(
       ISymbolicExpressionTree[] trees, IDataset dataset, string[] inputVariables, string[] targetVariables, string[] latentVariables, IEnumerable<IntRange> episodes,
