1 #ifndef CPPAD_CG_HESSIAN_WITH_LOOPS_INFO_INCLUDED 2 #define CPPAD_CG_HESSIAN_WITH_LOOPS_INFO_INCLUDED 24 class HessianWithLoopsEquationGroupInfo {
26 std::vector<std::set<size_t> > evalHessSparsity;
28 std::map<pairss, std::vector<HessianElement> > indexedIndexedPositions;
30 std::map<pairss, std::vector<HessianElement> > indexedNonIndexedPositions;
32 std::map<pairss, std::vector<HessianElement> > indexedTempPositions;
34 std::map<pairss, std::vector<HessianElement> > nonIndexedIndexedPositions;
36 std::map<pairss, std::vector<HessianElement> > tempIndexedPositions;
38 std::map<pairss, std::set<size_t> > indexedTempEvals;
40 std::set<pairss> nonIndexedNonIndexedEvals;
42 std::map<pairss, std::set<size_t> > nonIndexedTempEvals;
44 std::map<pairss, std::set<size_t> > tempNonIndexedEvals;
46 std::map<pairss, std::map<size_t, std::set<size_t> > > tempTempEvals;
50 std::map<size_t, std::map<size_t, CG<Base> > >
hess;
66 std::vector<std::set<size_t> > evalJacSparsity;
68 std::vector<HessianWithLoopsEquationGroupInfo<Base> > equationGroups;
70 std::map<pairss, size_t> nonIndexedNonIndexedPosition;
72 std::map<pairss, std::set<size_t> > nonLoopNonIndexedNonIndexed;
77 std::vector<CG<Base> > x;
78 std::vector<CG<Base> > w;
82 std::vector<std::map<size_t, CG<Base> > >
dyiDzk;
83 std::vector<std::set<size_t> > noLoopEvalHessTempsSparsity;
84 std::map<size_t, std::map<size_t, CG<Base> > > dzDxx;
87 std::vector<IfElseInfo<Base> > ifElses;
93 iterationIndexOp(nullptr) {
103 iterationIndexOp(
nullptr) {
120 vw[0].resize(w.size());
124 size_t nEqGroups = equationGroups.size();
126 for (
size_t g = 0; g < nEqGroups; g++) {
131 for (
size_t i = 0; i < w.size(); i++) {
135 for (
size_t itI : group.
tapeI) {
139 generateLoopForJacHes(fun, x, vw, y,
140 model->getJacobianSparsity(),
143 model->getHessianSparsity(),
144 equationGroups[g].evalHessSparsity,
149 equationGroups[g].hess = vhess[0];
void evalLoopModelJacobianHessian(bool individualColoring)
std::map< size_t, std::map< size_t, CG< Base > > > hess
size_t getTapeDependentCount() const
std::vector< std::map< size_t, CG< Base > > > dyiDzk
ADFun< CGB > & getTape() const
const std::vector< IterEquationGroup< Base > > & getEquationsGroups() const
std::set< size_t > tapeI
equations indexes in tape of the loop model
size_t getTapeIndependentCount() const