Prev Next Index-> contents reference index search external Up-> CppAD ADFun sparsity_pattern rev_jac_sparsity CppAD-> Install Introduction AD ADFun preprocessor multi_thread utility ipopt_solve Example speed Appendix ADFun-> record_adfun drivers Forward Reverse sparsity_pattern sparse_derivative optimize abs_normal FunCheck check_for_nan sparsity_pattern-> for_jac_sparsity ForSparseJac rev_jac_sparsity RevSparseJac rev_hes_sparsity RevSparseHes for_hes_sparsity ForSparseHes dependency.cpp rc_sparsity.cpp subgraph_sparsity rev_jac_sparsity-> rev_jac_sparsity.cpp Headings-> Syntax Purpose x SizeVector f pattern_in transpose dependency internal_bool pattern_out Sparsity for Entire Jacobian Example

Reverse Mode Jacobian Sparsity Patterns

Syntax
f.rev_jac_sparsity(      pattern_in, transpose, dependency, internal_bool, pattern_out )

Purpose
We use $F : \B{R}^n \rightarrow \B{R}^m$ to denote the AD function corresponding to the operation sequence stored in f . Fix $R \in \B{R}^{\ell \times m}$ and define the function $$J(x) = R * F^{(1)} ( x )$$ Given the sparsity pattern for $R$, rev_jac_sparsity computes a sparsity pattern for $J(x)$.

x
Note that the sparsity pattern $J(x)$ corresponds to the operation sequence stored in f and does not depend on the argument x . (The operation sequence may contain CondExp and VecAD operations.)

SizeVector
The type SizeVector is a SimpleVector class with elements of type size_t.

f
The object f has prototype       ADFun<Base> f 
pattern_in
The argument pattern_in has prototype       const sparse_rc<SizeVector>& pattern_in  see sparse_rc . If transpose it is false (true), pattern_in is a sparsity pattern for $R$ ($R^\R{T}$).

transpose
This argument has prototype       bool transpose  See pattern_in above and pattern_out below.

dependency
This argument has prototype       bool dependency  see pattern_out below.

internal_bool
If this is true, calculations are done with sets represented by a vector of boolean values. Otherwise, a vector of sets of integers is used.

pattern_out
This argument has prototype       sparse_rc<SizeVector>& pattern_out  This input value of pattern_out does not matter. If transpose it is false (true), upon return pattern_out is a sparsity pattern for $J(x)$ ($J(x)^\R{T}$). If dependency is true, pattern_out is a dependency pattern instead of sparsity pattern.

Sparsity for Entire Jacobian
Suppose that $R$ is the $m \times m$ identity matrix. In this case, pattern_out is a sparsity pattern for $F^{(1)} ( x )$ ( $F^{(1)} (x)^\R{T}$ ) if transpose is false (true).

Example
The file rev_jac_sparsity.cpp contains an example and test of this operation. It returns true if it succeeds and false otherwise.